Skip to content
Open Hatch Organiser edited this page Sep 26, 2015 · 16 revisions

Here are the projects for the Open Source workshop at UMM, Saturday Sept 26th, 2015:

  • Language: Scheme (back-end written in C)
  • Mentors: Jim Hall
  • Description: GNU Robots is a simulation game where you write a program for a little robot, then let him loose inside a game grid. Your robot will need to pick up as many prizes as possible, while collecting energy and avoiding baddies. The robot program in written in Scheme.
  • Project ideas:
  1. Scheme programming (or Racket or Clojure or LISP). When I wrote GNU Robots, I provided only a few simple demo robot programs, and they weren't very smart. Another developer (Kyle) contributed two other demo robot programs: greedy.scm and mapper.scm. Let's write some better demo robot programs, robots that better demonstrate how to explore the space. Racket and Clojure are in the LISP/Scheme family, so some experience in Racket or Clojure should be plenty.
  2. Some graphics experience, no programming. The game graphics are implemented as separate 16x16 XPM graphic images. These were very basic images that Eric, Tom, and I quickly put together, and always meant to fix later, but never did. If you know the GIMP or Photoshop, let's create some new XPM graphics.
  3. Documentation; programming experience helpful but not required. The Robots-HOWTO documentation is not very easy to read. I wrote it over lunch one day when I was getting ready to make a new release. Let's improve the Robots-HOWTO so it is more helpful to people who want to built GNU Robots, and those who want to write robot programs for it.
  • Language: C
  • Mentors: Jim Hall
  • Description: Atomic Tanks is a tank battle game where you use a variety of odd weapons to annihilate your opponents.
  • Project ideas:
  1. Little or no programming required. The game has some typos and misspellings in the in-game text. These should be fixed and patches submitted. (For example: when selecting "Fuel" in the in-game "shop," the description is "Allows the tank to move across level terran." — should be "terrain.")
  2. Some programming experience helpful. I submitted some color palettes several years ago, and one (which I think of as the "clown" color scheme) is very hard on the eyes. Let's update the color palettes to use better-looking colors.
  3. Moderate programming experience necessary. The color scheme in the game for menus and other interface elements is not great. Yellow on blue for an info box, with black on a green gradient for the in-game "shop"? Let's pick some different colors. At the same time, can we update some of the icons and buttons and spacing around menus and info boxes so things are easier to read?
  4. Advanced programming experience helpful. The game uses a very basic in-game font. It would be nice to modify the game to use a nicer-looking font. Can we find something on Google Fonts that we can re-use here? Or some other "fun" free font that's suitable for a game?
  • Language: Ruby (on Rails)
  • Mentors: Emma Sax
  • Description: Hubstats is a Ruby on Rails engine that can be used to track GitHub pull requests, comments, merges, teams, users, and repositories. It connects to GitHub via GitHub webhooks. The company Sport Ngin is currently maintaining and using Hubstats to track their development workflow.
  • To Do: When we change a user's team on GitHub, the data on Hubstats (number of pull requests, comments, developers, etc) is also changed; we want old data counts to stay the same (since the user's team isn't changed in the past, only the present and future). Only new data should reflect the user's team change. A more detailed reflection of the work to be done can be seen here. It's okay if some of the terminology in the issues are unfamiliar, we will explain as we go!
  • Language: Clojure
  • Mentors: Nic McPhee, Elena Machkasova
  • Description: Midje is a nifty and widely used Clojure testing framework. The Github project has over 60 open issues, several of which we could attempt to address or at least clarify. Some of these are requests for documentation and would require little programming, while others would require digging into the guts of Midje and doing some coding.
    • Some documentation issues: 283, 327, 326, 234
    • Some hopefully simple bugs/fixes/improvements: 308
    • Some requests for better error messages: 300, 298, 302,
  • Language: Clojure
  • Mentors: Nic McPhee
  • Description: This is a simple system for evolving programs to approximate a set of data points. Currently the interpreter only supports basic arithmetic functions (+, -, *, /), which limits the kinds of things we can evolve. It would be nice to add some additional functions to the interpreter, which are described in a set of related issues, each of which would be fairly easy to implement.
  • Language: Python (with some Java depending on the issue)
  • Mentors: Kristin Lamberty, Nic McPhee
  • Description: JES (Jython Environment for Students) is the programming environment we use in CSci 1201. It's now an open source project on Github, so we could contribute by trying to address (or even just replicate) some bugs (e.g., issue 75). There are a lot of issues there, many of which are old bug reports from when the project was on the now defunct Google Code, and I suspect that many of them have changed or just don't make sense anymore. If we could help clean up some of that historical cruft that would be a nice contribution.
  • Language: Arduino C, Node.js (JavaScript)
  • Mentors: Henry Fellows
  • Description: We're making a floppy drive choir so that we can put something more interesting in the CSCI division case. The plan is for fourteen floppy drives with two hard disks to add a bit more range. We just started a few weeks ago, but we've managed to make a lot of progress.
  • Project ideas:
    1. No programming required. Make the cabling and test all of the floppy drives. Maybe demonstrate that we can manipulate the hard disks in useful ways. Create some fun MIDI files.
    2. Frontend web development experience helpful. Work on the web-based interface for controlling the choir. HTML/CSS/Socket.io/Knockout?
    3. Programming experience necessary. Design and build the server software to run on the Raspberry Pi. Figure out a data structure for storing music and how to send it to the Arduino.

This is a continuation of the drone project from last year, but there's no requirement that you worked on it last year to work on it this year. This a bot/drone control project set up with generator-ng-poly.

  • Bots: ARDrone (continued from last year), Ollie
  • Controllers: Keyboard and possibly a Leap Motion and/or Myo controller

This project will include the use of:

  • Jade (Template Engine)
  • AngularJS
  • SCSS
  • ES6 (ES2015) (Compiled with Babel.js)
  • NodeJS
  • Express
  • Cylon.js (controlling the bots)
  • Angular-Material (UI)
  • Mocha-Chai (Testing)

Potential teams for this project:

  • UI Design (using Angular-Material)
  • Controller/Service Development
  • Server/API Integration with Cylon.js
  • Testing (if we have a lot of people interested in this project)
  • Possibly a Leap Motion and/or Myo team

Looking for more projects? Not sure where to start? Here are some more resources:

Finding A Project

Here are some tasks well suited to newcomers: