Summer 2011 Research with Samuel A. Rebelsky: Media Scripting

This document provides an overview of the summer projects I have available for Grinnell students and the expectations I have of my summer students.

This page may be found online at http://www.cs.grinnell.edu/~rebelsky/Department/samr-summer-2011.html The application guidelines can be found online at http://www.cs.grinnell.edu/~rebelsky/Department/glimmer-app-2011.pdf.

Contents

Project Background

In this project, we are exploring scripting, particularly scripting for the arts. What do we mean by scripting? There are clearly many ways in which computer scientists and computer programmers use the term, such as (1) writing small programs that handle administrative tasks (the original goal of Perl); (2) writing programs in PHP that build Web pages or in ECMAScript to (a.k.a. JavaScript) to make pages interactive; and (3) Visual Basic scripts used in Microsoft applications. We are focusing on something similar to the last interpretation, but in a more interactive context. In particular, we are considering how to support the kinds of small programs that novices might write in the context of working with a graphics application.

This project has evolved from some investigations of the applicability of the Scheme programming language (and, more generally, the functional programming paradigm) to a variety of image-based computations that I began in summer 2006. In summer 2007, we began to look at ways to bridge this project with various open-source applications, particularly the GIMP and InkScape, and to support better scripting of these applications in Scheme.

In the 2008-2009 academic year, to deal with deficiencies in the scripting console in the GIMP, Soren Berg and I built a new user interface for interactively scripting the GIMP. We've ended up generalizing most of what we were doing, making the interface support multiple applications and multiple scripting languages. Hence, the direction of the project has moved from describing images functionally to investigating how best to support and encourage interactive scripting of applications. By interactive, we mean that the environment should support and encourage non-programmers to intermingle scripting with their regular use of the application. (We call the interactive-scripting approach IAScript and the media-focused version MediaScript.) Many of you have used this in CSC 151.

There are three directions in which I plan to expand MediaScript this summer. First, and most importantly, I would like to support an idea called self disclosure. Second, I would like to add MediaScript-based scripting to Inkscape, which has changed significantly since 2007. Finally, if the College is able to support enough students, I would like to add support for Python to the GIMP-based MediaScript. I'd also like to build a suite of illustrative examples, based on the homework and projects from CSC 151.

Self-Disclosing Code

Self-disclosure is a feature of applications in which they disclose (print out, e.g., to a window) the commands one would use to replicate an activity intiated by a GUI feature. For example, in GIMP, if I used the mouse to select a rectangle that ranged from (10,11) to (32,20), the self-disclosure module might print out

(image-select 1 REPLACE 10 11 22, 9)

A previous set of summer students suggested that self-disclosure in the GIMP/MediaScheme hybrid would better support novice programmers and would encourage others to program, since they could record a series of actions and then make them a procedure. I agree with them.

Hence, one priority for this summer is building a self-disclosure system. Doing so will require us to delve deeply into the source code of GIMP.

Inkscape

As you may have noted from the poster outside my office, a few years ago, some of my research students added a simple scripting console to Inkscape, an open source vector graphics application. They found that vector graphics provided different, but equally powerful examples for the power of scripting. Unfortunately, the architecture of Inkscape has changed significantly in the past few years. As importantly, they embedded a very simple scripting console and I'd like to see MediaScript's console be added. Hence, I'd like a group to build an Inkscape/MediaScript combination and develop a new set of motivating examples.

Python

While I love Scheme and think it provides an ideal language for scripting, I realize that others prefer other scripting languages. I would like us to explore whether Python might be a reasonable addition for the GIMP/MediaScript combination. (There is a Python interperter in GIMP, but it makes some bad decisions and provides a minimal scripting console.) Students working on this project would also be able to compare the strengths and weaknesses of the functional and object-oriented models for image computing.

Illustrative Examples

One student will build illustrative examples that focus on the original application domains we have been exploring for scripting (raster graphics and vector graphics) and on the Scheme programming language. The other students will provide occasional support for this task.

I expect that the first examples this student will work on will be extensions of our current examples:

This student will consider the core GIMP procedural operations and consider appropriate ways to wrap those operations to make them more usable by novice programmers.

The student will also explore tutorial guides for the GIMP and for InkScape, finding natural ways to turn long sequences of manual actions into scripting commands.

The student will also work on the design of an online repository of illustrative examples. That is, the student will consider ways to present, to tag, and otherwise to provide convenient access to the examples.

Ports

Summer students are typically expected to provide some service to a project in addition to their main research. The summer 2011 students will be asked to build three easily-installable ports of MediaScheme, one for Mac OS X (an extension of the version currently used), one for Microsoft Windows, and one for Ubuntu Linux.

Technologies

Students should expect to do a significant amount of C programming, as IAScript and many open source applications (particularly the GIMP) are implemented in C. In most cases, I will expect MAP applicants to be familiar with C and memory management in C.

