Monthly Archives: April 2012

Phil 4.17.12

8:00 – 4:00 FP

  • Moved the texture file name for TexturedCollisionCube to the constructor. I’m going to have multiple cubes to interact with, and need to be able to show different “surfaces’. I need a ‘soft’ looking texture.
  • Found some soft looking textures. Next, I need to have some way of determining what the properties of each type of collision are.
  • Adding CollisionTone class. Nah, I need to integrate that into the FingerIO class. We’ll do that tomorrow. I also want to add some kind of state output. Maybe use the soundText field?

Tom DeVito 4.16.2012

Start: 10:15

  • Still haven’t figured out why the arduino is having trouble receiving.
  • Tested the method independently which recieves data and it seems to work as intended
  • Copied all except the constructor from the PC version as this side is working properly
  • A test of the Serial.available() method showed that it returns proper values but still stops at 127
  • Tried reducing the packet size to 64 bytes.
  • Its still getting stuck on receiving.  If it got to processing it would send and update to the PC
  • PC side seems to have no problem sending or receiving.
  • I did a pass on Wednesday which worked.  I don’t recall changing anything since then.
  • Fixed a problem that sometimes the Arduino would initialize in a invalid state.

End: 6:15

Start: 8:00

  • I didn’t spend too much time on it but I was able to get the arduino to receive properly.  For whatever reason I had to put the message before the data.  I am not sure why considering it worked fine the other way but at least its working.
  • There are still a few things I need to do, I was not expecting to have to spend so much time solving this.  The main thing is packaging it with the DataDictionary so you can use it easily without tons of code.
  • The way it will work is you create the entries using the subscribe or publish methods, while doing this you determine if it is local. The easiest way I found to keep the datadictionary synced without having to use the set commands all the time, is to have a sync method in the post process which will set the variables to whatever their local container values are.  Anything not owned by the class can be accessed directly through the dictionary, setting is only more complicated because we want to track if they change or not.  Everything that is dirty and remote gets sent across the wire.  Remote might not be the best word for this, so I am going to change the parameter to isShared.

End: 9:00

Mike 4.16.2012

  • Usual backups at site
  • No word back from the firewall person, submitted a new ticket assuming the firewall port is open but something else is wrong
  • Contacted by Jessica R. with a COGNOS data dictionary (approx. 3,500 rows) briefly describing every field available in the COGNOS database.  She suggested I go through and and try to match up their tables / columns with ours.  I looked at it briefly and then requested access to the actual data to make it less of a guessing game.
  • Back at the mill looking at AspectJ examples
  • Also reviewing the additions made to GWT in Action

Phil 4.16.12

8:00 – 4:00 FP

  • Dealing with a few left over paper issues. Then on to integrating the code? Otherwise, I’ll work on getting TexturedCollisionCube working and handling rotations.
  • Textures work. Checking through rotations. Fixed! It turns out that I was multiplying the model matrix and the collision matrix in the wrong order. Took a while to find, but it seems to be working nicely now.

Tom 4.13.2012

Start: 10:00

  • Sensors circuits work
  • The heat sink of the voltage regulator burned my finger.  It has an overheat cut-off so it shouldn’t damage anything if it gets to hot.  That said its best to give it more surface to dissipate the heat to.  Its designed to be bolted to the board, maybe that is enough.
  • p(watts) = dv * i (power dissipation of a voltage regulator)
  • Its possible the current is higher then when I tested it.   Not sure why that would be.
  • Need to find slightly thinner bolts.
  • In retrospect I should have used the dead zone on the board for the i2c bus.  Only one per 8 Fingers is necessary.  There is still room to drill holes and mount it on one of them.
  • Started assembling the bus

End: 6:00

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