.software

  • The main view.
  • Right-clicking on an instance shows methods.
  • A full tree is shown for return values on method execution.
  • You can view the private and public fields of an instance.
  • Object Bench preferences.
  • Create New Instance Wizard, page 1.
  • Create New Instance Wizard, page 2.
More Details

Professor Gary Pollice was interested in sponsoring an MQP involving porting the Object Bench functionality over from BlueJ to Eclipse. BlueJ is an IDE aimed at teaching Java to students new to computer science. The user edits classes using a UML-like editor, and java code is created in the background. The user can also create instances of objects and place them in an "object bench", and manipulate them in a visual way.

While BlueJ is a decent IDE for beginners, it's not designed to be used by professional software engineers. Gary wanted to port the useful functionality of the object bench over to Eclipse, which has an extensive plug-in architecture and is the IDE of choice for a significant number of software engineers. My project partner and I ended up developing a very capable version of the object bench in Eclipse that was seamlessly integrated with the rest of the environment.

 
  • Intro1
  • Intro2
  • Premise
More Details

In 2002, the WPI Game Development Club wanted to build a Myst-like game set on the WPI campus. I proposed using Flash as a development medium, due to its ease of interaction and rich scriptability, as well as most likely being pre-installed in most client machines. We first worked on a pilot prototype to float by the WPI administration. We had a script and some pictures, and I wrote the necessary code in Flash that made it into a playable game.

After completing the demo and getting some feedback, I assumed the responsibility of Lead Programmer on the project when a few other people came on board. The final product would have a more involved storyline as well as a richer user experience. I sought out to write an API that would allow others to drop in scenes and add to the game without having to know Flash.

The final product ended up being distributed to freshmen at the activities fair. It helped to publicize the GDC as well as help orient freshmen at WPI.

 
  • Github
More Details

I enjoy contributing and interacting with the open source community. Most of the work I'm currently doing is on GitHub, a hosted Git repository service. GitHub makes it a piece of cake to create, fork, and contribute to various open source projects. A subset of the projects I'm currently working on include:

  • Blugg

    Blugg is a pluggable blogging engine for the Ruby on Rails web application platform. Blugg is built for Rails application developers who want to easily tack on a blog to their existing Rails app while still maintaining a fine level of control. While other solutions either take over your application or force you to conform to their featureset, Blugg lets you add what you need and leave what you don't in the form of plugins. I've developed several plugins so far, and am hoping to develop more in the future.

  • Groupthink

    Groupthink is kind of a hard beast to pin down. It's more or less a resource management system for groups. Documents in Groupthink are like private wiki items in the sense that they support formatting, have history, and you can see what's changed from version to version.

    When writing the previous version of my website, I built into it a capability for tracking the songs I was writing. Eventually, when collaborating with other song writers, I wanted to share this as a service with other people, and thus the seed of Groupthink was born. I began implementing it in Merb; as Merb is now being merged into Rails 3.x, I'll be moving development of this back into Rails.

  • dm-slug

    A DataMapper plugin, it manages your permalinks for you so you don't have to. The first project of mine to be forked by someone else (in order to update it to work with newer versions of DataMapper).

  • merb_mobile

    A Merb plugin that will set the content type to "mobile" if the request can be determined to come from a mobile phone, this is beneficial in serving an alternate version of a website to a mobile browser.

 

.web

More Details

I was contracted to design and build a website that would bring the restaurants of Worcester Massachusetts into the dorm rooms of college kids across the city. Up until the point that the website was publicly released, I was in charge of building a Ruby on Rails web application that be home to both college kids looking for a bite to eat as well as restaurant owners and site administrators looking to publicize and publish their menus. Features of the site included:

  • building a food search engine
  • a blog to further interaction with users
  • location-aware data (for finding nearby restaurants)
  • time-aware data (for finding restaurants that are currently open)
  • a restaurant rating and review system
  • automatic mobile phone detection (mobile browsers are automatically served a version of the site that is mobile phone compatible)
  • authentication and authorization schemes (making sure that regular users can't edit the menus and that guest reviewers are served a CAPTCHA)
  • plenty more.
 
More Details

Despite a role as lead developer with the Gompei Equation mentioned above, I don't consider myself much of a game programmer; I originally joined the WPI Game Development Club so that I might boost my C/C++ skills. Instead, I ended up becoming the first webmaster for the GDC, and implemented a website using Apache's Cocoon 2.0, built on top of Java, XML, and XSLT technologies. I assembled and led both a front-end design team and a back-end development team. As the members of my teams were undergraduate students with varying levels of skills in these areas, I also gave tutorial seminars to bring their skill levels up to the point where they could begin to contribute.

The website was designed to face both members and visitors at the same time, serving the distinctly different needs of both of these groups simultaneously. I had grand ideas to unify the club through the website, where project leaders could administer their projects through the same interface that the secretary posted meeting minutes or the historian posted news articles.

As the club was just getting off the ground, requirements gathering was a deep and on-going process. Various features included:

  • A method for posting events, announcements, and news articles
  • A home-grown forum system, intimately tied to the objects which were relevant to the club
  • An extensible roles/permissisons scheme
  • A method for creating/modifying/displaying development teams and their projects

Many features of an application framework that may now be considered standard were implemented within the application, such as a data layer for both wrapping relational models in Java objects and representing underlying JDBC calls.

 

.graphics

More Details
In addition to building the back-end for Hungry Worcester, I was also responsible for designing various graphical elements, such as flyers, business cards, logos, et cetera. (VLI is the parent company that operates HungryWorcester.com.)
 
Assorted
More Details
Over the years, I've engaged in various personal graphic or photographic projects for one reason or another. All of these have been for my own purposes, generally for the purpose of advancing my skillset.