Direct anyone who is interested in CUPLV to subscribe to our mailing list (cs-gg-plv@colorado.edu) via Google Groups: https://groups.google.com/a/colorado.edu/d/forum/cs-gg-plv. This mailing list is for anyone interested in our group.
We maintain a separate list (cs-gg-plv-status@colorado.edu) for active group members (i.e., you are currently being advised in research by one of the faculty). Direct new group members to https://groups.google.com/a/colorado.edu/d/forum/cs-gg-plv-status to join this group. Also, let Evan know to be expecting a subscription request. Members of this group are automatically subscribed to the cs-gg-plv list. If you are reading this, you are almost certainly a member of this group.
We use a number of cloud resources:
We share Google resources via the cs-gg-plv-status@colorado.edu mailing address. Please make sure you are signed into the Google account that you used to subscribe to cs-gg-plv-status@colorado.edu. Tip: Chrome supports multiple sign-ins (Add person ... under Settings).
The CUPLV lab is located in ECCS 1B11. If you want key card access to this lab, contact a CUPLV faculty member with your BuffOne Card number. The CUPLV faculty member should request access from the CS front office (John Kelly).
There is a dedicated machine in the lab for joining status meetings via Zoom. It uses a shared lab account (cuplv@colorado.edu). This CUPLV Zoom account is a Pro account, so you may feel free to use it for scheduling longer meetings. The personal meeting ID for this account is 303-492-2984 (matching the lab phone number). The join meeting URL is https://cuboulder.zoom.us/j/3034922984 or https://cuboulder.zoom.us/my/cuplv.
For status meetings, let us use this account's personal meeting ID 303-492-2984.
This account is also set up for auto-answer to be able to easily join status meetings remotely. To enable auto-answer for yourself, you must first add your own account to CUPLV's auto-answer group (with the CUPLV account on the Zoom client, go to Contacts, search for yourself, right-click and select Add to Auto Answer Group---more information at https://support.zoom.us/hc/en-us/articles/203736135-How-to-Use-Auto-Answer). To have the CUPLV account auto-answer, from an active meeting, click Invite at the bottom of client, then Invite by IM, select CUPLV (search cuplv), and confirm Invite.
The Zoom machine uses an all-in-one webcam, microphone, and speaker (Logitech ConferenceCam Connect). You may feel free to use this for other meetings (e.g., moving it to the conference room), but please make sure it is connected to the Zoom machine for status meetings. The conferencecam has a battery and can also be connected via bluetooth.
The Zoom machine should remain unlocked. But in case not, the password for the Zoom machine is buys18:tents (like the lab wifi) or the login pin is 1011.
We have a shared subversion repository: https://www.cs.colorado.edu/svn/pl/.
To get access to the subversion repository, run the following command:
htdigest -c <filename> Subversion <username>and send the resulting file to Evan.
Our default access policy is that CUPLV members have access to the full repo. External collaborators are added on a per-folder basis. We use subversion mostly for papers (under pl/papers). For projects, we use Github.
We have a Github organization at https://github.com/cuplv with access to private repos.
To receive an invitation to the organization, send your Github ID to a CUPLV faculty member. They can invite you to the organization (under the People tab).
As a member of the CUPLV organization, you can create new private repos. You become an administrator for any repos that you create. Any member of the CUPLV organization can see and has read/pull access to all repos.
Teams can be created to assign a particular access for the same group of people to several repos (usually write/push access). We create teams coarsely per project and add that team to all repos for that project.
Our default access policy is that only CU people are invited to the organization. External collaborators can be added on a per repo basis. External collaborators should not be added to teams, as a member of any team becomes a member of the organization.
SSH keys are used for many services, including Github and OpenStack. It is more convenient and secure for accessing remote servers. If you've never used ssh keys before, you're missing out.
Following [1], you can create a ssh key pair as follows:
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_cuplv -C "CUPLV key for yourusername@machine"This creates a 4096-bit RSA key with a specified filename and a specified comment string.
You can add your ssh public key to Github from your Github profile [2].
You can find someone else's public key on Github at https://github.com/username.keys. We use this way to find someone's ssh public key.
Here's a way to add your public key to a server.
$ ssh server "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa_cuplv.pubYou'll use a password login this first time. All future logins will be via your ssh key.
On a Mac, one can use SSHKeychain for a simple app to turn on and off ssh port forwarding to different servers in your status bar. I have used to set up printing to the CS department printers via research.cs.
Some other tips and uses of ssh [3].
(1) Navigate to the OpenStack Dashboard. Go to stack.cs.colorado.edu. Login with your Identikey username and password. If these do not work, contact Matthew Monaco (Matthew.Monaco@colorado.edu) to request access with your advisor CC'd.
(2) Create an SSH key pair. In order to log into instances you create, you will need to create your own SSH key pair. Go to "Access and Security" -> "Key Pairs" -> "+ Create Key Pair" and enter a name for your key pair (e.g. mykey). This will be downloaded as "mykey.pem" and you can add the key pair to your SSH credentials by running "ssh-add mykey.pem" in a terminal (you may need to change the permissions on your key pair in order for this to work; try "chmod 700 mykey.pem" if you run into trouble with this).
(3) Create a new instance. Go to "Instances" -> "Launch Instance". Fill in the fields under the "Details" tab in accordance with your needs; for "Instance Boot Source", select "Boot from image" and choose an Ubuntu image (e.g., ubuntu-trusty-150617"). Under the "Access & Security" tab, select your key pair (e.g., "mykey" from the last step). Under the networking tab, select "public". Finally, click "Launch"!
(4) SSH-ing into an instance. Once you have created an instance, you can monitor its status under the "Instances" menu. It may take a few minutes to start up, but eventually the "IP Address" column of your instance will be populated. Once this happens, you can SSH into your instance by running "ssh ubuntu@<IP of your instance>".
We have a location on the web server for storing large files for public download. On research.cs.colorado.edu, copy files into
/home/web/htdocs/csops/pl_downloads/The files will be available at http://pl.cs.colorado.edu/downloads/.
The public PLV website (http://pl.cs.colorado.edu/) is accessed via subversion at http://www.cs.colorado.edu/svn/pl/web/. Any file that is committed into that directory will show up on http://pl.cs.colorado.edu/, so please double check your edits before committing.
The website is a composed of a set of static HTML pages generated from a single XML data file (https://www.cs.colorado.edu/svn/pl/web/pl.xml) using XSLT. The main XSLT stylesheet file is https://www.cs.colorado.edu/svn/pl/web/pl.html.xsl. To add new publications and news items, you should only need to update the XML data file and should not need to update the XSLT stylesheet file.
For publications, there is a list/table of publications (<publications> ... </publications>), which references two other tables (<persons> and <events>) for authors and conferences. When you add a new publication, you may also need to add to these tables.
For simplicity in generating publication lists, please keep <publications> sorted from "most recent" to "least recent."
Similarly, for <persons>, please keep it sorted alphabetically by last name within a tagged group (e.g., faculty, phd, ms). It does not matter for external collaborators (i.e., their entries are only looked up by id).
Here's a template for a publication entry (<pub>):
<pub id="unique_identifier-conference"> <title>Title of Paper</title> <authors> <author person="first_author_id" /> <author person="second_author_id" /> </authors> <urls> <url name="pdf">papers/filename.pdf</url> </urls> <howpub> <proceedings event="conference_id" /> </howpub> <abstract> <p>A paragraph of the abstract.</p> </abstract> </pub>The relative path papers/ will reference the papers/ directory, so be sure to svn add the file there. The ids reference either the <persons> or <events> tables. Entries in those tables have an id attribute. Please include the <p></p> tags in the <abstract> field even if your abstract is just one paragraph.
You may also include an <icon>pics/icon-id.png</icon> that specifies a square icon for the publication. If you don't specify one, then a generated word cloud icon will be used.
Here's a template for a person entry (<person>):
<person id="unique_identifier"> <name>Name Used On Publications</name> <url>http://personalwebsite</url> <face>pics/lastname.jpg</face> </person>The <url> and <face> fields are optional. The <face> field is used for all members of the group, so your entries should have a <face> field.
Here's a template for an event entry (<event>). An <event> is part of a <series>, so you don't have much to add if the series already exists.
<series id="popl"> <name>Principles of Programming Languages</name> <longPrefix>ACM SIGACT-SIGPLAN Symposium on</longPrefix> <event id="popl11"> <date>2011-01</date> <location>Austin, Texas, USA</location> <url>http://www.cse.psu.edu/popl/11/</url> </event> </series>Within any text (e.g., a news item), you can reference a person, event, or publication using the <ref table="person|event|pub" key="items_id"/> tag.
For projects, adding a <project> entry to the <projects> table is similar. Here's a template for an entry:
<project id="project_identifier"> <name>Short Project Name</name> <url>projects/projectname/</url> <authors> <author person="person1"/> <author person="person2"/> </authors> <title>Short Project Title</title> <snippet> <p>Short phrase/sentence describing the project.</p> </snippet> <references> <ref table="pub" key="paper1" mode="abbrev" /> </references> </project>The <name> field is used for links, the <title> field should be a few words and is used for short listings, and <snippet> is a brief abstract that is shown in the longer projects listing. You can also specify an <icon> field like publications.
To add a news item, you can use the following template:
<news date="YYYY.MM.DD" id="someid"> <news-snippet> <ref table="person" key="person1"/> ... </news-snippet> <news-detail> <float></float> <ref table="person" key="person1"/> ... <ref table="pub" key="pub1" mode="authors"/> </news-detail> <news-page header="string"> </news-page> </news>The different <news-*> fields give increasing detail about the story. The only one that is necessary is <news-snippet>. Then, if you specify the next level detail, then you should have all previous ones. For example, if you specify <news-detail>, then you should also have specified a <news-snippet>. The <news-snippet> should be one line and is used for the short list on the front page, the <news-detail> is the paragraph that goes in the box with the rollover, and <news-page> is only shown on the full News page.
The <float></float> is optional that specifies a picture or whatever to float in the news paragraph. If it is not specified, the generator shows all persons with <face> tags associated with them via <ref table="person">s.
The <ref> tag is useful for cross-reference persons or publications. There are few forms of <ref table="pub" key="..."/> that are useful: <ref table="pub" key="..."/> links with the title of the publication (usually used in <news-detail>), <ref table="pub" key="..." mode="authors"/> links with the authors (usually used in <news-snippet>), <ref table="pub" key="..." text="..."/> allows you to specify whatever link text you want.
You need an XSLT 2.0 processor to build the website. By default, the Makefile uses saxon, which is a Java application that is checked into the repository. You only need to have java somewhere in your path. In theory, any XSLT 2.0 processor should work. To build the website, run
makeTo make push updates to the live website, you can run
make commitwhich will make sure to add any newly generated HTML files. Make sure to svn add any supplemental files (like PDFs). Also, please double check locally before doing this step.
Please add to this list, as you discover anything useful for the group.
<sometag> can be closed with C-c C-f.