Archive for the ‘Personal’ Category

All Kinds of News

Monday, October 13th, 2008

We’ve been so busy that we forgot to update this blog!

Here’s a breakdown of some things that we’ve done/are doing since the last blog post:

  1. Flattened some minor bugs in WonderBlocks:
    • Dialog Display – When editing Blocks or Connections, sometimes the controls inside the two popup dialog boxes would not be drawn correctly, or would be redrawn after clicking inside them, etc. This was fixed by quickly displaying the dialog, hiding it, and then displaying it again, which seems to force a repaint and resolved this issue.
    • Synchronization – We found a bug during testing where IDs assigned by the server and client could fall out of sync after a specific combination of WonderBlocks deletions, etc, was performed. This was remedied with ID synchronization methods in the Block Manager and Block Connection Manager classes, that are called whenever the managers are initialized, as well as whenever new Blocks or Connections are created. Adding these methods also allowed us to remove redundant code elsewhere in the manager classes.
  2. Created a demo world to showcase the HTML Viewer and WonderBlocks for use as part of our talks/presentations (more on those later.)
  3. Attempted to get our demo world running on Gary’s research server. Although things are more or less working now, there are still a few issues that need to be ironed out:
    • Dialog Boxes and Java Versions – Earlier, WonderBlocks required Java 1.6 in order to compile, because of code that was autogenerated by NetBeans for the client-side dialog boxes. However, Java 1.6 was causing huge issues with Java Web Start and Wonderland, so we set to work trying to make WonderBlocks compile under Java 1.5. After a lot of googling, this turned out to be very simple: NetBeans has a “Layout Generation Style” setting in its GUI builder, which had been set to “Java 6″ for WonderBlocks (go figure.) Changing this option to ‘External Swing Library’ for both dialog boxes made our code Java 1.5 compatible.
    • @Override – the Java 1.5 compiler complains that the messageReceived() functions in the WonderBlocks client and server classes, annotated with @Override, don’t override functions in a parent class (except they do,) and removing the annotations allows the code to compile.
    • JAR Signing and Compile Time – A complete clean build on the research server takes around 68 minutes to complete under Java 1.5, but only around 20 minutes under Java 1.6. For some reason, JAR packing takes much, much longer when using the Java 1.5 compiler. It might be good to know why.
  4. Tomorrow, we’re giving informal presentations about our MQP work to prospective Computer Science students at WPI (during two timeslots.) We’re going to just do a short talk followed by a live demo using our demo world in Wonderland. Although we were hoping to be able to use Gary’s research server to give the demo, it looks like we’ll have to run a Wonderland client/server locally on a laptop, since our setup on the research server is still not reliable enough for a presentation. We’re going to have a meeting with Gary in between our two presentations.
  5. On Wednesday, we’re giving a (slightly more formal) presentation to all of Sun Labs (as well as the other Sun MQP groups) about our MQP work. Tomorrow after our presentations are over, we’ll have to finish up our OpenOffice slides for Wednesday’s presentation. We’re doing a ‘presentation rehearsal’ with Jordan on Tuesday.
  6. Finally, and randomly, here’s a list of features that we would have liked to add to WonderBlocks if we had more time to work on it:
    • Whenever there’s a WonderBlocks state change, affected Java3D BranchGroups should be individually added/removed from the display, instead of completely redrawing all Blocks and Connections like our current implementation does.
    • Custom data fields for blocks/connections.
    • Draggable Blocks in Edit Mode.
    • Error and status messages that don’t replace the ‘Edit Mode’ or ‘Delete Mode’ status messages, but display concurrently with them.
    • ‘Pretty’ Connections, using cylinders that are oriented using Euler angles rather than Java3D lines.
    • Arrows (cones?) for Connection direction indicators (instead of spheres,) also requiring use of Euler angles.

Phew, that was a lot of writing! This week marks our last week at Sun, as well as the last week of A Term 2008 at WPI. The end is near! (Unless you count writing our MQP paper, which we’ll be doing next term!)

Day 11 @ Sun

Tuesday, September 9th, 2008

