ECE 2524

Introduction to Unix for Engineers

Requirements Not Met

The reason I wanted to review this project first was I wanted to make a application like this for myself for a long time. But my first impression on this project was not so great. I am reviewing the program as a user not as a programmer of python.

Usage

  • The developers did not state what version of Python was used to implement the project. I thought Python3 which was the one we used in class. However, this project was implemented in Python2.x.

  • There were two dependencies that was required for the application to run. As a user, I expected to have few lines on how to install the dependencies. Since the developers have already taken time learning how to install, they could have included the instructions in the documentation.

  • Since it was a python program, there was no compilation necessary. However, the lastFMscrape program was not executable. I had to pass the file to the python interpretter. Thats when I landed into the version problems.

  • The help was simple. But the formatting was not user friendly. When I executed the program without arguments, the help came out like this:

    balajiarun pyMP3Tagger $ python mp3tag.py Usage mp3tag.py “music file”balajiarun pyMP3Tagger$

    Even though it is a simple error, it destroys the visual appeal.

  • The lastFMscrape.py failed to run - it broke. There was error about some global varibale that needs to be addressed.

  • The mp3tag.py worked well with files that had META data in them. I tested it with a file with no META and it threw errors. Errors were not caught many places of the program. May be the developers were too optimistic. Also, the properties that were obtained from the file were printed as raw array of string with brackets and other characters.

Style

  • The code was well organized and heavily commented. I was able to follow each line easily. The variable names used suited its purpose.

  • This program communicates with the Internet and local MP3 files. The two processes were handled in different classes. In fact, the two processes can be run independently.

Philosophy

  • The program seems to use the Filter Interface pattern but does not seem to fulfill it due to the type of data outputted. The output needs to refined to suit the interface model.

  • This interface is best for command line use. In future, extending the program with a UI can be a possibility.

  • The Rule of Silence was incorporated in the design. However, the existence of errors that were not caught broke the rule.

  • The Rule of Representation was not required because the program did not incorporate any data. Any data it obtains is either from the web or the file.

Improvements

  • First, all the bugs need to be fixed.

  • Support for more Tags can be added, but not necessary

  • Flags can be included in input to filter songs in folder based on Album, Artist, etc., I will definetely use this app if it had such capabilities.

  • Ability to return files names of matching Album, Artist, etc. so that those files can be copies somewhere else - to a flash drive to be played in a car’s music system.

Overall, I really like the scope of the project.