Compare commits
6 commits
main
...
twitter-ar
Author | SHA1 | Date | |
---|---|---|---|
c6501564f6 | |||
f3da1087e3 | |||
90c2ba8787 | |||
e8899a6ead | |||
74c796d5cd | |||
90806aa8f6 |
24 changed files with 89 additions and 198 deletions
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
slug: link-{{ .Name }}
|
||||
date: {{ .Date }}
|
||||
categories: links
|
||||
draft: true
|
||||
tags: []
|
||||
---
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
blog: blog/:year/:month/:slug/
|
||||
photos: photos/:year/:month/:slug/
|
||||
tweets: tweets/:year/:month/:slug/
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
---
|
||||
title: "Pajaro Dunes"
|
||||
date: 2023-05-30T08:31:34-07:00
|
||||
tags: [Travel, Beaches, Tess, EJ, Vacations]
|
||||
categories: Travel
|
||||
tags: [Beaches, Tess, EJ, Vacations]
|
||||
---
|
||||
|
||||
{{< tess >}}, EJ, and I took a weekend trip down the coast over Memorial Day
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
---
|
||||
title: "America Tips Into Fascism by Garrett Graff"
|
||||
title: "Link: America Tips Into Fascism"
|
||||
slug: america-tips-into-fascism
|
||||
date: 2025-08-25T22:31:15-06:00
|
||||
categories: Links
|
||||
tags:
|
||||
- Politics
|
||||
- USA
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
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
|
|
@ -1,8 +1,7 @@
|
|||
---
|
||||
title: "Rings by ND Stevenson"
|
||||
title: "Link: Rings by ND Stevenson"
|
||||
slug: ndstevenson-rings
|
||||
date: 2025-08-28T07:43:45-06:00
|
||||
categories: Links
|
||||
tags:
|
||||
- Comics
|
||||
- LGBTQIA+
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
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
|
|
@ -2,7 +2,8 @@
|
|||
title: "Sunset over Pajaro Dunes"
|
||||
linkTitle: Pajaro Sunset
|
||||
date: 2023-05-28T20:12:13-07:00
|
||||
tags: [Travel, Beaches]
|
||||
categories: Travel
|
||||
tags: ["Beaches"]
|
||||
---
|
||||
|
||||
{{< tess >}}, EJ, and I took a little weekend trip over Memorial Day this year
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
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)
BIN
content/photos/2025/laits-go/laits-go.jpg
(Stored with Git LFS)
Binary file not shown.
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
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)
BIN
content/photos/2025/lake-louise/lake-louise.jpg
(Stored with Git LFS)
Binary file not shown.
BIN
content/photos/2025/lake-louise/thumbnail.jpg
(Stored with Git LFS)
BIN
content/photos/2025/lake-louise/thumbnail.jpg
(Stored with Git LFS)
Binary file not shown.
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
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)
BIN
content/photos/2025/mushrooms/mushrooms.jpg
(Stored with Git LFS)
Binary file not shown.
42
content/tweets/_content.gotmpl.tmp
Normal file
42
content/tweets/_content.gotmpl.tmp
Normal file
|
@ -0,0 +1,42 @@
|
|||
{{/* vim: ft=gohtmltmpl: */}}
|
||||
|
||||
{{ $tweets := slice }}
|
||||
{{ with resources.Get "twitter/tweets.json" }}
|
||||
{{ with . | transform.Unmarshal }}
|
||||
{{ $tweets = . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ range $tweets }}
|
||||
{{ $tweet := .tweet }}
|
||||
|
||||
{{
|
||||
$content := dict
|
||||
"mediaType" "text/markdown"
|
||||
"value" (partial "twitter/assembleTweetMarkdown.html" $tweet)
|
||||
}}
|
||||
|
||||
{{ $creationDate := partial "twitter/parseCreatedAtDate.html" $tweet.created_at }}
|
||||
{{ $title := printf "Tweet on %s" (time.Format "2 January 2005" $creationDate) }}
|
||||
{{ $path := printf "%s/%s" $creationDate.Year $tweet.id_str }}
|
||||
|
||||
{{ $dates := dict "date" $creationDate }}
|
||||
|
||||
{{
|
||||
$params := dict
|
||||
"favoriteCount" $tweet.favorite_count
|
||||
"retweetCount" $tweet.retweet_count
|
||||
}}
|
||||
|
||||
{{
|
||||
$page := dict
|
||||
"title" $title
|
||||
"dates" $dates
|
||||
"content" $content
|
||||
"kind" "page"
|
||||
"params" $params
|
||||
"path" $path
|
||||
}}
|
||||
|
||||
{{ $.AddPage $page }}
|
||||
{{ end }}
|
3
content/tweets/_index.md
Normal file
3
content/tweets/_index.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
title: Tweets
|
||||
---
|
|
@ -11,3 +11,6 @@ nethackScore: Score
|
|||
nethackDungeonLevel: Dungeon Level
|
||||
nethackCharacterLevel: Character Level
|
||||
nethackHP: HP
|
||||
|
||||
favorites: Favorites
|
||||
retweets: Retweets
|
||||
|
|
14
layouts/tweets/list.html
Normal file
14
layouts/tweets/list.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
{{ define "main" }}
|
||||
<main class="main--list">
|
||||
<header class="page-header">
|
||||
{{ partial "page_header.html" (dict "page" .) }}
|
||||
</header>
|
||||
|
||||
{{ $paginator := .Paginate .Pages.ByPublishDate.Reverse 100 }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ .Render "page_summary" }}
|
||||
{{ end }}
|
||||
|
||||
{{ partial "pagination.html" . }}
|
||||
</main>
|
||||
{{ end }}
|
18
layouts/tweets/page_summary.html
Normal file
18
layouts/tweets/page_summary.html
Normal file
|
@ -0,0 +1,18 @@
|
|||
<article class="page-summary">
|
||||
{{ .Content }}
|
||||
|
||||
{{- if .Date -}}
|
||||
{{/* TODO: Include time in this date */}}
|
||||
{{- partial "page/date.html" (dict "page" . "style" "datetime") -}}
|
||||
{{- end }}
|
||||
|
||||
<div class="tag" data-name="favorites">
|
||||
<span class="tag__name">{{ T "favorites" }}</span>
|
||||
<span class="tag__value">{{ .Params.favoriteCount }}</span>
|
||||
</div>
|
||||
|
||||
<div class="tag" data-name="retweets">
|
||||
<span class="tag__name">{{ T "retweets" }}</span>
|
||||
<span class="tag__value">{{ .Params.retweetCount }}</span>
|
||||
</div>
|
||||
</article>
|
|
@ -1,72 +0,0 @@
|
|||
#!/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, parser: argparse.ArgumentParser):
|
||||
def add_arguments(self, _: argparse.ArgumentParser):
|
||||
raise NotImplementedError()
|
||||
|
|
|
@ -9,12 +9,10 @@ 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(),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit d158b0db8ebaaad35c5ed7fea31db7bee930eb03
|
||||
Subproject commit 4c101a552eb10ed87a5bec5bee741e65aa80daec
|
Loading…
Add table
Add a link
Reference in a new issue