Just a quick one, to make up for yesterday’s behemoth post:

Today was spent musing over several ideas for the next Wonderland component we’re going to build for the team room. A few ideas were tossed around with Nicole and Jordan. Gary Pollice is going to meet with us at Sun tomorrow. After the meeting, our ideas will hopefully be focused and clarified (and finally divulged on this blog. ;-) )

Days 9 and 10 @ Sun

Monday, September 8th, 2008

Day 9

After work on Thursday, Gerard injured his foot playing softball, so he couldn’t participate in Friday’s MIT field trip (more about that in a second.) Gerard is also working from home today and tomorrow. All of us are wishing Gerard a speedy and complete recovery!

On Friday, Josh, Nicole, and Jordan ventured to MIT to attend a talk by Li-Te Chang and Steve Rohall of IBM on Bluegrass, their virtual world designed to support collaborative software development. After arriving in Cambridge, we met up with Chris Schmandt of the Speech + Mobility Group at MIT Media Lab, and bought lunch from the food trucks. We then headed over to the media lab and inspected and played around with a few of the projects they’re working on in there. Neat stuff.

Then came the talk on Bluegrass. Essentially, Bluegrass is a plugin for IBM Jazz that has an extremely similar purpose to the overall vision for our MQP. Bluegrass integrates tightly with Jazz features to provide a 3D environment that attempts to unify the higher-level aspects of working in a software development team, such as enabling team members to easily notify each other of what they’re working on, making design decisions via meetings, etc. When a software devleopment team is comprised of 120 people (the scale mentioned in the talk,) the team is naturally broken up into subteams in real life, and this is reflected in Bluegrass.

Bluegrass employs an interesting ‘forest in a basin’ metaphor. Each team gets an area in the virtual forest complete with a large tree and gazebos for [sub]team members to post materials on, for anyone else to see. Status messages ‘bubble up’ from each subteam’s area, describing what members of that subteam are doing, so seeing what a subteam is working on is as easy as walking to their area in the forest. The ‘basin’ part of the metaphor is also interesting. Because subteams are most likely heirarchically related, the most general/’highest’ subteam in the heirarchy appears in the middle of the forest. Teams directly related to that team are arranged in-world in a circle around it, and so on and so forth.

Many more features of Bluegrass were described in the talk, too many to name here. (NOTE: Josh’s first-person opinion is coming up now.) I was impressed by the attention to detail in Bluegrass’s overall design. It seemed like the developers had a very exact purpose for Bluegrass in mind throughout the design process, and stuck to it, which contrasts with our project where we’ve hit the ground running and have made design decisions on the go. I’m sure the Bluegrass developers took a lot of time to perfect the forest metaphor and to think about how to convey what could be overwhelmingly complex information in the simplest ways possible, all while taking advantage of the 3D space. I’d also like to note that I was impressed by the very intelligent questions that some of the audience members asked the developers, although I couldn’t come up with any such questions myself.

All in all, the talk and the day in general were both great experiences, and the talk certainly provided inspiration to draw from as our Wonderland MQP progresses.

Day 10

Gerard simultaneously nursed his foot and worked from home today, attempting to merge the very large number of files created by WorldBuilder that describe our actual virtual team room. Josh put the finishing touches on the HTML viewer, and is now (for better or for worse) calling it complete. The only change that we’d potentially like to make to it at this point would be to give it a catchier name then ‘the HTML Viewer.’ We’re still tossing around ideas for names (‘webshot app’, ‘netposter app’, etc) but haven’t settled on one yet. Let us know if you have any name ideas in the blog comments!

Josh also had an insightful meeting with Nicole and Jordan this morning, regarding the next component we should build for use in our Software Engineering Team Room. We scrapped some old ideas and came up with a new and exiciting one. We won’t divulge our new idea just yet, but just the preliminary writing about/sketches of the the idea already occupies three pages of yellow legal pad paper. Stay tuned!

Something Smells Like Progress: Day 4 @ Sun

Thursday, August 28th, 2008
First Breakthrough: HTML Rendering In-World

First Breakthrough: HTML Rendering In-World

