Phil 4.13.12

8:30 – 2:30 FP

  • Getting re-acquainted with the rendering code
  • Fixed my base class problem with calling setup in the derived class. Still not sure why I can’t call the subclass from the superclass in C++.
  • Paper is done and submitted!

Mike 4.13.2012

  • Server backups this morning
  • Heard back about my firewall change request,  apparently it has been implemented but I was still unable to connect to the server.  I asked where else the connection may be getting blocked and he said he would get back to me.
  • At the mill learning about AspectJ, an AOP extension for Java, as I have run in to it in a number of examples.  It looks pretty neat so far.

Tom 4.12.2012

Start: 10:30

  • Built one of the boards.
  • Tested the voltage levels.  The branches output 12v and 5volt respectively.
  • Setup a sketch to test the boards
  • Tested leads to figure out which sensor and speaker they are for.  They are sorted left to right.

end: 6:30

Mike 4.12.2012

  • Usual server backups
  • My firewall change request was approved but not implemented yet
  • Still working on connection Hibernate and MySQL through a RequestFactory, lots of dependency issues.  A few notes:
    • As of GWT 2.4, in order to use RequestFactories a 3rd part validator must be run as part of the build process: link
    • There’s a class loader issue with Hibernate 4.0+ and the GWT jetty dev server.  There are a few workarounds:
      • Revert to Hibernate 3.6
      • Don’t use the dev server and simply deploy to something like tomcat or jboss
  • It works, doesn’t use best practices, but it works.

Phil 4.12.12

8:00 – 12:30 CSIP

  • Started the day trying to hook up hibernate to the information_instance.TABLES table and got the following error:
  • This is attempting to use the following class
    package com.sample.information_schema;
    
    import java.math.BigInteger;
    import java.util.Date;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    
    @Entity
    @Table(name = "TABLES")
    public class TableMySql {
    	@Column(name = "version")
    	private BigInteger version;
    
    	@Column(name = "table_rows")
    	private BigInteger table_rows;
    
    	@Column(name = "avg_row_length")
    	private BigInteger avg_row_length;
    
    	@Column(name = "data_length")
    	private BigInteger data_length;
    
    	@Column(name = "max_data_length")
    	private BigInteger max_data_length;
    
    	@Column(name = "index_length")
    	private BigInteger index_length;
    
    	@Column(name = "data_free")
    	private BigInteger data_free;
    
    	@Column(name = "auto_increment")
    	private BigInteger auto_increment;
    
    	@Column(name = "checksum")
    	private BigInteger checksum;
    
    	@Temporal(TemporalType.DATE)
    	@Column(name = "create_time")
    	private Date create_time;
    
    	@Temporal(TemporalType.DATE)
    	@Column(name = "update_time")
    	private Date update_time;
    
    	@Temporal(TemporalType.DATE)
    	@Column(name = "check_time")
    	private Date check_time;
    
    	@Column(name = "table_catalog")
    	private String table_catalog;
    
    	@Column(name = "table_schema")
    	private String table_schema;
    
    	@Column(name = "table_name")
    	private String table_name;
    
    	@Column(name = "table_type")
    	private String table_type;
    
    	@Column(name = "engine")
    	private String engine;
    
    	@Column(name = "row_format")
    	private String row_format;
    
    	@Column(name = "table_collation")
    	private String table_collation;
    
    	@Column(name = "create_options")
    	private String create_options;
    
    	@Column(name = "table_comment")
    	private String table_comment;
    
    	public BigInteger getVersion() {
    		return version;
    	}
    
    	public BigInteger getTable_rows() {
    		return table_rows;
    	}
    
    	public BigInteger getAvg_row_length() {
    		return avg_row_length;
    	}
    
    	public BigInteger getData_length() {
    		return data_length;
    	}
    
    	public BigInteger getMax_data_length() {
    		return max_data_length;
    	}
    
    	public BigInteger getIndex_length() {
    		return index_length;
    	}
    
    	public BigInteger getData_free() {
    		return data_free;
    	}
    
    	public BigInteger getAuto_increment() {
    		return auto_increment;
    	}
    
    	public BigInteger getChecksum() {
    		return checksum;
    	}
    
    	public Date getCreate_time() {
    		return create_time;
    	}
    
    	public Date getUpdate_time() {
    		return update_time;
    	}
    
    	public Date getCheck_time() {
    		return check_time;
    	}
    
    	public String getTable_catalog() {
    		return table_catalog;
    	}
    
    	public String getTable_schema() {
    		return table_schema;
    	}
    
    	public String getTable_name() {
    		return table_name;
    	}
    
    	public String getTable_type() {
    		return table_type;
    	}
    
    	public String getEngine() {
    		return engine;
    	}
    
    	public String getRow_format() {
    		return row_format;
    	}
    
    	public String getTable_collation() {
    		return table_collation;
    	}
    
    	public String getCreate_options() {
    		return create_options;
    	}
    
    	public String getTable_comment() {
    		return table_comment;
    	}
    }
  • to talk to hibernate using the following configuration file:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory name="MySqlInformationSchema">
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/information_schema</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">edge</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.default_schema">information_schema</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>
    <property name="connection.pool_size">1</property>
    
    <!-- List all the annotated classes we're using -->
    <mapping class="com.sample.information_schema.tableMySql"/>
    
    </session-factory>
    </hibernate-configuration>
  • Well, connecting to the db with jdbc instead of running through Hibernate got things up to speed quite quickly. I am running arbitrary queries against the databases (including information_schema, which Hibernate chokes on). The results are wrapped in objects that rules can be run against.
    •  Handle what happens when a null is returned by WrappedMap.getObjectByName().
    • Determine primitive type and handle accordingly
  • Looks like my ability to charge the CSIP contract ran out on the 9th. Need to figure out what to do with the 12 hours I charged since then. Jim is working on it. Ok. Charge half of today and all of yesterday and stop.

