List of Projects Past

I wanted to generate a list of Unix projects from last semester to provide a reference for what has been done before. The first complete list I found was in the forum of last semester’s Scholar site. There wasn’t a “download” option, and given the formatting I predicted that I’d spend more time writing a program to parse the raw HTML file and properly match up titles to urls than I’d save by just doing an old fashioned copy and paste operation for the 19 projects. So that’s what I did, and ended up with a file one title/url per line formatted like this:

Snake Game https://github.com/ccwertz7/2524snake
Go, Dog, Go https://github.com/rokthewok/ECE2524-Final-Project
...

Just white space separating the title and the url. I wanted to generate a nicely formatted list of links to each project and also filter out any urls that were no longer valid, so I wrote a short python script that read in lines of test, split them at the ‘http’ of a possible url treating everythign to the left of the split as the title and then used the urllib module to check for a 200 status before printing out a markdown formated line:

[Snake Game](https://github.com/ccwertz7/2524snake)
[Go, Dog, Go](https://github.com/rokthewok/ECE2524-Final-Project)

I have uploaded the source for this program to the examples directory in my ece2524 repository on github.  After checking the output of my program I decided that I’d like to create a bulleted list by preceding each line with a ‘- ‘ (this is standard Markdown syntax).  Rather than change my python script, which is already on the verge of being too specific to be useful for much else, I just piped the output through a simple sed command to tack on the dash:

url_200filter.py < Spring2012ProjectList.txt \
    | sed -r 's/^(.*)$/- \1/g' \
    | markdown > Spring2012ProjectList.html

To generate the HTML code that I then pasted here:

While you are thinking about project ideas keep in mind that the goal of the project is to apply and demonstrate understanding of the Unix design philosophy.  A project doesn’t need to be terribly complex to show this, but if you have a complex idea that you would really like to explore it may be sufficient to just implement a piece of it for this project.  I look forward to hearing about your ideas and discussing some details next week!