Today, we got HTML to render natively in-world! Don’t get too excited yet, because so far, our HTML Viewer component is a slightly modified version of Nigel Simpson’s Wonderland PDF viewer. It can only display whatever web page URL is hard-coded into the source code. Still, we’re very excited about this and will be rounding out the Wonderland HTML Viewer component during the coming days.

In any case, today was a pretty busy day for us. This morning, we called Nigel to ask him some specific questions about the logistics of modifying his PDF Viewer component to display web pages. Nigel was extremely helpful, and we’ll continue to ask him quetsions as we undoubtedly run into issues while completing the HTML Viewer.

We also (obviously) spent some time refactoring Nigel’s code to get it to render HTML in-world, and we were able to construct a (very) basic example demonstrating that making an HTML viewer for Wonderland is definitely possible.

The Cobra HTML rendering engine we’re using to accomplish this is released under an LGPL license, but it makes use of Mozilla’s Rhino ‘JavaScript for Java’ library for its JavaScript functionality. Rhino is released under a dual MPL 1.1/GPL 2.0 license. Amusingly, Rhino includes a library from Sun that it uses for debugging. We discussed these various licenses with Jordan, and how they might interact or potentially conflict with Wonderland’s own dual license. Jordan said that Cobra would have to undergo a license review by Sun’s legal department before it would be allowed to officially be included in Wonderland, but this is understandable.

Other things that happened today included a department “Tea” at 3:00, and we’ve scheduled weekly meetings (that will happen either in Wonderland or in person) with our WPI advisor, Gary Pollice. We forgot to mention that we got our badges yesterday! We feel official now. :-)

Day 3 @ Sun

Wednesday, August 27th, 2008

We started the day by reading through Nigel’s notes on Wonderland’s PDF viewer, in order to prepare for our meeting with him tomorrow.

We then talked with Jordan and John about the method our HTML viewer would use to save images of web pages (to be used as textures in-world.) It seemed that the easiest way to scrape image data from Cobra would be to have Cobra render a page onscreen, convert its output to an image, and then save that image as a file. This approach is frowned upon for a number of reasons. The biggest problem is that if this code were to be theoretically integrated into Wonderland, pages would have to be rendered inside a hidden X11 session using Wonderland’s Server Master Client. This would have defeated the main purpose of creating the HTML viewer component in the first place: to ELIMINATE the act of scraping images from X11 applications.

Fortunately, after some heavy Googling, we found code on Martin Brown’s blog that significantly alleviated our fears. His code demonstrates how to make Cobra render directly to an image using headless AWT. We slightly expanded his code and added required error checking, and ended up writing a simple Java method with this signature:

public static void takeWebshot(String uri, Dimension size, File output) {}

This method uses the Cobra engine to save a PNG screenshot of a given web page. This is certainly a step in the right direction! Jordan thinks we may even be able to forgo saving PNG images, and paint AWT BufferedImages directly on objects in-world. We’ll have to continue working on the HTML viewer component and find out.

Also, today we saw a presentation from Sun’s chip design department, and got tours of two of their data centers. The presentation was very informative because none of the WPI MQP students knew too much about the SPARC architecture or about Sun’s processor line.

Tomorrow will be very busy indeed…watch out for tomorrow’s blog post!

Day 2 @ Sun

Tuesday, August 26th, 2008

Today was our second day at Sun. After some further research, Josh and I decided to use the Cobra HTML rendering engine for our Wonderland ‘web page component’. This engine was the most accurate and efficient one, and is easy to implement.

Jordan met with us in the early morning and discussed with us how rendering would work in Wonderland. AWT and Swing cannot be used in world (this will change in 0.5), so Jordan recommended saving rendered HTML as an image and then using that image to texture in-world geometry. So far we were able to write code that uses Cobra to render web sites inside a JPanel, and then save the contents of the JPanel as a PNG image.

We will also be meeting with Nigel on Thursday, inside Wonderland. Nigel created Wonderland’s PDF viewer component. During our meeting, Nigel will educate us about how the PDF viewer works. In the meantime Nigel has sent us very detailed notes about the PDF viewer so that we can do some research before our meeting.

