diff --git a/content/blog/2025/i-am-an-ai-hater.md b/content/blog/2025/i-am-an-ai-hater.md new file mode 100644 index 0000000..b7e3e14 --- /dev/null +++ b/content/blog/2025/i-am-an-ai-hater.md @@ -0,0 +1,18 @@ +--- +title: "I Am an AI Hater by Anthony Moser" +slug: link-i-am-an-ai-hater +date: 2025-08-28T08:36:59-06:00 +categories: links +tags: + - AI + - Tech +--- + +A [fierce argument][link] against AI by Anthony Moser. + +> But I am more than a critic: I am a hater. I am not here to make a careful +> comprehensive argument, because people have already done that. ... I am here +> to be rude, because this is a rude technology, and it deserves a rude +> response. + +[link]: https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html diff --git a/content/blog/2025/student-again.md b/content/blog/2025/student-again.md new file mode 100644 index 0000000..344b6d3 --- /dev/null +++ b/content/blog/2025/student-again.md @@ -0,0 +1,32 @@ +--- +title: "I'm a Student Again" +description: I started taking Japanese classes at CCSF. +slug: student-again +date: 2025-09-02 +tags: + - Life + - School + - japanese + - CCSF +--- + +I've been fortunate to take two trips to Japan over the last couple years. +Leading up to those trips, I picked up learning Japanese, attempting to build +some basic language skills for getting around. At first, I used [Duolingo][dja] +but recently switched to [Migaku][mja]. + +When I returned from our most recent trip, I decided to find a class so I can +practice speaking skills. [Community College of San Francisco][ccsf] has an +excellent program called "[Free City][fc]" that grants free tuition to residents +of the city. It also has [Japanese program][ccsfja]. So I enrolled in their +online Japanese 1A course. + +This is my first time taking formal classes since I graduated college. I'm +looking forward to learning in a more structured way again, and also getting a +chance to practice speaking with people rather than talking at my phone screen. + +[dja]: https://www.duolingo.com/course/ja/en/Learn-Japanese +[mja]: https://migaku.com/learn-japanese +[ccsf]: https://www.ccsf.edu +[ccsfja]: https://www.ccsf.edu/degrees-certificates/japanese +[fc]: https://www.ccsf.edu/free-city diff --git a/content/photos/2025/laits-go/index.md b/content/photos/2025/laits-go/index.md new file mode 100644 index 0000000..a9f75c5 --- /dev/null +++ b/content/photos/2025/laits-go/index.md @@ -0,0 +1,12 @@ +--- +title: "Lait's Go" +date: 2025-08-27T18:00:41-06:00 +tags: + - Travel + - Puns + - Milk +--- + +Spotted in a small café at the top of Sulphur Mountain in Banff, Alberta: a +delightful bilingual pun. In English, this milk is called "Milk 2 Go". In +French, it's called "Lait's Go". diff --git a/content/photos/2025/laits-go/laits-go.jpg b/content/photos/2025/laits-go/laits-go.jpg new file mode 100644 index 0000000..9800790 --- /dev/null +++ b/content/photos/2025/laits-go/laits-go.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:279144af6b160e6cfca33bdaa8eef58ea327c808e9c197160ee32eb89210bca6 +size 685432 diff --git a/content/photos/2025/lake-louise/index.md b/content/photos/2025/lake-louise/index.md new file mode 100644 index 0000000..9906a17 --- /dev/null +++ b/content/photos/2025/lake-louise/index.md @@ -0,0 +1,18 @@ +--- +title: "Lake Louise" +date: 2025-08-27T10:15:06-06:00 +draft: true +tags: + - Travel + - Nature + - Lake Louise + - Alberta + - Canada +--- + +Some friends and I had the chance to travel to [Lake Louise][] this summer. It's +stunningly blue -- unlike any body of water I've ever seen -- and surrounded by +picturesque mountains. We had only a few hours here so we did a short hike +around the lake, and then headed to Moraine Lake. + +[Lake Louise]: https://www.banfflakelouise.com diff --git a/content/photos/2025/lake-louise/lake-louise.jpg b/content/photos/2025/lake-louise/lake-louise.jpg new file mode 100644 index 0000000..03573af --- /dev/null +++ b/content/photos/2025/lake-louise/lake-louise.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44dc55905599aefd486145c8b34609979c65f9f18ab53e3489309806884c91e +size 1036892 diff --git a/content/photos/2025/lake-louise/thumbnail.jpg b/content/photos/2025/lake-louise/thumbnail.jpg new file mode 100644 index 0000000..31f917e --- /dev/null +++ b/content/photos/2025/lake-louise/thumbnail.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4af8c69dc4d56ec2e9b0bbc0692703ba6cc96afd23b9b38f9a2feaf9e0453f0 +size 224720 diff --git a/content/photos/2025/mushrooms/index.md b/content/photos/2025/mushrooms/index.md new file mode 100644 index 0000000..d2d92fa --- /dev/null +++ b/content/photos/2025/mushrooms/index.md @@ -0,0 +1,15 @@ +--- +title: "Mushrooms" +date: 2025-08-27T09:55:45-06:00 +draft: true +tags: + - Nature + - Mushrooms + - Fungi + - Lake Louise + - Alberta + - Canada +--- + +A small colony of mushrooms growing on a stump. Found at Lake Louise, Alberta, +Canada. diff --git a/content/photos/2025/mushrooms/mushrooms.jpg b/content/photos/2025/mushrooms/mushrooms.jpg new file mode 100644 index 0000000..73a0aaf --- /dev/null +++ b/content/photos/2025/mushrooms/mushrooms.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:136f13e4a42d4b00734a1beb03ff021867fd4f5715c1a5211467a18bf65aa296 +size 1869246 diff --git a/scripts/erynwells_me/deployment.py b/scripts/erynwells_me/deployment.py new file mode 100644 index 0000000..2cc4671 --- /dev/null +++ b/scripts/erynwells_me/deployment.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +# Eryn Wells + +import argparse +import datetime +import subprocess +from typing import List +from .scripting import Command + + +DATE_FORMAT = "%Y-%m-%d" + + +class DeploymentCommand(Command): + @property + def help(self) -> str: + return 'Deployment tools' + + def add_arguments(self, parser: argparse.ArgumentParser): + commands = parser.add_subparsers(title="Deployment", required=True) + + deployment_command = commands.add_parser( + 'next-tag', + help='Calculate the next deployment tag for a given date, examining all other tags for that day' + ) + deployment_command.add_argument( + '--date', '-d', + type=self.__class__.parse_date_argument, + default=datetime.date.today(), + help="date to calculate a new deployment tag for (default: today)" + ) + deployment_command.set_defaults(handler=self.handle_next_deployment_tag_command) + + @staticmethod + def parse_date_argument(date_string: str) -> datetime.date: + return datetime.datetime.strptime(date_string, DATE_FORMAT).date() + + def handle_next_deployment_tag_command(self, args: argparse.Namespace): + next_deployment_tag = deployment_tag_for_date(args.date) + print(next_deployment_tag) + +def deployment_tag_for_date(date: datetime.date) -> str: + formatted_date = date.strftime(DATE_FORMAT) + + def deploy_tag_filter(tag): + return tag.startswith("deploy-") and formatted_date in tag + + filtered_tags = sorted(filter(deploy_tag_filter, git_tags())) + + if len(filtered_tags) == 0: + return f"deploy-{formatted_date}-01" + else: + last_tag = filtered_tags[-1] + components = last_tag.split("-") + if len(components) == 5: + # A previous numbered deployment. Add one to the last deployment + # number. + deployment_number = int(components[-1]) + 1 + return f"deploy-{formatted_date}-{deployment_number:02}" + else: + # An old style deployment tag that doesn't have a number. There + # should only ever be one of these. + assert len(filtered_tags) == 1 + return f"deploy-{formatted_date}-02" + + +def git_tags() -> List[str]: + return subprocess.check_output( + "git tag -l", + shell=True, + encoding="utf-8" + ).splitlines() diff --git a/scripts/erynwells_me/scripting/command.py b/scripts/erynwells_me/scripting/command.py index 8014cb5..3e43e39 100644 --- a/scripts/erynwells_me/scripting/command.py +++ b/scripts/erynwells_me/scripting/command.py @@ -20,5 +20,5 @@ class Command: def help(self) -> str: return '' - def add_arguments(self, _: argparse.ArgumentParser): + def add_arguments(self, parser: argparse.ArgumentParser): raise NotImplementedError() diff --git a/scripts/website b/scripts/website index 958d748..356a985 100755 --- a/scripts/website +++ b/scripts/website @@ -9,10 +9,12 @@ import argparse from typing import List from erynwells_me.scripting import Command from erynwells_me.weeknotes import WeeknotesCommand +from erynwells_me.deployment import DeploymentCommand COMMANDS: List[Command] = [ WeeknotesCommand(), + DeploymentCommand(), ]