So, I finally managed to getting around to fixing the backend of znurt.org so that the keywords would import again. It was a combination of the portage metadata location moving, and a small set of sloppy code in part of the import script that made me roll my eyes. It’s fixed now, but the site still isn’t importing everything correctly.
I’ve been putting off working on it for so long, just because it’s a hard project to get to. Since I started working full-time as a sysadmin about two years ago, it killed off my hobby of tinkering with computers. My attitude shifted from “this is fun” to “I want this to work and not have me worry about it.” Comes with the territory, I guess. Not to say I don’t have fun — I do a lot of research at work, either related to existing projects or new stuff. There’s always something cool to look into. But then I come home and I’d rather just focus on other things.
I got rid of my desktops, too, because soon afterwards I didn’t really have anything to hack on. Znurt went down, but I didn’t really have a good development environment anymore. On top of that, my interest in the site had waned, and the whole thing just adds up to a pile of indifference.
I contemplated giving the site away to someone else so that they could maintain it, as I’ve done in the past with some of my projects, but this one, I just wanted to hang onto it for some reason. Admittedly, not enough to maintain it, but enough to want to retain ownership.
With this last semester behind me, which was brutal, I’ve got more time to do other stuff. Fixing Znurt had *long* been on my todo list, and I finally got around to poking it with a stick to see if I could at least get the broken imports working.
I was anticipating it would be a lot of work, and hard to find the issue, but the whole thing took under two hours to fix. Derp. That’s what I get for putting stuff off.
One thing I’ve found interesting in all of this is how quickly my memory of working with code (PHP) and databases (PostgreSQL) has come back to me. At work, I only write shell scripts now (bash) and we use MySQL across the board. Postgres is an amazing database replacement, and it’s amazing how, even not using it regularly in awhile, it all comes back to me. I love that database. Everything about it is intuitive.
Anyway, I was looking through the import code, and doing some testing. I flushed the entire database contents and started a fresh import, and noticed it was breaking in some parts. Looking into it, I found that the MDB2 PEAR package has a memory leak in it, which kills the scripts because it just runs so many queries. So, I’m in the process of moving it to use PDO instead. I’ve wanted to look into using it for a while, and so far I like it, for the most part. Their fetch helper functions are pretty lame, and could use some obvious features like fetching one value and returning result sets in associative arrays, but it’s good. I’m going through the backend and doing a lot of cleanup at the same time.
Feature-wise, the site isn’t gonna change at all. It’ll be faster, and importing the data from portage will be more accurate. I’ve got bugs on the frontend I need to fix still, but they are all minor and I probably won’t look at them for now, to be honest. Well, maybe I will, I dunno.
Either way, it’s kinda cool to get into the code again, and see what’s going on. I know I say this a lot with my projects, but it always amazes me when I go back and I realize how complex the process is — not because of my code, but because there are so many factors to take into consideration when building this database. I thought it’d be a simple case of reading metadata and throwing it in there, but there’s all kinds of things that I originally wrote, like using regular expressions to get the package components from an ebuild version string. Fortunately, there’s easier ways to query that stuff now, so the goal is to get it more up to date.
It’s kinda cool working on a big code project again. I’d forgotten what it was like.