Back in the last millennium, my website was pretty basic, as most were. To be honest, I don’t even really remember what was there beyond some links to projects and other sites. In June 2000, I joined LiveJournal and began a decade or so of being clinically online and posting. In the back half of the ’00s, I started to get more of a life and posted less frequently. By 2010, after 10 years, I decided LJ was quickly becoming an abandoned alleyway on the internet and moved to self-hosted Wordpress.
This seemed like a good idea at the time, and as I met needs for additional sites (the film club and radio show as examples), I continued to turn to Wordpress as the tool of choice. But in the past few years, it seems like a massive amount of software to support a handful of sites that get nearly no (legitimate) traffic and are updated, at most, once a week.
Replacing Wordpress with a statically generated site had been on my radar for awhile now. The complexity of Wordpress, combined with keeping it updated, maintaining a database, redis, etc, all was massive overkill, with little upside. And since I was laid off a few weeks ago and have some newfound time on my hands (hire me!), it seemed like the time had finally arrived.
I decided on using Hugo to statically generate these sites. I can’t say that I engaged in a thorough amount of due diligence before choosing it, but it seemed popular and I’m not looking for something niche.
I poked around for migration tools and settled on wp2hugo. For several of my blogs, it just worked. But, for example, the radio show blog was using Mixcloud embeds, so I had to hack on wp2hugo to make sure it was extracting the Mixcloud links and sticking a hugo shortcode for them into the posts.
Another blog I had used PowerPress podcast plugin for Wordpress… This was trickier to figure out, since the set of people that use Wordpress, use PowerPress, and want to migrate to Hugo can’t be that wide. Unsurprisingly, wp2hugo didn’t support it at all, and I really dreaded hacking support into wp2hugo for something I would only need once. Did I mention I don’t really know Go at all?
I decided to be like all the cool kids and use Cursor to see if their coding agent could help me get closer to the finish line. I opened the wp2hugo repo in Cursor, and my first idea was to ask it “where is wordpress postmeta handled”. It “went away” for awhile and came back with a nice report for me.
WordPress Postmeta Handling in wp2hugo
WordPress postmeta is primarily handled in the src/wp2hugo/internal/wpparser/wp_parser_setup.go file. Here’s how it works:
1. Main Postmeta Processing Functions
The codebase currently handles postmeta through two specific functions:
getFootnotes() function (lines 640-680):
funcgetFootnotes(item*rss.Item) []Footnote {
if len(item.Extensions["wp"]["postmeta"]) ==0 {
returnnil }
[…]
I then fed it the Wordpress XML for a single post, and it reported “What’s Missing for Your Use Case: Your podcast posts contain important metadata that would be valuable to preserve”. Correct, robot!
Looking at your WordPress export XML, I can see that your blog posts contain several postmeta entries that are currently not handled by wp2hugo. Let me analyze what’s in your export and what’s currently supported:
Your WordPress Postmeta Entries
Your export contains these postmeta keys:
_g_feedback_shortcode_419e419ecf775a20ef20956a5c1fbb37cc16376a - Contact form shortcode
_g_feedback_shortcode_atts_419e419ecf775a20ef20956a5c1fbb37cc16376a - Contact form attributes (PHP serialized array)
[…]
Recommendation
Since your posts are podcast episodes with important audio metadata, you might want to:
Fork wp2hugo and add podcast metadata support
Create a custom Hugo shortcode to handle podcast episodes
Use Hugo’s data files to store podcast metadata separately
Consider using a Hugo podcast theme that’s designed for this content type
The current wp2hugo implementation would miss all your podcast-specific metadata, which would be a significant loss for a podcast site.
[…]
I then asked “can you implement this?”. The agent went off for awhile, making changes, and to my astonishment when I came back from fixing a drink a few minutes later, it was done, and it actually worked! It kind of “made up” the output format, adding a bunch of frontmatter to the hugo posts, but being that
There doesn’t seem to be a “standard” for podcasts in hugo
I didn’t actually specify output at all in my 4 word request to the agent
I was definitely impressed. Every piece of metadata I needed was parsed and put into the Hugo markdown files, I just needed to do a bit of refining on the output formatting. I did some of that the old fashioned way, and others I engaged the agent for, but this was all home stretch stuff as I could look at the git diffs and quickly figure out what I needed to do to massage the output.
I know that there remains all kinds of controversy around LLMs, but being able to solve this one-time need in less than an hour without knowing wp2hugo nor Go much at all was pretty nifty. There is not a doubt in my mind I could have solved this problem, but having a robot intern I could turn to do it for me was also real nice. And there is no reality it would have taken an hour if I was reading the source code and the golang manual myself.
I do want to learn Go, as it seems like a nice, useful language that is turning up in more places, but I also wanted to solve this immediate problem without consuming several days in the endeavor.
Once all that was handled, I had to figure out how I wanted to deploy the sites, and since I already have my own Gitea server, I decided to host the repos for the blog sources there and then use Gitea Actions to publish them. Gitea Actions are mostly compatible with Github actions, so I was able to leverage my existing knowledge there…
I put this migration off for the better part of a year, and all it took was unemployment to knock it out in a few days…
2024 sucked in so many different ways. On the other hand, it was a really good year for movies, especially non-franchise films! THE SUBSTANCE blew my doors off, STRANGE DARLING was excellent, and the experimental ENO doc was wild.
This was the first year since pre-Quarantine that I broke 140 features, and I’m fairly certain that is because there was simply more interesting things to see.
In 2023, I saw 77 films in a theatre and this year I saw 71. While that’s down a bit, I also wasn’t able to attend IFFBoston’s Fall Focus so it makes sense.
I continue to watch more new (to me) films year-over-year. I think I’m finding less reason to fall back on comfort movies. I’m not expecting this to hold in 2025.
You can find the charts for 2024 here. Once you are there you can use the filter controls at the top to slice and dice the data as you see fit.
(If you are interested in the technical guts of these graphs, you can find the source code here)
It was a good year for movies…. I’m not sure if the excitement of Barbenheimer will be reproduced again, or have any longer-lasting effects on the theater-going public, but I saw a bunch of really good movies (and there are some very well-regarded ones I haven’t had the chance to see yet!)
2022 was the year we pretended to return to normal. I saw a relatively “normal” number of movies to my pre-pandemic state, and quite a bit more of them in the theatre compared to 2021. But we remained on the anxious edge of outbreak. I think I expected a clearer line as to when reengaging with civilization would safe, but in retrospect that was naive.
I think we all hoped 2021 would improve upon 2020, and to a certain degree
it did, but not to the level I think we all hoped.
I did see more movies in 2021 versus 2020, my feature count ticked way up to
121 from 97. This is still behind my normal pace from the before times, but
I was able to muster more attention this year. 121 seems like a pretty
solid number despite the rare theatre experience this year. Hopefully
IFFBoston’s spring festival and the film club can return to something more
normal in 2022.
I mean, what is there to say about 2020. It was a real shit year.
When the quarantimes began, I thought I would end up watching a ton of movies, but the opposite occurred. I’m not sure if it was general anxiety/malaise, the lack of the film club/iff forcing functions, or something else, but it just wasn’t happening. The pace seems to be picking up in 2021, but we’ll see how it goes. If I’m able to go to a theatre safely/comfortably in the near future that will certainly change things.
A few years back I cancelled my RCN Cable TV service in favor of Youtube TV. I realized that since all I really was keeping cable around for at this point was to watch Baseball, I could save a ton of money by switching to Youtube TV while also upgrading my RCN Internet service to “Gigabit” (not actually Gigabit. Also has complete garbage 25Mbps upstream which is indefensible). At the time I was paying about \$165/mo to RCN for 330Mbps Internet and Cable TV. Youtube TV was \$40/mo, and also allowed me to ‘pause’ service for months at a time (aka the Baseball off-season) with a click. RCN “Gigabit” service was around \$100/mo. So not only would my in-season monthly rate be lower (~\$140/mo), but i’d save even more in the off-season.
But, every few months, Youtube TV would raise their prices, with the most recent hike bringing the cost up to \$65/mo. The final straw, however, was that they dropped NESN in this off-season. Now my hand was forced. After the season ended I cancelled Youtube TV with the plan of reaching back out to RCN.
Since baseball was quiet and I was not in a rush, every once in awhile I’d call the RCN support number to get a quote, but the wait times were over 30m each time I tried, so I’d hang up. Yesterday, however, I wondered to myself if they had some kind of chat support. They did, I clicked it, and it turns out their chat support was Apple Messages Business Chat. This was both surprising, as I’ve never seen this work with anyone outside of Apple, and exciting because the usual chat support experience was terrible. But this would more or less work like any other text messaging.
That said, there was no way this was going to work.
But I tried anyway. I got a text telling me the wait was going to be about 15m, and confirming I wanted to wait. I clicked yes and went about my way. About 15m later I was told I was 5th in the queue and it would be a bit longer; I confirmed I wanted to wait and went back to dawdling.
After a total of about 20m I received my first actual message from the support rep. They first confirmed some account information, then asked me what I needed. I had already prepared my first message, where I tried to play Fast Food Chicken and try to answer every possible question in one blast:
I am interested in knowing how much it will cost per month to add Signature TV to my service, without modifying my current service. I do not want any cable boxes and instead just need a cablecard.
There was no way this was going to work.
But, to my surprise, the rep was mostly able to work off of that. They asked if I needed more than one CableCard, I replied that I needed a single, multi-stream CableCard, and they asked me to wait while they went away to figure everything out.
After a few minutes they came back with some numbers. My total bill would be roughly \$130/mo for the first 6 months, and then go up to roughly \$160/mo afterwards. This was acceptable, so I told them I’d like to sign up, but wanted to make sure they could simply mail me the CableCard as opposed to rolling a truck or requiring a pickup visit to the office, as I am trying to minimize contact with the outside world in the quarantimes.
They went away to check, and came back a minute or two later confirming that they could mail it on Monday. So I told them I wanted to move forward, we spent a few more minutes confirming shipping details and such. They did their usual pitch for their Service Agreement, but I was able to easily decline it (and the pitch is way less annoying over chat than it is over the telephone). But after that, I was done.
As has been the standard over the past few years, the number of features I saw in 2019 was a tick down, at 128 vs 132 in 2018. I had a particularly busy year in 2019, so this isn’t really a surprise for me.. I was on the road for nearly two of the twelve months this year, so I simply had less time for film.
I totaled 151 movies this year, but ‘only’ 132 features which was a tick down from the past few years. To be honest, Corinna and I binged all of the Star Wars films (except for Rogue One) within a few days at the end of the year, so that definitely goosed the stats up.
Last year I wondered if ~140 features a year was the ’new normal’, and it appears that is the case, as in 2017 I saw 147 features. That said, it felt like a really good year for cinema.