jEAC TODO
Major tasks:
- Finish UI rewrite
- Continue hardware rewrite
- Begin plugin architecture
- Write ECJ plugin
- Cleanup
UI tasks
- BUG: fix connection manager crash-on-remove bug
- simplify device name/class reporting (too many conflicting methods)
- connection manager integration (nodemap)
- data reporting layout: 2D/3D/raw, LLA
Hardware tasks
- Cleanup
HardwareManager - Implement
Driverinterface - Implement
Deviceinterface - Offline driver
- Static mode
- Random mode
- Differential mode (?)
Other tasks
- set up
contribdirectory (non-GPL) - figure out classloader well enough to hack together a plugin system
- ECJ panel layout
SnakeEvolverintegration- Hardware communication
- Genome layout
Cleanup
- cleanup, generate, publish new
javadoc - redesign SF site
- cleanup local documents
- ant build script (remove
BUILD/) - fix repository
- find and tag old builds (1.0.0, ???, 1.1.1)
- tag trunk appropriately
- merge 1.3 branch back to the trunk
- tag release
- create true 2.0 maintenance trunk
Ideas for v2.0 (old)
HAL -> Driver- License drivers under the LGPL
- Extract coordinate translation routines
- Convert coordinates to Points
Convert driver array to List or LinkedListAllow regeneration
- UI
Convert driver scan toJProgressBar
- Inline console (
Console.out.println)
GA package comparison
- JGAP
- License: GPL
- Scope: GA
- Configuration: Java
- Dev: Active
- n-genes
- License: GPL
- Scope: GA
- Configuration: XML
- Dev: 2005
- ECJ (winner)
- License: Academic Free License v3.0
- Scope: Evolutionary algorithms
- Configuration: File
- Dev: 2006
- unEvo - Interesting...
Snake TODO
Annoying quirks
Convert to self-contained JPanelFix rendering issuesFix viewport (300x300)Start locationFix self-collision detection
Parameters
Center creaturePrevent creature growthAbstract parameters:Unit sizeColorsDefault settingsWindow configuration
Replace edge detectionAdd an option to disable momentum (no automoves)Convert length array to a linked list
Other stuff
- MVC pattern in Java
- Java .EXE creation
- Java 1.5 API
- Java Gnuplot API
- SVN Plugin for Eclipse
- Import External JARs
- Swing look and feel
- Plotting:
- 3D Plotting (round 2):
- Runtime.exec() junk
3D Plotting
Providing a continuous snapshot of the voltage gradient on the sheet is going to be one of the most difficult aspects of JEAC. Appropriate visual feedback is critical to the success of JEAC as an interface.
Java offers an Advanced 3D API, but there does not appear to be an OSX build. While it would be useful to have well-implemented 3D algorithms to rely on, platform independence is an important requirement of the project.
Gnuplot is available on many platforms, and has become the tool of choice for gradient visualization. The Java-Unidu package offers a gnuplot wrapper, which, upon review, is nothing more than a dressed-up Runtime.exec() call.
Upon reflection, farming out to an external tool would likely be a less-than-optimal solution. Any external tool would introduce dependencies, and decrease the portability of JEAC. Further, an external tool would limit feedback to what are essentially static views of the voltage gradient. JEAC strives to be a "near real-time" view of the gradient. Thus, an integrated plotting algorithm is necessary.
Loading Frame
The loading frame is a progress bar for v1.2. Right now, it's just hacked in there. Going forward, I need to clean up the code a lot. The driver is currently incrementing the progress. That's a bad violation of backend and UI. Here's a general algorithm for the future:
- USBDriver returns a list of devices
- jEAC asks USBDriver if each device is valid
- If yes, jEAC asks USBDriver for its print name
- If not, the device is ignored
- jEAC increments the progress bar
I also want to split the loading frame from the progress bar code. A generic progress bar with auto-increment support will probably be useful when working on v2.0.
UI management
Finally, hacking this together brings up an interesting issue. When is it appropriate for a class to extend JPanel/JFrame and when is it appropriate to explicitly name Swing components? JEAC extends JFrame. LoadingFrame used to, but now it is self-contained. Something to think about going forward.