12:30 – 4:30 FP

  • Worked on paper, then lost the ability to scroll past page one. Going to try this at home…

7:00 – 9:30 FP

  • Finished incorporating paper changes and sent back to Dr. Kuber.

Tom DeVito 4.11.2012

Start: 12:30

  • Removed test classes
  • Simplified initialization and use of classes by taking out parameters which were not needed in the final version
  • Started writing sketch to communicate with computer simulation
  • Might have counted my chickens too soon.  I forgot that I undated the Arduino software.
  • The error I was working around that only allowed 127 bytes to be sent seems to have been fixed.  It is causing problems with the messaging.

End: 5:30

Start 7:00

  • Fixed all the methods to use 128 bytes again.  Messaging is working but data transfer is still messed up.
  • Added back in code for data transfer testing.  Data transfers fine, the buffer doesn’t seem to be loading properly when it gets data from the data dictionary.
  • Solved the issue with the buffer loading but now it continues to try to send when no data is present.
  • Probably need about an hour to finish working out the bugs.  I will have this up as soon as possible.  The rest of the sketch will probably take a little longer.  I thought I was going to be working on that now instead of troubleshooting the data classes.  Hopefully still by midday as it is mostly done.

end: 11:00

Mike 4.11.2012

  • Usual backups at site this morning
  • Fixed an issue with Tomcat on the production server, it seemed to be stopping whenever I logged off.  Not that i can tell since the port is closed but it was not running when I would log off / back on.  Now it does.
  • The DNS issue has been resolved, my firewall change request is still pending
  • Denise P. emailed me asking for documentation on “installing casport and pki enabling” a server.  I responded with links to each groups list of instructions and she seemed happy with that.
  • Back at the mill working on linking up my gwt widget to my hibernate managed database using a GWT RequestFactory service layer, so far it compiles but that’s about it

Phil 4.11.12

8:00 – 4:00 CSIP

  • Working on building a Drools test case structured around wrapped Maps.
  • Built the wrapped objects and Maps, and have the sandbox created
  • And here’s how you do it. Probably not as efficient as it could be, but pretty general case.
    #created on: Apr 11, 2012
    package com.sample
    
    #list any import classes here.
    import com.sample.WrappedObject;
    import com.sample.WrappedMap;
    
    #declare any global variables here
    
    dialect "java"
    
    rule "rule Floats less than six"
    
        when
    
            WrappedMap($wo:getObjectByName("myFloat")) // condition
            eval($wo.NumericLessThan(6))
        then
            System.out.println("n--------------------------------n"+$wo.toString());
    
    end
  • Need to add some methods for handling String compares and for other types of objects
  • Working on getting Hibernate to talk to information_schema in mySql. I’m trying to use the eclipse tools, and I get this error:
  • Stopping for the day. Will talk to Dong about this tomorrow.

