I have to work a half-day on Monday, after which I am on vacation for the rest of the year. For the past few years I haven’t used many vacation days during the year, so I end up taking all or most of December off. It works out pretty well from a work perspective, since we typically are in a bit of a lull around December anyway. Things never completely stop, of course, but December is rarely a hectic time. Sometimes I think this means I’m dumb to take it off — if I was working this month, I could spend time on work projects which I want to complete but have been pushed aside by higher priority work. But on the other hand, my manager probably appreciates that I don’t schedule my vacations for our busier times. Not that I do this deliberately — it just works out this way.
On the plus side, this allows me to spend time on personal projects which I haven’t completed. Probably the one topping my list is my softball web page / stat cruncher program. Many years ago I wrote a Java program which generates the HTML files that make up the Ice Weasels web page, using text data files as its input. Each week after our game I update these data files, run the program to re-generate the web page, and upload the resulting HTML files. This works fine, but there are some things I want to change and add:
- When I developed this program, the only thing I kept track of was our batting lineup, our defensive positions, and the score of the game. So my data files essentially just contain that information. Later on I made new data file of upcoming games, plus other important dates for the team. I then had to modify the Java program to parse this new data file and generate an HTML calendar for the team. These days we fully keep score of our games (pitch by pitch). I’ve created data files which contain this information, but I am reluctant to just add on to the existing Java program. As fellow programmers know, the more you add on to an existing program (especially things which were not part of its original purpose) the more awkward and ungainly it gets. Programmers call it kludgey or hacky. I want to re-write this program from the ground up, with all of its new requirements in mind.
- Currently the web page has a page of statistical leaders in various categories. For example, the player who has played first base in the most games, or the field on which the Ice Weasels have won the most games. People are always suggesting new statistics for me to add to the page, so when re-writing the program I want to do it in such a way that adding new statistics will be as simple as possible.
- As I explained before, my program takes data files as input, and generates HTML files. I run the program on my local computer, and upload the HTML files to my web page. What would be even nicer is if I just had to upload the data files to my web page, and then had a program which ran on the web page and dynamically generated the web pages as needed. So, for example, someone visiting my web page could ask to see the team leaders in appearances in left field. It would consult the data files and generate the resulting web page on the fly. I suspect that to do this I’d need to keep the data in something like a MySQL database, rather than plain text files. Or, anyway, that would probably help performance. I’ve never done any database programming, so that would be a learning curve. For that matter, I’ve never really done any web programming of the type I am describing here either. I don’t think it would be especially complicated, but it’s still something I’d need to learn.
- Kind of along the lines of the previous point, Java may not end up being the ideal language to use for this. Java is kind of my go-to language for projects that I want to rapidly develop, mainly because it doesn’t require me to worry about pointers, memory management, etc. I am fully capable of programming in lower level languages and dealing with those things, but I see no reason to do so unless there is a benefit which outweighs the additional inconvenience and potential for bugs. The performance gains are usually not sufficient motivation. Anyway, Java isn’t the only language which offers this advantage, though. Recently I’ve been wanting to learn and use Python, because I think it offers many of the advantages of Java, but should be even easier to use for rapidly developing a project. It’s kind of an intermediate between a scripting language and a programming language. I’ve read a book on Python a while ago, but I haven’t written anything using it. Ideally my first Python program would be a smaller project than this one, especially since I want to write this one with a fair amount of care.
- Currently my program doesn’t work if I have incomplete information about a game. But on the other hand, my current program only wants the score, the field, the date/time, our lineup, and our defense. I have that for all of our games, so it’s not a big deal. But this new program is also going to be looking for more stats (hits, walks, etc). I do not have that for our older games. But I do have partial information for some of the older games. For example, for a long time I’ve kept track of any home runs which were hit in the games. And for some games I kept an inning-by-inning score. For some games I can tell you exactly which positions a given player played in each inning. For other games I just know that they played half the game at second base, and the other half at catcher — but I don’t know how many innings were spent at each, and I don’t know if it was alternating innings or something else. Anyway, my goal is for this new program to handle incomplete data. I want to be able to provide all of the data I have for any given game. I need a way to communicate “vague” information to the program — like the half game at 2B, half game at C example above. I think this may be the most challenging part of the project for me. I want to give careful thought to this, so that five years down the line I won’t need to re-write the program..
So that is potentially a pretty big project. It’s a bit daunting, which is why I’ve been hesitant to start work on it. But there’s no reason I can’t get it done this month if I make myself focus on it.
My other projects are smaller. There are various home repairs I’ve been meaning to take care of. I have a bunch of things I want to sell on craigslist/eBay so that they stop taking up space in my house. I want to finally finish organizing my computer/junk room. I’d like to start up my old telnet BBS again. And I’d like to redesign my web page, now that this blog is replacing much of its purpose. Oh, and I’d also like to take a careful look at my finances and work on a budget.
Let’s see how many of these things I end up accomplishing!