Author Archives: pgfeldman

Phil 1.11.13

7:30 – 4:30 ESSO

  • Logging in was sloooooooooooooooooooooooow today.
  • Meeting with Chris B. Lenny and Tangie weren’t there, and Carla was busy, so it was just Dong, Chris and I. The main new thing was the idea of putting in a new field into the project line item (at the bottom of the project overview screen) that would have the identifier (possibly a script?) that tells the scripting system what item to look for in its query of COGNOS.  That and a few bugs were added to the list of req’s. Also, I mentioned to Chris that we were starting on FA, and that it would not be Flash-based.
  • Backups
  • Deployed new PPM and PA
  • Onward with Step 3: Explore the Starter Application
  • Walked through FSMs with Dong. PA is getting complex in spots…
  • ADF developer YouTube channel

FP

  • Moved the Phantom over to the testbed a(new firewire cable and USB mux) and verified that the tactor project is compiling and running. Yay!

Dong Shin 01.11.2013

  • meeting at Fort @ 7:30AM
    • Uniques ID# (String) to identify MIPR/Budget center for updating COGNOS/FACT data – discussion later
  • deployed new PA and PPM, few more bugs
    • Reported Outlay shows up in Summary in PPM
    • Current Month not correct in PPM
  • continue working on Financial Data Navigator

Phil 1.10.13

8:00 – 4:00 ESSO

  • Backups and meetings.
  • We need to figure out a way to get around the need to “double click” to get to a cell after filling out a form.
  • Found a better set of tutorials: Charting with ADF Data Visualization Components
    • Part 1: Validating the Model and Starting Building the UI
    • Nope, can’t get connected to the DB to make a schema, so I’m screwed. Error message from Ant is:
      • C:JDeveloperFOD_11InfrastructureDBSchemabuild.xml:28: java.sql.SQLException: Listener refused the connection with the following error:
        ORA-12505, TNS:listener does not currently know of SID given in connect descriptor. Checking the error message leads here. Going to poke at that after lunch.
      • Following the link above, I was able to determine what the SID(?) jdbc was attempting to connect to. This can be done in a couple of ways:
        • Go to C:oraclexeapporacleproduct11.2.0servernetworkADMIN and view tnsnames.ora. It’s a text file. The file contains (in my case) three “definitions” of connections. In my case, the one labeled “XE” had my machine (WHITEOAK) listed as the host and a port (1521). That appeared to be the way to connect to the DB.
        • The above can also be done by typing “lsnrctl services” at the command line. in this case, it shows an instance called “xe”. HOST is WHITEOAK, though the port is different (49170)
        • I verified that xe was visible using “tnsping xe” on the command line. That looked promising, so I adjusted the build.properties (jdbc.sid =) to reflect that. And now that I go back and read the tutorial, it does indeed say that this value can either be orcl or xe. Woohoo!
      • Part 2: Starting Using Graphic Components
      • Part 3: Adding Other Complex Graphical Presentations to the Page
      • Part 4: Using the Thematic Map Component
    • On a separate note, it might be nice to put in the Feed Tem Social plugin and bring in interesting content related to our coding tavailes. Need to talk to Dong about that tomorrow.

Dong Shin 01.10.2013

  • working on adding “DUE” status to individual projects
  • PA defaults to “Reporting Months” on CURRENT and DUE status
  • continue working on “DUE” status for list of projects in PA – done!
    • modified the query to get status
      • SELECT p.*, IF(p.uid IN (SELECT project_id FROM (SELECT project_id, year, year_count, count(funding_id) as data_count FROM obligations_outlays WHERE ((ISNULL(month_1) OR ISNULL(month_2)) AND (year+year_count-1) = 2013) OR ((ISNULL(month_1) OR ISNULL(month_2) OR ISNULL(month_3) OR ISNULL(month_4) OR ISNULL(month_5) OR ISNULL(month_6) OR ISNULL(month_7) OR ISNULL(month_8) OR ISNULL(month_9) OR ISNULL(month_10) OR ISNULL(month_11) OR ISNULL(month_12)) AND (year+year_count-1) < 2013) GROUP BY funding_id, year, year_count ) AS FOO WHERE data_count = 6), ‘OVERDUE’, IF(p.uid IN (SELECT project_id FROM (SELECT project_id, year, year_count, count(funding_id) as data_count FROM obligations_outlays WHERE ((ISNULL(month_1) OR ISNULL(month_2)) AND (year+year_count-1) = 2013) OR ((ISNULL(month_1) OR ISNULL(month_2) OR ISNULL(month_3) OR ISNULL(month_4) OR ISNULL(month_5) OR ISNULL(month_6) OR ISNULL(month_7) OR ISNULL(month_8) OR ISNULL(month_9) OR ISNULL(month_10) OR ISNULL(month_11) OR ISNULL(month_12)) AND (year+year_count-1) < 2013) GROUP BY funding_id, year, year_count ) AS FOO WHERE data_count < 6), ‘INCOMPLETE’, IF(p.uid IN (SELECT project_id FROM (SELECT project_id, year, year_count, count(funding_id) as data_count FROM obligations_outlays WHERE (ISNULL(month_3) AND (year+year_count-1) = 2013) GROUP BY funding_id, year, year_count ) AS FOO WHERE data_count > 1), ‘DUE’, ‘CURRENT’) ) ) as status FROM projects p WHERE p.uid in (SELECT project_id FROM budget_centers)