Mike 4.10.2012

  • Usual back ups this morning
  • Our SSP got a 1-month extension so it did not expire today.  As far as I know I have completed everything I’m responsible for.  There was a flurry of emails going around about tasks for other people.
  • Finally heard back from the help center about our production server.  I can’t connect to it via HTTPS for several reasons…
    • The DNS is pointing to the wrong IP address and the tech doesn’t know how to fix that but is sure someone else does
    • I need to submit a ticket to the production firewall team and have a exception put in.  The firewall team is a completely separate group than the person who is answering my ticket
  • So I submitted a firewall exception request
  • I contacted Allen N., the guy who set up our VMs originally last May, and asked him about the DNS problems.  He helped me submit several more tickets to get that resolved.
  • Back at the Mill I was able to create, save, and reload some hibernate java objects
  • Looked back at some old Dynamic Hibernate stuff for Phil: closet full of wheels

Phil 4.10.12

8:00 – 4:30 CSIP

  • Now that I have my Hibernate Eclipse plugins working, back to chapter 9.
  • Well, the plugins work fine, but when I tried to add an element to a query, the build broke and I was unable to get it to work again, even after restoring to the earliest version. Went on to chapter 12, but the DB appears to broken there too.
  • According to Dong, this is because the HSQL instance is not persisted in the test, so all the data drops out. Switching the dialect to MySQL, which runs as a service on my box fixed all problems but one – an exception that said the DB couldn’t be reached. Which was odd, because it was accessed and the tables were created and populated. Go figure.
  • Talked to Mike about his experience with dynamic object creation using Hibernate. It looks pretty straightforward, as long as you have a ‘generic’ object that is wrapped around Map(s) (Collections?) of some kind. Now I need to see if I can build a Drools engine that will reason over elements in a collection contained in an object.

Thomas DeVito 4.9.2012

Start: 10:00

  • Cleaned up data dictionary classes
  • Cleaned up Controller base class
  • Cleaned up Amp and Midi classes
  • Cleaned up Com classes

End 5:00

Start: 7:00

  • Finished Audio Controller
  • Cleaned up Command response and state classes
  • Everything should be good, just need to do some testing and troubleshooting as I left the extra arduino in the office.

End: 9:30

Mike 4.9.2012

  • Usual backups this morning
  • Contacted the help center at site to check on the status of my ticket requesting the production server to be opened up…. they will be back to me (I believe the person I spoke to submitted a ticket to check on the status of my ticket)
  • Back at the mill working on a fully wired SuggestionBox (user types in a text input, as the user types the incomplete entry is sent to the server and queries the database for possible results, then the matches are displayed below the text input on the client).
    • I started with a very basic implementation that generated suggestions on the client
    • Now I’m going to try starting at a hibernate managed database table and work my way to the client

Phil 4.9.12

7:30 – 1:30 FP

  • Seminar. Discovered I can resubmit the CHI paper to UIST. Started working on that.
  • Ordering parts for the boards, which came in Friday

1:30 – 4:30 CSIP

  • Continuing to Hibernate
  • Chapter 8
  • Chapter 9, with a short trip to chapter 11. I finally found out how to install Hibernate Tools without crashing and burning. Go here, and drag the link to somewhere on your eclipse workspace that doesn’t have text entry (it’s an URL), like the border. Presto! Magically installing plugins.
  • For reference, because I think this may be the way this effort finally goes. And hey, I always wanted to write code that generated bytecode…
    • ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form. Provided common transformations and analysis algorithms allow to easily assemble custom complex transformations and code analysis tools.
    • ASM offers similar functionality as other bytecode frameworks, but it is focused on simplicity of use and performance. Because it was designed and implemented to be as small and as fast as possible, it makes it very attractive for using in dynamic systems.

Mike 4.6.2012

  • Usual backups this morning
  • Figured out how to upload my server vulnerability scan to the SSP documents and immediately received questions from people asking “how did you do that?”
  • Back at the mill working on GWT things: Finished my sandbox framework, simply a framework site for displaying and testing simple components
  • Added a built in gwt SuggestBox to my sandbox just to make sure it works
  • Played around with an autocomplete demo found here and implemented it in my sandbox