The Last Seven Minutes: Grant Rose's Music Reviews
Music critique has been a hobby of mine for a while, but when the time came to publish my reviews I wanted a tool more specific to my "reviewer's vision" than the typical blog or pre-existing review site. That meant building my own reviewing tools, and that's what became my main project throughout Summer 2009. My goal was to be able to enter reviews to a database using web forms, and then display that data to readers on a nicely formatted page with scores calculated automatically, along with an interface that allowed for easy navigation of the information available. That goal is now accomplished, and the review database, which I have dubbed The Last Seven Minutes after a song by the progressive rock band Magma, can be reached at http://grantrose.org/reviews.php. An example review is shown below:
In an effort to make The Last Seven Minutes a more interactive experience for readers, I designed a comment system that lets readers offer their own opinions on an album (or my review of it) as well as vote on how "accurate" they find my review to be. The approval vote is available only to users logged-in on a GrantRose.org account (which takes less than a minute to create through the left sidebar of the website), and as an added benefit, logged-in users are allowed to post comments more frequently than anonymous users are.
This project was my first in-depth experience with PHP, JavaScript, and SQL databases, so I learned something new every step of the way. I am still making periodic improvements to the site as I learn better programming techniques for these languages. At the beginning of September, for example, I began incorporating some rudimentary object-oriented programming in my PHP code in order to cut down on the number of arrays I was using to hold all the review data being fed into the HTML, thus making the code easier to maintain.
The Last Seven Minutes will continue to grow, both in review content as well as features, as I come up with new ideas and new paths to pursue. One feature that's at the top of my list as of September is a search function that lets readers find albums based on a wide variety of criteria. This is not so critical at the opening stage of the project, but it will become more and more so as my library of reviews expands.
I hope to eventually rework the project into a distributable package that other aspiring critics can download and customize to their own reviewing styles. For now, though, I am still making the majority of the source code available to anyone who might have use for it:
Download source files (245 KB)
Awesome Grader
This is a prototype for a grading utility which was developed by Andrew Harris, Rob Denison and myself as a group project for our Fall 2008 Software Engineering class. It was created in Java using NetBeans, and features a workspace-like environment in which the various modules of the program can be manipulated as internal frames. I was responsible for building the Class Manager module as well as the workspace containing all the modules. As you can see from the following screenshots, the results were pretty awesome.
The .zip file contains the Awesome Grader executable jar file (requires the Java Runtime Environment to open), as well as a supplementary library file which is needed to run one of the modules in the program. Simply extract the .zip file to a folder and run AwesomeGrader.jar. This program is posted with permission from Andrew, Rob, and VCU faculty.
Download
AwesomeGrader.zip (80.9 KB)
Download
source files (20.5 KB)
Essay: "The Potential and Limitations of Electronic VotingSystems"
This is an essay I wrote for my Fall 2008 Research Seminar class on an interesting topic that I hope to study in more detail in the future. Although I wrote many essays in college, this one was of particularly good quality (though I may post others later if I can clean up a few inaccuracies in them).
Here is the abstract:
"Electronic voting systems have been proposed by many organizations, both commercial and academic, in hopes of improving on traditional voting methods that involve machine-marked or handwritten paper ballots. Although electronic systems have several potential advantages over traditional systems in terms of efficiency and accuracy, they also present new problems, including the possibility for a nation's election tally to be controlled by a remote attacker. This report examines several aspects of electronic voting systems, including source code openness, ballot verification, election auditing, and use of Internet protocols, tying each aspect in with three key criteria for any successful voting system - security, anonymity, and transparency."
View the essay | Download PDF (44.8 KB)
Personal Finance Tool
I made this Excel workbook (using OpenOffice.org Calc) during the summer of 2008 to keep track of my bank transactions and spending habits. You enter your transactions on one sheet (i.e. by copying them in from online bank statements), and the other sheet displays your totals for each month, sorted by categories for which you enter abbreviated identifiers on the transaction sheet. I have a friend who uses it for his own budgeting, so perhaps there are others out there who would also like to make use of it.
I will post an instructional document for it when I have some time. If you're familiar enough with formulas and range names in Excel, you can most likely figure it out on your own. At present it doesn't have any macros, though I would like to whip some up for it eventually to make adding month columns and such easier.
Download PersonalFinanceTool.xls (74.5 KB)
Battleopolis (a.k.a. Grant's Ants)
This is a strategic card game written in Java during 2006 and 2007. It is based on Ants by Miroslav Nemecek (I believe I originally got Ants off of Game Hippo, but that site is no longer around, and I'm not aware of any official download source for it at this time). I expanded on the original concept by adding several new game effects, including duration-based effects and new card-swapping abilities. It features both a single-player (versus A.I.) and a multi-player mode.
I wrote it at a time when my knowledge of GUIs and networking was very scant, so it ended up being a command line based game, and although there is a multiplayer mode it requires both players to use the same computer. Hopefully this will all change some day, but it's been a long time since I've touched most of the code, and it could probably use a full re-write anyway. Nevertheless, it is playable.
It also features a nifty logging function which will record the statistics of your games into two .txt files inside the game folder - one with a complete move list for each game (gamehistory.txt), and another with only a line of basic stats per game (gamesummary.txt).
The single-player mode is still a work in progress as of this version, but seems to function reasonably well as it is. One thing the A.I. does after each move is print a statement at the end of the turn explaining the logic behind its play. I used this during testing to make sure the computer's decisions made sense.
For those of you who haven't done much in the DOS command console, it's a little tricky to explain how to run the program. I may provide an illustrated manual when I get a chance, but in the meantime, here's a shorthand explanation for Windows XP users:
- You need to have the Java Runtime Environment and Java Development Kit installed. You may already have these, and they're usually installed in the C:\Program Files\Java folder for Windows users. Go to that folder, and if you see at least two folders inside of it, one beginning with "jre" and another beginning with "jdk", you should be okay (generally). Otherwise, you can download both of these packages here.
- There is a file inside that JDK folder called java.exe, which you will need to use within the command console to run the card game. It's a lot easier to use if you set the location of that file as an environment variable. To see how this is done, read Step 5 of this article.
- With that out of the way, you're ready to go into the command console and run Battleopolis. Open up the command console, use the cd command to navigate to the folder on your computer where you downloaded Battleopolis, and then enter the command java Battleopolis. If you followed all the steps right, you should be having buckets of fun in no time.