Terminal Control
Wot I Did 2025 - A Breakdown
2026/01/03
Here we are once again, it's that time of year. That is to say the end of it. Or rather the beginning of it considering when this post will be published. I hope you have had a good year, because mine has certainly been interesting.
Life
The lead up to 2025 was admittedly not spectacular for myself. I had made the transatlantic trip to visit my grandparents who have been getting up there in years, and I was rewarded by being given a bout of food poisoning. Since, at the time, we didn't know if it was some sort of virus or not I had to spend Christmas stuck in an AirBnB in the hopes of not making my Grandparents sick. However, once back from Canada I was able to ring in the new year with friends, DJ'ing and watching movies getting shitfaced which was lovely.
The first three months were fairly eventful, between entering the second year at my job and planning and performing some excellent deception for a stag in Cyprus and then getting to feel all fancy for a wedding. It was all rather lovely. I was able to visit some new places this year, going to Bristol to some friends new place and exploring a bit of Europe before and after a music festival by visiting Greece, Albania and Montenegro for the first time!
In summer, I prepared for moving out of my place in London to go to Tokyo where I have been living these past six months. While it has been an exciting time working and wazzing myself around these Japan hinterlands, I am unfortunately about to make the journey back to the U.K. currently unsure on what I'm going to do next.
Bummer.
Anyway, lets talk about all the media I consumed.
Wot I Read/Watched/Played
For the second year now, I have used an app called Sofa to track the video games I played, the Movies/Television shows I watched and the books that I have read. My plan initially was to try and keep the website updated month by month, but that fell by the wayside. Partially this was because of how long it takes to generate this site and write all the reviews.
I decided that in order to reduce the friction I would spend a lot of time improving the tooling around creating the site so hopefully that sorting reviews out for this year would be faster. If you’re interested keep on reading, otherwise you can skip to the section Wot I Read - Breakdown instead.
The Process
My sites are all statically generated, so this blog post and my wot I did sites are backed by a simple Go program that I wrote that basically ingests a bunch of meta information and then using Go template files generates the final site. Fairly simple stuff in the grand scheme of things, and the program was mainly written to learn more about Go templating and to allow a great deal of customisation for my very specific use cases. I am also a big fan of very simple sites, and so I didn't want to deal with the overhead of other static site generators, and hey, I figured I could maybe learn a thing or two as well!
The process to generating a site for the year would go a little like this; First I would create a JSON file to represent the year, this file would be a meta file that would include locations to the screenshot used on the page, the location of the text file for the review and my rating (best, good, average, bad). I would need an entry for everything I had read or watched (depending on the site) and would need to create all the backing text files for the reviews. Having the reviews outside the json file just made things a lot easier to edit for both the reviews themselves and the meta information of the reviews. I would then need to write a review for every entry in the list, which was fairly laborious as I would need to remember what I thought of the piece of media (keep in mind I'm doing all this over the span of a couple of days) and then I would need to source an image to use for the site and also edit the image to reduce it's size and have it in a resolution that conformed to the requirements of the website.
Some of these tasks are fairly menial, creating ever text file and downloading every screenshot, editing those screenshots, moving them to the correct folder and then linking them in the JSON file, were the biggest friction spots. I decided I needed to eliminate these friction points to speed things up, but I also wanted to add some new features to the site.
The New
I decided that for the Wot I Watched site since my list was backed by an app called Sofa, which I could export the database out of the CSV file, that it might be nice to track the category of media that I had watched (Movie or TV Show). I also wanted to add a ranking to each piece of media relative to the other pieces of media that I had watched that year. I also decided to finally create a blog site where I could post some charts about what I watched compared to last year. All this meant I needed to improve the tools available to me.
The Improved
Originally my site generator (cleverly called Site Generator) was a simple program that when run would just build all the sites to an output directory and that was that. So instead I decided to convert it into a CLI application using the Cobra library available for Go. This makes it fairly easy to add subcommands and flags when running the application. That way I could build in a bunch of utility commands to help speed up the making of site instead of the tool only working on the generation of the site.
The CLI was subdivided by the site, so to run the command you would do something like:
site-generator wotidid [site/action]
So to generate the site you could do:
site-generator wotidid wotiread
And presto, you have a new build of the wotiread site. I also added a subcommand called “json” which you could use and provide a CSV file as input and what year you want to filter on and it would create the backing JSON file as well as create the folders and text files that store the reviews.
Excellent! Now we need two utility commands that will allow us to set the ratings of a piece of media and the ranking of a piece of media. The rating command is very simple in that it just loops through everything in the JSON file and checks to see if a rating has been set yet. If it hasn’t then it presents the name and gives a numerical choice of 1 = best, 2 = good, etc… that you can input to set the rating. Once all the ratings have been set, the JSON file is updated. Ranking is slightly similar in that it loops through all the media to check if a ranking is set. For any media that a rank has been set then the terminal will present a list ordered by the media rank and a number next to it. From here you will see what piece of media you are ranking and then enter a number to correspond where on the list you wish to position it. We keep doing this until all media has a rank.
Excellent, so we have made rating and ranking easier to process, now we need to figure out images.
A Picture Is Worth A Thousand Lines Of Code
Perhaps the most onerous process in all this. We need to download an image for the media that we source from moviestillsdb, edit the image to scale it down and set to the correct resolution, very time consuming!
Thankfully Go has a not bad built in image library that we can use to manipulate the image. For the sake of handling resizing we get the resize library for the sake of simplicity. We still need to manually download each image since there’s no API associated with moviestillsdb and we want to also carefully select which image we want to use. With the image downloaded we put all images into a folder. We have the command take an input folder flag and then define a preset for images in the wotiwatched and wotiread sites (since they have different requirements). We loop through the folder, scale the image down and then in some instances we have to crop the image depending on the aspect ratio of the source image. We opt to set the boundaries to the centre of the image and more often than not that seems to be fine. Once that’s done we open the image in a preview program and then accept or reject the image.
Finally, we need to rename all the images to be associated with their respective entries in the meta JSON file and move them. This will also be another subcommand called `move`. It checks to see if image already exists for a piece of media, if it doesn’t then it’s added to a numerical media list that then loops through the converted image folder and allows the user to associate an image to media by using the number next to the media in the list. Once selected the image is moved to the output folder and then we are done!
All in all this process took a lot of time to do, probably more than if I just did all this manually but hopefully this will save me some time in the future. I also spent some time just cleaning up the code a little and figuring out what design changes I wanted to do. So with all that out of the way, lets see wot I did this year.
A Note On Reviews
I spent a great deal of time writing the reviews this year. Can you tell? Probably not, because when I finished writing all the reviews I forgot about a piece of code I had written but failed to refactor away. You see in my hindsight, I had made the brilliant decision that the original generator would also generate empty review files if it couldn't find what it was looking for. This was fine until I accidentally screwed up the formatting of review locations in my JSON. This led to my refactored code pointing to the wrong folder and not finding the reviews, but legacy code pointing to the correct folder and creating new files. This ended up truncating all my reviews. I won't lie, I did want to cry a little, so I quickly wrote very quick reviews to replace the old ones. They're unfortunately short, but hopefully you get the gist.
Wot I Read - A Breakdown
Every year at Christmas I generally ask for books as gifts, going into 2025 I had quite a few books to get through so lets see how I did!
Oh dear. What happened here?
Reading of course is a very focused hobby, you kind of need to be focusing on what you’re reading versus movies or tv shows where you can have it on in the background and my side time for that sort of focus was down. Usually, if I’m travelling on my own I end up smashing through quite a lot of books, but this year I spent a lot of time travelling with others and generally my down time was spent socialising. When I was back in the UK I was spending a lot of my spare time preparing to move or learning a bit of Japanese. Then when I was in Japan, again I was spending free time learning Japanese but I did work to finish the book before the year was over.
The one book I read this year was The Savage Storm. An interesting book on the Italian campaign from the perspective of the military sides involved and the civilians caught in-between. It could be a bit dry at times, but was overall entertaining.
I think 2026 I will definitely beat this because I’m currently powering through Say Nothing, which has so far been excellent and I am reading the classic graphic novel From Hell. I imagine things will slow down when I get to my book on the making of the atomic bomb since it’s quite a tomb, so we will see how I get on this year.
Wot I Watched - A Breakdown
Alright, here we go. Lets have a look at some charts for this:
More Movies than TV Shows, which is generally not too surprising when you consider the time commitment required for TV. I actually thought I had watched a more equal number of shows. How does this compare to last year?
More was watched this year, which does feel a bit surprising. I feel like I had actually been slacking on my input, part of this could be because I don’t think I started tracking in 2024 from the beginning of the year which might explain the difference. What about the quality of things I have watched?
It looks like 2025 was a good year overall, there was over a four time increase in average movies, but that was maybe just because this year was very strong in my mind so I think anything that didn’t stand out got judged rather harshly. What was my most watched month?
Wow. January was crazy, I think this was probably because I spent a lot of time just smashing through movies at the beginning of the year. I was still far enough away from Japan to not need to really be focusing on the move and it was probably the month where I had the most free time before things started to ramp up with my free time getting eaten up. The rest of year seems fairly consistent.
Here are my movie rankings, I wouldn’t take this too seriously. It was fairly rapid fire and every time I would do it, I would end up with quite a different list so make of that what you will.
Movies
- Anatomy of a Fall
- Shall We Dance?
- Nosferatu
- Aftersun
- Challengers
- Fear and Loathing in Las Vegas
- Judgment at Nuremberg
- Black Bag
- In the Heat of the Night
- The Apprentice
- BlackBerry
- To Live and Die in L.A.
- True Romance
- Suzume
- All of Us Strangers
- KPop Demon Hunters
- Beyond the Infinite Two Minutes
- The Phoenician Scheme
- Eighth Grade
- Manhunter
- The Holdovers
- Twelve Monkeys
- When Harry Met Sally...
- The End of the Tour
- The Shawshank Redemption
- Warfare
- Lost in Translation
- We Live in Time
- TÁR
- The Taking of Pelham One Two Three
- The Taking of Pelham 1 2 3
- Moonrise Kingdom
- Godzilla Minus One
- About a Boy
- Jay Kelly
- Bridget Jones's Diary
- Royal Warriors
- The Lunchbox
- The Russia House
- Manchester by the Sea
- Navy Seals
- The Godfather Part III
- Fallen Angels
- Furiosa: A Mad Max Saga
- Interview with the Vampire
- Civil War
- Infernal Affairs
- Babel
- Filth
- The Lincoln Lawyer
- Hidden Agenda
- The Fast and the Furious
- Escape from Alcatraz
- Cape Fear
- Fallen Leaves
- Doubt
- Mickey 17
- Blue Velvet
- The Thomas Crown Affair
- Beetlejuice Beetlejuice
- Wallace & Gromit: Vengeance Most Fowl
- The Mule
- Midway
- Asteroid City
- Gladiator II
- American Fiction
- The Sentinel
- The Last Full Measure
- The Infiltrator
- The Batman
- She Said
- Roman J. Israel, Esq.
- Before the Devil Knows You're Dead
- The Family Man
- The English Patient
- Marshall
- Fracture
- John Q
- Jack Ryan: Shadow Recruit
- A House of Dynamite
- F1 The Movie
TV Shows
- The Studio
- Atlanta
- Shōgun
- Long Story Short
- Smiling Friends
- Delicious in Dungeon
- Frieren: Beyond Journey's End
- Pluribus (Season 1)
- Fargo (Season 5)
- Silo
- Manhattan
- Mr. & Mrs. Smith
- Slow Horses
- Generation Kill (Rewatch)
- Fullmetal Alchemist: Brotherhood (Rewatch)
- 1883
- BoJack Horseman (Rewatch)
- Yellowstone
- Kyojo
- INVINCIBLE
- Your Friends & Neighbors
- House of Guinness
- Adolescence
- Dept. Q
- SAS Rogue Heroes
- The Diplomat
- Tehran
- Black Bird
- Death by Lightning
- Fargo (Season 4)
Wot I Played
I have been feeling the pull of video games once again in a way that I hadn’t for quite some time which has been nice. This is probably because I got a Steam Deck at Christmas in 2024 and being in Japan without my main computer has been sitting on the couch chilling out and whacking through some games. I don’t play extensively so the list is never big, but it has been a good time. Since there’s so few games, it’s probably just worth reading the site itself there’s very little reason to make a chart specifically for this.
Ranking
- Dispatch
- Thank Goodness You're Here!
- Baldur's Gate 3
- Star Wars Jedi: Fallen Order
- Harold Halibut
Overall
Here’s one last chart that gives you the rating for every piece of media from this year, just so you can get an idea overall. I have split them into their specific categories.
Thanks for reading, may 2026 bring exciting changes!