All Kinds of News

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!)

Comments are closed.