Ambient Devices

Professional Portfolio 

Personals: 

Home

Blog: http://taesup.blogspot.com/

Biography

Projects:

Done:
MyIsern 2.0
AmbientHackyStat
Ambienthackystat-ui-wicket

 In Progress
Inventory Manager

Paperwork: 

 Resume

 Introduction

This project's goal is to "Develop an interface to Hackystat that
utilizes ambient devices such as the Orb or Nabaztag"

First, I need to explain what the Ambient Orb and the Nabaztag is. The Ambient Orb is just a ball that changes color and animation. Simple enough, right? Well if it is linked to some kind of database, it can display the information in the database in a non-obtrusive way. Without actually accessing the database or even going near a computer, you can take one look at the color and animation of the Orb and determine the status of a project or if a certain program is working the way you want to. 

The Nabaztag is a device created by the Violet company. It is basically a little bunny that can move it's ears, talk, and light up 5 different lights. Usually it is set up as a play buddy that you can leave on the side. You can set it up to read news feeds, set up alarms, and remind you various events. We have "hacked" the HTTP signal that it receives and set it up so that we can control it's output. 

This project basically builds an interface connects these two devices to one main server. This "server" can monitor a project through the use of HackyStat and activates one of the two or even both of the devices to relay a ambient signal. This is a great project because developers can walk into the room where the devices reside and instantly know what the state of the project is.

The possible use cases that we can set up are: 

  • Positioning the Nabaztag Bunny's ears according to code coverage.
  • Using the Ambient Orb color and animation function to indicate QA tests and their status.
  • An audible announcement from the Nabaztag Bunny when a build fails.
  • An audible announcement from the Nabaztag Bunny when there are updates in the SVN

The main part of the project was just building the interface that joins the devices to the server. Actually accessing the devices was easy because we used the pre-existing interfaces that came with each device. Creating a timer that constantly polled the HackyStat server and according sent out the right "action" was the hardest part.

The team

The team consisted of Sonny, Shao Xuan, and I. I worked primarily on the setting up the Nabaztag bunny and then set up the online User Interface. Setting up the Nabaztag was simple enough because Shao Xuan set up most of the program for the Orb so I just had to follow his lead. As for the UI I jumped between Flash and Flex and JSP pages. I eventually ended up with JSP pages because Flash and Flex were client side software which made it difficult to access files on the server, edit, and post it back to the server. I also had to learn a whole new framework in a little less than a month. The online User Interface ended up becoming its own project at the end of the semester. The project is called the Ambienthackystat Wicket UI. Shao Xuan ended up leaving the team toward the end of the project so Sonny and I finished the Ambient HackyStat project early to work on the user interface project. Here's a link to that new project. AmbientHackystat-ui-wicket

What I worked on

For this project I work mostly on creating the interface for the Nabaztag Bunny and the user interface. The user interface itself because its own project because it basically became something so big that it warranted its own project page. You can view that page here: AmbientHackyStat-ui-wicket. As for myself, I also had to add a few methods so that the UI could work well with this project. One of the things I would like to hightlight is the uiStart method.

The uiStart method is basically the method that starts the Ambient server that controls the ambient devices. The regular start method needs a configuration file to start the server correctly. For the UI, we wanted to make sure that the configuration file was not needed therefore we needed to start the server without that file, we needed a new start method hence the uiStart. My solution was to start it with the username and password of the user so that we could create a new configuration file for new user or search for an old configuration file for older users. 


public boolean uiStart(String username, String password) {
String filePath = "";
this.username = username.replace('@','_').replace('.', '_');

filePath = "\\xml\\users\\" + this.username + ".xml";
filePath = System.getProperty("user.dir") + filePath;
File file = new File(filePath);
System.out.println(filePath);
if (!file.exists()) {
return false;
}

if (filePath != null && !filePath.startsWith(System.getProperty("file.separator"))) {
filePath = System.getProperty("file.separator") + filePath;
}
setConfigurationFilePath(filePath);
try {
this.initialize();
for (TriggerActionTimerTask timerTask : this.getTriggerActionTimerTask()) {
timer.schedule(timerTask, 0, timerTask.getInterval());
}
return true;
}

catch (Exception e) {
e.printStackTrace();
this.timersTaskList = null;
return false;
}
}


Links

Here is the link to the smart bunny's site: http://www.nabaztag.com/en/index.html

And the link to our Google project page:
http://code.google.com/p/ambienthackystat/