Monthly Archives: January 2013

Dong Shin 01.31.2013

  • presentation for Col. Duke – went pretty well!
  • finished up adding FMP View button – a new window and lots of back communications
  • FMPs are now required for only Reported Actual Obligated and Outlay $ Reported in FACTS, others are ignored.

Phil 1.31.13

7:30 – 3:30 ESSO

  • Brought in a new version of vis2, but the colors still don’t work quite right for a three-element chart
  • Making larger text looks as straightforward as setting up the magnification and sizing appropriate to the conference room screen.
  • Tooltips will still be a problem. Need to get the magnification value passed to them.
  • Need to include the name of the Label Column when loading from XML. Fixed. For some reason I was forcing the _labelColumnField to the name of the 0th column in WidgetBase.setColumns. Dunno why.

Phil 1.30.13

8:00 – 4:30 ESSO

  • Presentation prep
    • Need to add the ability to sum across rows in the value views. This might be doable in advanced queries. Need to check further.
  • Fixed the color mapping functions to have more variation so that colorblind users can see the pie charts.

Dong Shin 01.30.2013

  • prep for Col Duke’s presentation
    • latest data generation (script) and ingest – set to run every morning
    • alerts ingested – need to fix the script that contains the Stored Procedure
      • temporary and memory
    • went over the charts with Chris
  • FMP’s should only be Obligations and Outlays – tabled for discussion later
  • continue working on FMPs for PA

Phil 1.29.13

8:00 – 4:00 ESSO

  • Worked on getting all the data in the data visualizer for Col Dukes’ presentation on Thursday. 
    • Cleaned out a lot of old code, files and cruft in general.
    • Had problems getting the ingestor to swallow alerts. Diagnosing this lead to a problem with Projects Under Budget. We’re about halfway through the fix for all that.
    • Loaded up the latest COGNOS data
    • Integrated Comitted with the rest of the FY13 data
  • Javascript
    • Chapter 6, or how to do OO when there is no such thing as a class in JavaScript.
    • JavaScript prototypes are most peculiar.

Dong Shin 01.29.2013

  • spent most of the morning working on queries and reports
    • got Committed ingested for FY13
    • cleaned up Ingest Manager data, Scripting
    • ingested FY12 data
  • working on adding FMP to PA
    • modify table – financial_mitigation_plans
      • ALTER TABLE `financial_mitigation_plans` CHANGE `type` `type` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Obligation'

Dong Shin 01.28.2013

  • spent most of the day working out queries and scripts for FY13 presentation for Col Duke
    • still need Committed from COGNOS
  • few bugs
    • FMP’s didn’t show for PM’s and Admins – Explained to Carla how it works
    • Add a “View Financial Mitigation Plans to Monthly Status View in PA
    • Add an “Outlay” field for NSA staff so we can tell the difference between the site outlay expectation and NSA expectation
  • working on adding View FMP to PA

Phil 1.28.13

9:30 – 5:30 ESSO

  • Ice storm this morning. Yuck. Still, the best traffic I’ve ever seen in the region.
  • Spent most of the day with Dong working out the queries to get the FY13 presentation running from the project_portfolio database. I think it’s all working, with the exception of the data that needs to be input from COGNOS. A couple of issues:
    • Committed is not showing up in any of the plots. Need to look through this with Dong.
    • When Lenny tries to bring up the slide show, the charts do not populate. I think this is a permissions issue.
    • Need to make sure that a transition is not required when running a slide show.
  • Still need to import FY12 COGNOS data. Tomorrow.
  • Back to Javascript. Done with Chapter 5.

Phil 1.25.13

7:30 – 1:30 ESSO

  • Meeting with Lenny, Carla, Tangie and Tom(?). We walked through their list of items thatneed to be modeled. Looks pretty straightforward
  • Backups
  • JavaScript

1:30 – 3:30 FP

  • Wrote up the Synthetic User proposal for David and Samir.

Dong Shin 01.25.2013

  • Master Spreadsheet meeting – worked out most of the details
  • working on queries for Col. Duke’s presentation
    • created projects for each of Capabilities and Appropriations
    • built a query to retrieve PM Actuals grouped by capability
      • SELECT CONCAT(capability, ‘_’, TRIM(TRAILING ‘(FY10)’ FROM appropriation), ‘_PM_Actuals’) as Name,
        SUM(IF(o.year_count = 1, month_1, 0) )AS OCT_2012_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS NOV_2012_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS DEC_2012_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS JAN_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS FEB_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS MAR_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS APR_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS MAY_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS JUN_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS JUL_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS AUG_2013_FY13,
        SUM(IF(o.year_count = 1, month_1, 0) )AS SEP_2013_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS OCT_2013_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS NOV_2013_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS DEC_2013_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS JAN_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS FEB_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS MAR_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS APR_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS MAY_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS JUN_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS JUL_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS AUG_2014_FY13,
        SUM(IF(o.year_count = 2, month_1, 0) )AS SEP_2014_FY13
        FROM obligations_outlays o, budget_centers c, budget_amounts a
        o.year = 2013
        AND (o.year_count = 1 OR o.year_count = 2)
        AND o.type = ‘PM Actuals (Invoiced) Outlay $:’
        AND c.uid = o.funding_id
        AND c.uid = a.budget_center_id
        AND a.year = 1
        AND (capability = ‘TRCO’
        or capability = ‘ACC’
        or capability = ‘GCC’
        or capability = ‘MCC’
        or capability = ‘CCRSE’)
        GROUP BY Name