Josh and I also continued to brainstorm about how to visualize things like html pages and statistics in a 3D environment. We came up with some interesting ideas and will likely post photos soon.

Additionally, we looked at the  Building a World from WFS tutorials to see if we can make headway towards our team room goals.

Also, after some diligent searching, Josh and I were given high quality speakers for music…thanks Nicole!

Day 1 @ Sun

Tuesday, August 26th, 2008

Today was all of the WPI MQP Students’ first day at Sun.

Gerard and I have our own lab to work/collaborate in, and we each have our own Sun workstation running Ubuntu 8.04, with (much appreciated) 24.1″ LCDs.

In the morning, we met with Jordan, Nicole, and John to talk about the focus of our project. We described our overall vision of the Software Engineering Team Room to them, and then discussed a couple of ideas about what to tackle first.

We decided to start by building a single component that could be useful for both our team room project and Wonderland in general: an in-world HTML rendering engine component that doesn’t depend on an external web browser. In theory, this HTML rendering engine component could work in a similar fashion to Wonderland’s PDF viewer. This component could basically turn dynamic web pages into ‘posters’ in a team room; whenever team members enter the room, current Hudson build statistics could be displayed on a wall, etc.

We’d like to have this component make use of an EXISTING open-source HTML rendering engine, rather than write our own. We’ve played with a few engines, and so far Cobra looks like the most promising one, but further research is needed.

We spent the remainder of the day following and completing Jordan’s tutorials about creating custom cell types in Wonderland, and starting to do research for the aforementioned HTML rendering engine component.

Day 3 @ Boot Camp

Thursday, August 21st, 2008

Today, Derek White from Sun gave a presentation about Sun Spots and what makes them tick. Later on, we got to play with Sun Spots. We first experimented with the preloaded ‘bounce demo’ on the Sun Spots, and then attempted to program them using NetBeans and the Sun Spot SDK. We managed to get a few of the demo programs that come with the Sun Spot SDK to compile and deploy to a Sun Spot. Neat stuff!

Gerard and I have started thinking about ideas for our project proposal, and are still attempting to complete the Wonderland tutorials that Jordan asked us to look at.

Day 2 @ Boot Camp

Wednesday, August 20th, 2008

Today we heard from Professor Pollice about the history of Sun Microsystems. Our Sun liaison, Jordan Slott, also gave a presentation that discussed what Project Wonderland is, as well as a high-level overview of how Wonderland works internally.

To complete the homework assignment Jordan gave us, we set out to build and run Wonderland and then follow the first three parts of a tutorial about extending Wonderland. Although we were able to build and run Wonderland and play around in the default world, we were unable to successfully complete the first ‘extending Wonderland’ tutorial.

We followed the tutorial’s instructions as closely as we could. Although we ended up creating a new Wonderland world for an avatar to play around in, the whole point of the tutorial was to be able to add a sphere to the world, and no sphere was displayed in-world for us.

In no particular order, here’s a list of random ideas for extending Wonderland that we discussed:

  • X-Windows –> Java
  • Flickr (already implemented,) Facebook, Twitter stuff?
  • Team Room apps –> Dev Tools
  • Bandwidth detection for automatic audio quality adjustment
  • Easy import feature for applications (does this exist?)
  • Airplanes in Wonderland
  • Hooks for usage statistics
  • Continuous file integration status

Day 1 @ Boot Camp

Monday, August 18th, 2008

Today was officially the first day of the Sun Microsystems WPI MQP. This week, all Sun MQP students are participating in “Sun Boot Camp” at WPI. We’ll actually start working at Sun next week. Today we heard Professor Heineman and Professor Pollice–our MQP advisors–discuss various administrative topics. Professor Heineman also conducted a teambuilding activity involving status injective graphs.

Jim Waldo visited us from Sun today, and gave all of us an overview of what Project Darkstar is as well as some of the development considerations behind it. Jim told Gerard and I that we should research Darkstar further and become familiar with it because Wonderland is built on top of it.

For homework, I read the paper “Technology and Courage” by Ivan Sutherland.