IAScript relies on the GTK+2.0 user interface toolkit. It also uses the GObject objects in C library. I will not expect students to be familiar with these libraries, but they will need to learn them.

Scheme remains the core IAScript language. I expect all applicants to be comfortable with Scheme and with basic higher-order concepts, such as map.

We use autoconf and automake to manage compilation. I do not expect that students will know these tools before they begin, but they will need to learn them quickly.

We use SVN to manage our code repository, although I may migrate this repository to git. Once again, I do not expect that students will know how to use SVN, but I do expect them to learn quickly.

There will, of course, be other technologies that we use. Particular technologies are likely to depend on the project.

Distributing Our Work

Note that any usable software written in this project will be distributed under an open source model. IAScript and MediaScript have a two-paragraph BSD license, and I expect to continue to use this form.

Approximate Schedule

The spring portion of this schedule mimics the schedule officially approved by the division. However, I will certainly understand if students accept a position with me and then later choose to take a position elsewhere. In that case, I will notify students on my waiting list.

The particular ten weeks we use for summer research are currently under discussion. I would like to start on May 24, but other issues may make that impossible. Hence, the schedule may move back a week.

Expectations

I have very high expectations of my summer research students. Among other things, I expect my students to begin their summer research during spring semester and continue their summer research into fall semester (and sometimes beyond). By applying for summer research you are agreeing to meet these expectations if I take you on as a research student. You are unlikely to receive explicit credit or compensation for work in the spring and fall.

As some students from the past may have reported, I expect my students to be self-reliant. While I do my best to be around, I expect you to be able to do many things on your own or with a small group.

Spring

Summer

During the summer, you are expected to work full-time on the project (40-50 hours per week for ten weeks). Most of the work will be done in my research laboratory, during normal hours (8/9 to 4/5). The work will include scheduled daily group meetings.

Fall and Beyond

I realize that some students may be unavailable in the fall, due to a study-abroad program or similar opportunity. Those students will do what they can of this work (e.g., they might present work in the spring, rather than in the fall).

Priorities

There are, unfortunately, a number of conflicting issues I must consider as I choose who to accept for summer research. While one goal is certainly to enhance my research, summer research also helps students, the department, and the institution. My approximate MAP priorities are as follows, although I will certainly take some students from lower categories before taking every student from a higher category.

  1. Students in the class of 2011 on track to receive honors. One of the requirements for honors is that students receive external evaluation of their work. Research in CS is one way to complete that goal. (High scores on the Putnam and Modeling competition are others.) Students also need a 3.4 overall GPA, a 3.5 in CS, an extra 300-level Math or CS course, 213 and (211 or Physics 220), and probably some other things I've forgotten. I'd like to make sure that students who meet all the other requirements also meet the research requirement. Because international students are not eligible for REUs, I am more likely to take international students who meet the other honors requirements.
  2. Students whose background shows they will be particularly productive members of the project team.
  3. Students in the class of 2014 likely to participate in the project for multiple summers. I'd like at least one student who will be in category 1 the following year.

Because women and domestic students of color are under-represented in computer science, I will strive for some equity in the mix of students I select. I hope this will encourage more members of these groups at Grinnell to participate in computer science and, as they go on to successful careers, that they will further encourage others.

In many years, I have imitated the early research experience program in Physics and will reserve a few slots for first-year women and students of color who have expressed an interest in and aptitude for computer science. It is likely that these will be the only first-year students I take for paid positions.

Application Procedure

Applicants must meet with me for a fifteen minute interview.

Applicants must prepare responses to the Glimmer application form, available at http://www.cs.grinnell.edu/~rebelsky/Department/glimmer-app-2011.pdf.

Applicants must fill out the divisional summer research application, available at http://www.grinnell.edu/academic/divisions/science/sci-sumres-form. If you feel uncomfortable with the Mollom privacy policy, you can discuss other options with Doug Peterson in the Science Division Office ( Science 1232).

Evaluating Applicants

I am likely to distribute the essays (project description for upper-division students, essay questions for first-year students) from your applications anonymously to a group of trusted advisors. We will each evaluate each person's essay or essays on a 1-4 scale.

After evaluating the various parts of the application, I will score each applicant using something like the sum of the following:

I may discuss applicants with colleagues before and after the interview. While the interview and those discussions are not directly incorporated in the score, they provide additional information.

In the end, I will use both rankings and other information as advisory rather than as absolute determiners of students. For example, a poor interview may disqualify you, no matter how good your overall score is, and I may bump up a person with an excellent interview or who past experience suggests will fit well in my research team. I may also prioritize students with certain skill sets.


This page was generated by Siteweaver on Thu Mar 3 12:50:51 2011.
The source to the page was last modified on Thu Mar 3 12:50:49 2011.
This page may be found at samr-summer-2011.html.

Samuel A. Rebelsky
rebelsky@grinnell.edu