Phil 1.24.13

8:00 – 10:00, 1:00 – 4:00 ESSO

  • Backed up.
  • Role problems with PA, talked to Dong, who got a fix in by this afternoon
  • Rolled out preferences. There was a DB bug, where the preferences were set up as VARCHAR and not TEXT. Fixed.

10:00 – 1:00 FP/OH

  • Meeting with David Moor about what to do with the FP. Looking at synthetic users.

Dong Shin 01.24.2013

  • snow!
  • trying to figure out how to preserve datagrid sort
    • PA’s project list now preserves its state, Status and Sort
  • critical bug found – PM’s cannot save the data and line item view doesn’t show any data
    • fixed – problem with the datagrid filter function for non-admins
  • burned a CD to deploy this afternoon

Phil 1.23.13

8:00 – 4:00 ESSO

  • Backed up.
  • Rebuilt query spreadsheet for Dong
  • There may be a problem with PA, but it is more likely an older version. We’re adding in a test that checks the DB for the latest “Compiled” string and evaluates the date. If the local date is less than the DB date, the app throws up an “Update” dialog with instructions for FF and IE. If the date is greater, the app updates the string in the DB, otherwise things start normally.
  • Javascript!
  • Cool thing:
    var num = 0;
    outermost: // create a label for this for loop
    for (var i = 0; i < 10; i + +) {
        for (var j = 0; j < 10; j + +) {
            if (i == 5 && j == 5) {
                continue outermost; // go to the label
            num ++;
    alert( num); // 95
  • Switch statements can switch on variables?
  • IMPORTANT!!! –
    • Function arguments in ECMAScript don’t behave in the same way as function arguments in most other languages. An ECMAScript function doesn’t care how many arguments are passed in, nor does it care about the data types of those arguments. Just because you define a function to accept two arguments doesn’t mean you can pass in only two arguments. You could pass in one or three or none, and the interpreter won’t complain. This happens because arguments in ECMAScript are represented as an array internally. The array is always passed to the function, but the function doesn’t care what (if anything) is in the array. If the array arrives with zero items, that’s fine; if it arrives with more, that’s okay too. In fact, there actually is an arguments object that can be accessed while inside a function to retrieve the values of each argument that was passed in.
    • Unlike in other languages, naming your arguments in ECMAScript does not create a function signature that must be matched later on; there is no validation against named arguments. The arguments object can also be used to check the number of arguments passed into the function via the length property. The following example outputs the number of arguments passed into the function each time it is called:
function howManyArgs() {
    alert( arguments.length);
howManyArgs(" string", 45); // 2
howManyArgs(); // 0
howManyArgs( 12); // 1
    • When a variable is declared using var, it is automatically added to the most immediate context available. In a function, the most immediate one is the function’s local context; in a with statement, the most immediate is the function context. If a variable is initialized without first being declared, it gets added to the global context automatically.
    • And in the “No Free Lunch Dept: Setting a variable to null effectively severs the connection between the variable and the value it previously referenced. The next time the garbage collector runs, these values will be deleted and the memory will be reclaimed. Even if you have garbage collection, it never hurts to help out.
    • As in other languages, ECMAScript arrays are ordered lists of data, but unlike in other languages, they can hold any type of data in each slot. This means that it’s possible to create an array that has a string in the first position, a number in the second, an object in the third, and so on.
    • Ringbuffer: ECMAScript also provides an unshift() method for arrays. As the name indicates, unshift() does the opposite of shift(): it adds any number of items to the front of an array and returns the new array length. By using unshift() in combination with pop(), it’s possible to emulate a queue in the opposite direction, where new values are added to the front of the array and values are retrieved off the back.
  • Hit the wall reading about functions. I need my ride, and it’s only 21 degrees!
  • Burned a disk with the new PA on it.

Dong Shin 01.23.2013

  • working on PA for status issues – done
  • added preferences (columns selection for Project list) saving for PA
  • PA’s having some issues that we believe they were running old versions (without clearing history/cache)
    • In PA, set the compile date in the tab, so screen shots tell us what version
    • Add a method in Utils that test the compile date against a string in the DB, If the compile date is less than the stored string, a dialog is shown, telling how to update in IE and FF. If the date is greeater than the stored date, the date on the DB is update. If they are the same, nothing is done.

Dong Shin 01.22.2013

  • deployed new PA. works better but issues with Status and others
    • From the first of the month to the due date (e.g. the 10th), states may be DUE, OVERDUE, or Current. For the following, we will assume that the calendar month is May, and that the reporting month is April
      1. If it is May 1-10, state is OVERDUE, if any previous month’s data is incomplete (e.g. March and prior) ELSE
      2. If it is May 11-31, the April state is OVERDUE, if any previous month’s data is incomplete (e.g. April and prior) ELSE
      3. If if it May 1-10, the April state is DUE, if the data is incomplete for April and all previous months. ELSE
      4. If it is May 1-10, the April state is CURRENT, if the data is complete April and all previous months. ELSE
      5. If it is May 11-31, the April state is CURRENT, if the data is complete for all previous months
    • Sorting of status needs to maintain in PA
    • Need to keep preferences for users in PA
    • Queries for Tangie
      • Query for who has been in the tool in putting their information
      • Out of all of the TST sub budgets what is the top 10 projects offenders (not meeting DOD goals)
      • TST personal graph (just like the monthly brief