Phil 1.8.13

8:00 – 4:00 ESSO

FP

  • The video of Paul’s interview with me about my work.

Dong Shin 01.09.2013

  • Reported Outlay is now hidden from both PPM and PA
  • adjusted rowCount and height of the datagrids accordingly
  • reworked auto copy of PM Actuals to Reported Outlay in PPM and PA
  • disabled tooltips on list of projects in PA
  • working on adding “DUE” status to PA

Phil 1.7.13

8:00 – 3:00 ESSO

  • Backups. The now “non-merged” overdue table makes things go much faster.
  • Verified that Tangie and Carla have accounts on the Data Visualization tool.
  • Accepted a meeting invitation for Friday at 7:30. Ow.
  • Looking into doing FA in JDeveloper
    • Oracle database still works. Yay. The only way to get to the admin page appears to be through the start menu. Looks like it’s time to read some Oracle DB documentation.
    • Per the help, getting SQL Developer. Documentation is here. And it’s running, and connecting to the 11_Express DB. Woohoo!
    • OK, now that everything is back together, figuring out where I was the last time I was here (Oracle JDeveloper 11g Release 2 (11.1.2) Tutorials).

3:00 – 4:00- Orientation

Dong Shin 01.04.2013

  • PA Status bug not fixed
    • getting Current for incomplete projects
    • got ************* should not reach here !!!!! ******************** message, may be related?
  • Metting with Chris, Lenny, Tangie, Carla
    • Proposed changes ( added to Req’s)
      • Contract # should be a blank text field in Enter Invoice Diaglog
      • Delete “Reported Outlay” from all views (PPM and PA)
      • Fix DB so that the greater amount of PM Actuals or Reported Outlay is copied into the lower field. Also copy FMP.
      • Default to “Reporting Month”
      • For any row that is less than 100% use only those rows to calculate “incomplete” and “due”. When all rows are 100%, the item is current forever.
      • “Planned Outlay” becomes “Spend Plan Baseline”
      • For any row that equals 100%, auto-fill through the end of the contracts in PA (same rule as PPM)
      • No tool tip in PA list view
  • finished up Security Briefing and sent in the Acknowledge form

Phil 1.4.13

8:00 – 4:00 ESSO

  • Backups,
  • Fixed a bug in the ingest for overdue projects. It was merging rather than replacing. Huge! Files!
  • Deployed new version of PA. Still a bug with dates WRT incomplete projects.
  • Loooooooooong meeting with Tangie, Carla, Lenny, Chris, Dong and I. Dong is adding the action items to the req’s page.
    • May start with some new tools – a Financial Assistant (FA) app that will allow creation and editing of budget center information, and Program Manager Assistant (PMA) that will allow for streamlined management of projects.
    • I think we should do this in JDeveloper or GWT.
  • Some WCC getting acquainted emails and such.

4:00 – 5:00 FP.

  • Cleaned up code while figuring things out.
  • Added a new effect callback, which went in cleanly. Looking into how to have multiple effects.

Phil 1.3.13

