Day 26

Final project wrap-up

We’ve nearly reached the end! Below are the remaining deliverables for the final project. Course staff are available today to consult on any of these topics.

Submitting videos

Please place your demo video file on the Olin Public drive at

\\fsvs01\Public\+Courses\SoftDes\videos\

so that we can compile them to show at the start of the final session. Videos should be in a reasonable format (e.g. MP4, gif) and size (< 250MB) - talk to us if you’re not sure. Please use a filename that clearly indicates your team.

Professionalism is important in public presentations, so please use the “would I be happy for my parents to read this in the newspaper” test when uploading content. Humor is great; abusive language or disparaging groups of people is firmly not acceptable.

To access the Public drive, you can follow IT’s instructions for adding a network share on Linux (reproduced here

  1. Open up a terminal and type:
    sudo apt install smbclient
    sudo atom /etc/samba/smb.conf
    
  2. Replace the line in the smb.conf file that has workgroup=... with these 4 lines:
    client use spnego = no
    client ntlmv2 auth = no
    workgroup = WINWIRKGRP
    client max protocol = NT1
    
  3. Open File Explorer and click “Other Locations” in the bottom left corner. Enter smb://fsvs01/Public as the server address at the bottom.
  4. When prompted, connect as a Registered User. Username: your Olin network username, Domain: olin.edu, Password: your Olin network password.

Alternatively if you are not on the Olin network, you can upload your file via the VPN web interface: https://jvpn.olin.edu/. In that interface, click on FSVS01.olin.edu and navigate to Public\+Courses\SoftDes\videos\

In addition to submitting your demo video for the final session, you will also likely want to include your video somewhere on your project website. The video files are too large to commit to your GitHub repository (please don’t do this), so you should plan on uploading them to a video sharing website. You can then embed them in your website by including something like the following directly in your Markdown or HTML:

<iframe width="560" height="315" src="https://www.youtube.com/embed/JEpsKnWZrJ8" frameborder="0" allowfullscreen></iframe>

which gives the following result:

Capturing dependencies

Your project may require 3rd party Python packages that are not part of the standard library. In your README file (e.g. “Getting Started” or Install section), you must at minimum list these extra packages necessary to run your code (with versions if necessary).

You should know what modules are needed since you wrote an import statement for each (read about best practices for import statements), but in case you forget or you’re looking at someone else’s code: command line tools to the rescue! In your project directory, type:

grep -hr "^import" . | sort | uniq

This means 1) search recursively in the current directory for lines that start with “import” (without printing which file you found them in), 2) sort those results alphabetically, and 3) don’t show me duplicates.

(Technically "^\(from .\+ \)\?import" would be a better search expression, since it also catches from foo import bar style imports.)

In order to make things easier for your users, in addition to just listing the required packages you can give them a listing that they can automatically install using their package manager. To generate this list, you can run:

pip freeze > requirements.txt

or

conda list --export > requirements.txt

depending on which package manager you are using. This will create a file called requirements.txt that you can include in your project repository. Users can then install the needed dependencies by simply running:

pip install -r requirements.txt

or

conda install --file requirements.txt

as appropriate.

Important caveat: this process will dump every package you’ve installed, not just the ones needed for this project. It is best practice to edit down the list to just those necessary for your project.

Exercise:

Make sure the README file for your project has up-to-date installation instructions including required packages. Generate a requirements.txt file for your project.