Hello! My name is Tyler and I love video games. I have a teensy problem though: I spend far more time doing video game related things than I do actually playing games. Or at the very least, that's what I think.
I intend to change that this year (either the fact I play very little or the fact that I think I do.) I've resolved to track every single game I play this year. I hear you, "Steam already does that", but Steam can't tell when I'm playing GameCube or Fortnite and they sure as hell won't feature any of that in my "Steam Replay" at the end of the year. Thus, I'm taking matters into my own hands.
I'm utilizing three tools: Simple Time Tracker for Android, SyncThing, and my TrueNAS server.
It truly lives up to its name. I open the app, tell it what game I'm playing, it starts a timer until I tell it to stop.
Well, there's a little more to it than that. I have the games set up in a specific fashion and whenever I start/end a session, I make some notes that will later help the scripts on the site parse the data.
A note comprises of Three-ish parts: General note, People, Achievements, and System
The General Note is just that: me laying out the vibes of the session, how I'm feeling, inane BS. You know, the stuff we used to put in Facebook and Twitter posts.
The People part of the note is for multiplayer sessions, specifically with friends and family. I'm keeping track of who I play with the most.
The Achievements is where I keep track of stuff I did. At the time of writing, I'm only tracking achievements I've actually unlocked within the specific systems. For example, I beat Pikmin 1 this year, but I did it on GameCube, so RetroAchievements has no idea I did that. Thus, no cheevo. I may change my mind on this, but It will be hard to figure out what I did in the games I already played. My notes kinda suck.
[2026-02-14] Surprise! I changed my mind. That didn't take long. I think for RetroAchievements, I'll just keep an eye on the "progression" achievements when I'm on real hardware. Maybe if I do something worth celebrating I'll mark it too. Either way, I'll set the source to "GAMECUBE" or whatever system I'm on so any doubters can take it with a grain of salt.
The Achievements took the most work to get just right. First, I needed API access. Then I made a tool in Python to grab all the achievements for a game based on their AppID (Steam) or their RetroAchievements ID because grabbing them all everytime the site loaded sucks. One of the cool parts of this is that because the data for achievements is mostly local, I also built in support for custom achievements. I wanted to track my progress in OSRS but didn't like the Steam achievements. So, I made a bunch of my own and track them in the script.
I'm tracking Systems in two different ways. One, I've associated each game with a system using the "Category" feature in STT. However, inside the note I will also write in the actual system I'm playing on if it differs from the game's original. I.E. Emulating GameCube games on PC or playing the remake of Crash 2, a PS1 game, on PC. By years end I'll know what system's game library I played the most and what systems I preferred to play on.
Each game also has a color and emoji and a color that is mostly just for the app, but I figured out how to use for my own stuff.
Every night at around midnight, I have STT setup to save a backup of all my data on my phone as a .backup file. I looked at this file and was inspired to make this website when I realized that it was just a tab delimited file.
SyncThing is a fun tool that can synchronize a folder between a number of devices. There's a folder on my phone, and a folder on my server. Whenever a change is detected in one, it gets updated in the other. So every day at around 2 AM, the new .backup file on my phone gets chucked onto my server.
"Oh dear God you exposed your server to the internet!?"
Yes? I may regret this later. But I"m having fun, and I currently see no harm.
I made a container running nginx and pointed it at my folder of html and junk, got it pointed at the internet, and BOOM! Website.
Every time the website is loaded; it parses the entire .backup file. I figure it's about the same as if it parsed a bunch of record objects in a database so it should be fine. There's some other data I want associated with each Game, so I made an extra metadata file that connects that extra data for the games with their STT assigned id. Stuff like release date, icon, AppID or RA id etc. I opted for a retro website vibe here, because there's a simple charm to it..
Anyway, this is where my great shame kicks in. I went to ASU and got a Bachelors in Software Engineering with a focus on Web and Mobile Development. However, life decided to not give a crap about that and most of my career has been spent not doing Web and Mobile Development.
You know what they say, "use it or lose it" and I feel I've lost a bit of my knowledge over the last (oh God) nine years. But I've still got some code in my blood, I just needed some... help.
Give in to the dark side...
Uh oh. I may have lied. I used four tools.
I enlisted the help of AI to write this site. Much to my own chagrin. I hate the concept of vibe coding. But I also admit, that as someone who is a bit removed from my programming past, the idea of doing this on my own with the little free time I have was a bit too much to ask. Besides, the point of the project is to spend more time gaming and less time tinkering and fidgeting with peripheral crap. Diving headfirst back into coding is a bit antithetical to the whole project.
That said, I was not about to just enter "MaKe WeBsItE Plx." into ChatGPT or whatever. I may be rusty, but I know the fundamentals of what needed to be done. I used the AI to build the framework of the site and then went in behind it and tweaked a few things. Got the CSS how I wanted it, refactored stuff into classes because "brain likes OOP". And later this year, I plan to deep dive the code that is already here so I can do a manual refactor and code the great big "Steam Replay"-esque breakdown I want at the end of the year. Hell, maybe when I'm done, I can package it up in a GitHub repo and other folks can use this how they please. Or not.
Thanks for reading this. This is about the closest I'll ever get to a blog post. I don't do Facebook, Twitter, Medium, Tumblr, or any of that junk and while I thought it would be cool, I don't need a blog here so I scrapped that code. Almost.
At the end of the day, I made a thing that I think is neat and wanted to share some details with anyone who cared. If that's you, cool. If that's not you, also cool. I may update this in the future if I think of something else to write. But I think I'm done here. You can go back now.