8:00 – 4:00 ESSO

  • Viz Tool meeting
    • Found a date bug that we’re going to try to fix by Friday’s meeting
    • Reset all the alert states to acknowledged, to keep the users from going crazy
    • Need to add a way of acknowledging more than one alert. My thought is that we have a table that has the number of alerts that can show before an “acknowledge all” button is shown, and a MOTD list that can contain messages such as the state of the system. Maybe even something that has to be acknowledged.
    • Need to add a way to indicate that it’s time to enter data, but not an “overdue” flag.
  • Backups
  • Need to do a status report. Done
  • Worked out how to handle items in PA, when it is time to enter them, but they are not overdue. The states will now be as follows:
    • Current. Everything is filled in
    • Incomplete. Something is filled in, and the item is not overdue
    • Due. It is time to fill out the item (i.e. Between the 1st and 17th of the month is the “Due” period for the previous month
    • Overdue. An item that does not have all fields filled in that is past the “Due” date (i.e. the 17th)
  • Finished up my security briefings and emailed a scan of the signed form to Carrie.
  • Burned a disc containing PA and status for tomorrow.

4:00 – 5:00 FP

  • Got the callback working.
  • Pulled out setup(), run(), and terminate() methods. Next, I need to play around with the forces and make a moving object. Ideally, I’d like to have the rotating cube pair from the KF demo, but I’ll have to find some good cube code. I might start with spheres. Once I get the collisions behiving in a way that I like, I’ll start trying to add the code to (a copy of!) the KF demo

Header file:

class GravityWellClass
{
public:
	GravityWellClass(void);
	~GravityWellClass(void);

	bool setup();
	bool run();
	bool terminate();

protected: 
	HDErrorInfo error;
	HDSchedulerHandle hGravityWell;
	HHD hHD;

	static HDCallbackCode HDCALLBACK gravityWellCallback(void *data);
};

the callback method:

HDCallbackCode HDCALLBACK GravityWellClass::gravityWellCallback(void *data)
{
	const HDdouble kStiffness = 0.075; /* N/mm */
	const HDdouble kGravityWellInfluence = 40; /* mm */

	/* This is the position of the gravity well in cartesian
	   (i.e. x,y,z) space. */
	//static const hduVector3Dd wellPos = {0,0,0};
	hduVector3Dd wellPos;

	HDErrorInfo error;
	hduVector3Dd position;
	hduVector3Dd force;
	hduVector3Dd positionTwell;

	HHD hHD = hdGetCurrentDevice();

	/* Begin haptics frame.  ( In general, all state-related haptics calls
	   should be made within a frame. ) */
	hdBeginFrame(hHD);

	/* Get the current position of the device. */
	hdGetDoublev(HD_CURRENT_POSITION, position);

	memset(force, 0, sizeof(hduVector3Dd));

	/* >  positionTwell = wellPos-position  < 
	   Create a vector from the device position towards the gravity 
	   well's center. */
	wellPos[0] = 0;
	wellPos[1] = 0;
	wellPos[2] = 0;
	hduVecSubtract(positionTwell, wellPos, position);

	/* If the device position is within some distance of the gravity well's 
	   center, apply a spring force towards gravity well's center.  The force
	   calculation differs from a traditional gravitational body in that the
	   closer the device is to the center, the less force the well exerts;
	   the device behaves as if a spring were connected between itself and
	   the well's center. */
	if (hduVecMagnitude(positionTwell) < kGravityWellInfluence)
	{
		/* >  F = k * x  < 
		   F: Force in Newtons (N)
		   k: Stiffness of the well (N/mm)
		   x: Vector from the device endpoint position to the center 
		   of the well. */
		hduVecScale(force, positionTwell, kStiffness);
	}

	/* Send the force to the device. */
	hdSetDoublev(HD_CURRENT_FORCE, force);

	/* End haptics frame. */
	hdEndFrame(hHD);

	/* Check for errors and abort the callback if a scheduler error
	   is detected. */
	if (HD_DEVICE_ERROR(error = hdGetError()))
	{
		hduPrintError(stderr, &error, 
					  "Error detected while rendering gravity welln");

		if (hduIsSchedulerError(&error))
		{
			return HD_CALLBACK_DONE;
		}
	}

	/* Signify that the callback should continue running, i.e. that
	   it will be called again the next scheduler tick. */
	return HD_CALLBACK_CONTINUE;
}

Lastly, the setup method that establishes the callback:

HDSchedulerHandle hGravityWell = hdScheduleAsynchronous(gravityWellCallback, 0, HD_MAX_SCHEDULER_PRIORITY);

Phil 1.2.13

8:00 – 3:00

  • Backed up
  • Got admin privileges on my development box, so I can try a variety of flash players to see what gives with the old version of PPM
  • Working on figuring out what timesheet and what charge number to use.
  • Also working on getting the security videos to download. Done. Need to sign and send off the form
  • Worked on the design of the new Ingest Manager / Scripting IDE. Req’s here.
  • Long chat with Jessie about Novetta/FGM/White Cliffs.

3:00 – 4:00 FP

  • Changing HelloHapticDevice2 to classes. Need to figure out how to do C++ callbacks inside of classes again.
  • Ran into some odd problems that were fixed by moving all the shared .h files to stdafx.h and just including that. The static callback is set and compiling. Tomorrow we’ll try firing it.

Phil 12.31.12

8:00 – 12:00 ESSO

  • Deployed a new version of PPM that seems to be working much better than the old version
  • Backups. Slow, but at least I can get on the server
  • Security training.

12:00 – 4:00 FP

  • Switched over to the HD command-line examples to see what’s actually going on. Code is better commented, and seems to run better. There aren’t any peculiar error messages, at least, and no GLUT.
  • Looking through HelloHapticDevice.
  • Got a copy of the project built with MSVC working (i.e. with stdafx, etc.) I had to move a copy of msvcrtd.lib to the lib folder that was explicitly included. Otherwise, here are screenshots of the various properties (Note the Active(DebugAcademicEdition) configuration at the top of the dialog:

C++_General
C++_Optimization
C++_CodeGen

Link_General
Link_Input

  • And that’s it for 2012.