Compare commits
	
		
			6 commits
		
	
	
		
			294226cfcb
			...
			26dc35e0d0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 26dc35e0d0 | |||
| f95940c387 | |||
| 588d88a0b2 | |||
| 1d15db8aa5 | |||
| 2688e4e339 | |||
| 69760a802d | 
					 12 changed files with 182 additions and 1 deletions
				
			
		
							
								
								
									
										18
									
								
								content/blog/2025/i-am-an-ai-hater.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								content/blog/2025/i-am-an-ai-hater.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
							
								
								
									
										32
									
								
								content/blog/2025/student-again.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								content/blog/2025/student-again.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
							
								
								
									
										12
									
								
								content/photos/2025/laits-go/index.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								content/photos/2025/laits-go/index.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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". | ||||
							
								
								
									
										
											BIN
										
									
								
								content/photos/2025/laits-go/laits-go.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								content/photos/2025/laits-go/laits-go.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								content/photos/2025/lake-louise/index.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								content/photos/2025/lake-louise/index.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
							
								
								
									
										
											BIN
										
									
								
								content/photos/2025/lake-louise/lake-louise.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								content/photos/2025/lake-louise/lake-louise.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								content/photos/2025/lake-louise/thumbnail.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								content/photos/2025/lake-louise/thumbnail.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								content/photos/2025/mushrooms/index.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								content/photos/2025/mushrooms/index.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -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. | ||||
							
								
								
									
										
											BIN
										
									
								
								content/photos/2025/mushrooms/mushrooms.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								content/photos/2025/mushrooms/mushrooms.jpg
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										72
									
								
								scripts/erynwells_me/deployment.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								scripts/erynwells_me/deployment.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| #!/usr/bin/env python3 | ||||
| # Eryn Wells <eryn@erynwells.me> | ||||
| 
 | ||||
| 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() | ||||
|  | @ -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() | ||||
|  |  | |||
|  | @ -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(), | ||||
| ] | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue