Archive for the ‘Ideas’ 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 13 @ Sun

Thursday, September 11th, 2008

Today we made the first of our formal design decisions for WonderBlocks. An instance of the WonderBlocks component will have its own cell in-world. This cell will hold all of the individual WonderBlocks, and all interactions with WonderBlocks will occur inside it. The (Wonderland WLC XML) information associated with the cell will simply include the cell’s size and position in-world.

We’ve also given some thought as to how WonderBlocks themselves will be persistently stored between server restarts. We’ve decided to use Java XMLEncoder to serialize each WonderBlock object into rows in an arbitrary (not Wonderland-specific) XML file. The Wonderland server will read from this file to initialize the WonderBlocks component, and will write the state of the component back out to the XML file whenever a user manually presses a ‘Save’ button inside the application. This way, the most current state of the application will be consistently/persistently stored on the server between server restarts.

We’ve created a JavaBeans class that represents a WonderBlock, and have successfully been able to use XMLEncoders/XMLDecoders to write instances of it out to XML files and read them back in from XML files.

Tomorrow we need to start thinking about how GROUPS of blocks will be stored, and not just each individual block. Jordan also gave us a hint: designing the message protocol that will be used between the Wonderland clients and server to synchronize WonderBlocks events is the first big landmark. We’ll have to get started on that soon, as well.

Finally, we saw an informative presentation about DarkStar that explained its purpose and a little bit of its inner workings. The presentaiton was made interesting by the fact that it drew heavily on the example of Project Snowman to explain DarkStar concepts.

Interlude: 3D Data Visualization Brainstorm

Friday, August 29th, 2008
Ideas for Data Visualization in 3D

Ideas for Data Visualization in 3D

It’s worth mentioning that we’ve been brainstorming ideas for displaying data in a 3D environment. Just for fun, here’s a picture of some of our whiteboard sketches. Interpretation of them is up to you, the reader. :)