Category Archives: NextGen experimentation

Phil 9.10.15

8:00 – 2:30 SR

  • Taking tomorrow off
  • No progress on dev machine admin
  • Added page rank function to PhilsUtils
  • Discovered that I still needed to pull fresh meta
  • Make it so that a shift-click on a BaseComponent selects all the items that the item is directly connected to. Done.  Bonus points for each shift-click selects an additional hop. TODO
  • Got my first linkage!

DriverF1

  • Next is some automated culling, and then adding rating/pagerank. TODO

Phil 9.1.15

8:00 – 5:00 SR

  • No news on my dev box admin.
  • Build the ‘openUrl’ query
    • Send the url to Alchemy for title, Author, text, and image. Take the responses and build the html description that the
      <item>
      
      <title>Obama to Call for More Icebreakers in Arctic as US Seeks Foothold - New York Times</title>
      
      <link>http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNEzISdc_7dbACNLX7SfwLZaa1UXBQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778940195490&ei=hJjlVfCYMcvH3gGGs57IDw&url=http://www.nytimes.com/2015/09/02/us/politics/obama-to-call-for-more-icebreakers-in-arctic-as-us-seeks-foothold.html</link>
      
      <guid isPermaLink="false">tag:news.google.com,2005:cluster=52778940195490</guid>
      
      <category>Top Stories</category>
      
      <pubDate>Tue, 01 Sep 2015 11:15:00 GMT</pubDate>
      
      <description><table border="0" cellpadding="2" cellspacing="7" style="vertical-align:top;"><tr><td width="80" align="center" valign="top"><font style="font-size:85%;font-family:arial,sans-serif"><a href="http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNEzISdc_7dbACNLX7SfwLZaa1UXBQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778940195490&ei=hJjlVfCYMcvH3gGGs57IDw&url=http://www.nytimes.com/2015/09/02/us/politics/obama-to-call-for-more-icebreakers-in-arctic-as-us-seeks-foothold.html"><img src="//t0.gstatic.com/images?q=tbn:ANd9GcTb8poiCV7-c6L52plHslVILC4Ti7eb_asJZjOiu7lRPrMAiViJFVC7YHxXBbLyaV2YQthpDI8" alt="" border="1" width="80" height="80"><br><font size="-2">New York Times</font></a></font></div></font></td></tr></table></description>
      
      </item>
    • Obviously, the description part is the trickiest, but it doesn’t have to be as rich in content
    • Tutorial on RSS
    • Encoding and decoding html using PHP
    • In looking at the above, I think the first thing to do is to build the template for displaying the output, then encode it and see if it can be displayed. Here’s an example of a GoogleNews item:
      <table border="0" cellpadding="2" cellspacing="7" style="vertical-align:top;">
      
      <tr>
      
      <td width="80" align="center" valign="top">
      
      <font style="font-size:85%;font-family:arial,sans-serif">
      
      <a href="http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNEzISdc_7dbACNLX7SfwLZaa1UXBQ&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778940195490&ei=hJjlVfCYMcvH3gGGs57IDw&url=http://www.nytimes.com/2015/09/02/us/politics/obama-to-call-for-more-icebreakers-in-arctic-as-us-seeks-foothold.html">
      
      <img src="//t0.gstatic.com/images?q=tbn:ANd9GcTb8poiCV7-c6L52plHslVILC4Ti7eb_asJZjOiu7lRPrMAiViJFVC7YHxXBbLyaV2YQthpDI8" alt="" border="1" width="80" height="80">
      
      <br>
      
      <font size="-2">New York Times</font>
      
      </a>
      
      </font>
      
      </td></tr></table>
    • Ran into problems with Imagick that seem to be legendary. Rather than dealing with it on the dev box, and since it seems to be there on the main server, I’m using this hacky workaround and just ignoring it for now. What I want is thumbnails so that the asset folder doesn’t get crushed. But that’s not critical right now.
    • Finished building the itemHtml
      private function constructHtml(){
       $htmlStr = '<table border="0" cellpadding="2" cellspacing="7" style="vertical-align:top;" width="100%"><tr><td width="80" align="center" valign="top">';
       $htmlStr .= '<a href="'.$this->rssLink.'">';
       $htmlStr .= '<img src="assets/'.$this->rssImage.'"height="80"></a></td>';
       $htmlStr .= '<td width="80%" align="left" valign="top"><span style="font-size:85%;font-family:arial,sans-serif">';
       $htmlStr .= '<a href="'.$this->rssLink.'">'.$this->rssTitle.'</a>';
       $htmlStr .= '<p>'.$this->rssDescription.'</p>';
       $htmlStr .= '</span></td></tr></table>';
       $this->rssDescription = $htmlStr;
       }
    • Tomorrow we’ll wire it up so that http and https ‘queries’ get handled from the client

Phil 8.27.15

7:30 – 5:00 SR

    • Ranted about JavaScript’s design (evolution?) flaws here.
    • Adding items to the environment
      • Need to compare the data provider to see what’s in the model but not in the DP and delete it
      • Need to change the data format to include all the tn_types – started
      • Link the pulled-down data to the chart data. Going to try just assigning pointers first.
      • Hey! It loaded from the DB and rendered! Need to anchor the network root. Done. For the time being I’m using the lowest id_index, which will equate to the earliest entry.

loadedNetwork

      • Need to verify that all the connections are good too.
      • Attached the data object.
      • The view that produced the query results was wrong. Fixed now:

loadedNetwork

  • Up on the server and tested in all browsers. Had a heart stoppage when the tn_view_network_items didn’t get added. But it’s all good now.  For tomorrow, try adding items and modifying the network structure with only the new items.

Phil 8.17.15

8:00 – 3:00 SR

  • Still no admin
  • Given that I’m using FizzBuzz for the coding side of the SWE interview, I though I should put together a test for the database portion of the interview:
    • Create three tables:
      • One for names and salaries,
      • One for roles,
      • One that assigns a particular person to one or more roles.
    • Create a query that prints the name strings with their role strings. Extra points if it’s a view.
    • Create a query that sums the salaries.
    • Create a query that sums the salaries for a given role.
      DROP TABLE IF EXISTS test_people;
      CREATE TABLE test_people (
      	id_index 		INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
      	name			varchar(255),
      	salary			BIGINT
      );
      
      insert into test_people (name, salary) values
      ('Sophia',10000000000),
      ('Emma',1000000000),
      ('Olivia',100000000),
      ('Isabella', 10000000),
      ('Jackson',1000000),
      ('Aiden',100000),
      ('Liam',10000),
      ('Noah', 1000),
      ('Charlotte', 100),
      ('Caden', 10),
      ('Harper', 1);
      
      DROP TABLE IF EXISTS test_roles;
      CREATE TABLE test_roles (
      	id_index 		INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
      	role			varchar(255)
      );
      
      insert into test_roles (role) values
      ('Minion'),
      ('Worker'),
      ('Manager'),
      ('CEO'),
      ('Evil Overlord');
      
      DROP TABLE IF EXISTS test_assignments;
      CREATE TABLE test_assignments (
      	person_id 	INT,
      	role_id		INT
      );
      insert into test_assignments (person_id, role_id) values
      (1, 5),
      (2, 4),
      (3, 3),
      (4, 2),
      (5, 1),
      (6, 1),
      (7, 1),
      (8, 1);
      
      drop view IF EXISTS test_join;
      create view test_join as
      select p.name, r.role, p.salary
      	from test_assignments a
      	inner join test_people p on a.person_id = p.id_index
      	inner join test_roles r on a.role_id = r.id_index;
      
      select * from test_join;
      select sum(salary) from test_join where role = "Minion";
      
      DROP TABLE IF EXISTS test_people;
      DROP TABLE IF EXISTS test_roles;
      DROP TABLE IF EXISTS test_assignments;
      drop view IF EXISTS test_join;
  • Add the ability to save a network and then start saving one!
  • Since the mysqldump file doesn’t work on my server, spit the current schema file into three sections:
    • Table creation (incorporate DROP TABLE IF EXISTS table_name) – done
    • View creation – done
    • Tests – done
  • Using the linkFn() in ngFlyoutPanel to call getNetworks() on the load of the directive. Wasn’t sure that it would work, but it does. In Chrome, FF, and IE yet..
  • Uploaded to the main server. Works there, too!

Phil 7/14/15

7:30 – 5:00

  • Write up a description of Dong’s skillset.
  • Call Arhouse.
  • Continue on ComponentNetwork
    • Chain -> History
    • ‘Relevance to Search’ dialog for keywords, etc.
    • Accumulate search terms in some way. Possibly weight them?
    • Rebuilding the network construction so that it’s handled by its own class. The basics are working, need to add connections based on pending requests next. Overall it’s better than using addEnvironment, which really wasn’t all that appropriate. It should be easy to add in textures too. Fingers crossed.
  • Looks like my workstation should be in next week
  • Pluto flyby!

Phil 7.13.15

8:00 – 2:30 SR

  • Everything is running smoothly on the production machine. Clearly a disaster of epic proportions is looming.
  • Setting up a VizTool account on the laptop so that Dong can set up and verify his code base.
  • Either work on attaching the database or building the recursive chain class. Leaning towards the class.
    • One root at a time? Yes, but allow the root to be reset to any point in the network.

Phil 7.9.15

8:00 – 5:00 SR

  • Asked Dong to make sure that all projects were standalone, and didn”t depend on Maven, etc. that was outside the repository.
  • Fixed one of the names in the PM database list
  • Trustworthiness –
    • Need to change the queries around so that the kind of data is listed (Url:, Keyword:, etc. This can be parsed as needed by the submitting methods – done
    • Get the initial interactions beween the webGL and the search. Set up the dataFormat to handle the types.
      • Working on the resetDataProvider and resetDataFormat.
    • Add new search buttons (Google News, Fact Checked, Alchemy News, etc) – done
    • Start adding in the DB
      • In the link table, types can be ‘relation’ ‘supports’ ‘disputes’, others(?)
  • Meeting with Brad and Steve
    • Send software and hardware configuration to Steve Filippi (scfilip)

Phil 5.11.15

7:30 – 2:30 SR

  • This could be a good read: Inside The AngularJS Directive Compiler
  • Backups
  • Lenny’s thinking that the ACRN is causing more problems than it’s worth and would like to explore how the Reqonciler would work if that column were ignored.
  • Adding events to the WglCanvas. Still trying to figure out what should be in the data object. Starting with a component description interface for each graphical component that looks like this:
  • export interface IComponentDescription{
       typeString:string;
       objName:string;
       calloutText:string;
       toolTipText:string;
    }
  • Well that’s odd. Events are not working in the main app. Not even sure how to debug….
  • Turned out that I was passing in the wrong things. allowing an ‘any’ object as a parameter, so TypeScript didn’t catch it.

Phil 4.14.15

8:00 – 4:30 SR

  • FR seems to be running smoothly. Didn’t see Lenny.
  • Found a better linear regression class: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/stat/regression/SimpleRegression.html
  • Continuing to work on bars. Index and offset don’t seem to be working? Fixed.
  • Everything’s working. Now to automate the chart creation from the dataFormat and dataProvider.CombinedChart
  • Working out the interfaces for the format. This is helping a lot, particularly the ‘dictionary’ interface
  • Reworked the dataProvider and dataFormat interfaces and objects. This is now what it looks like:
  • DataFormat interface and example:
    export interface IChartElementFormat {
       label:string;
       objectName:string;
       type:string; // "area", "bar", pie, cluster
       hexColor:number;
    }
    
    export interface IChartFormat{
       [label:string]:IChartElementFormat;
    }
    
    this.dataFormat = { // might add 2D/3d, dynamic/static, etc.
       goals: {label:"Goals", objectName:"goals", type:"area", hexColor:0xFF0000},
       obligations:{label:"Obligations", objectName:"obligations",  type:"area",hexColor:0xFFFF00},
       pm_actuals:{label:"PM Actuals", objectName:"pm_actuals",  type:"bar",hexColor:0x00FF00},
       facts:{label:"Facts", objectName:"facts",  type:"bar",hexColor:0x0000FF},
       future_pm_actuals:{label:"Future PMA", objectName:"future_pm_actuals",  type:"area",hexColor:0xAAFFAA},
       future_facts:{label:"Future FACTS", objectName:"future_facts",  type:"area", hexColor:0xAAAAFF}
    };
  • DataProvider interfaces:
    export interface IChartBoundries {
       xmin:number;
       xmax:number;
       ymin:number;
       ymax:number;
       zmin?:number;
       zmax?:number;
    }
    
    export interface IChartDataMapping{
       [label:string]:number;
    }
    
    export interface IMinMax {
       min:number;
       max:number;
    }
    
    export interface IChartDataElement{
       [label:string]:IMinMax;
    }
    
    export interface IChartDataCollection{
       [objectName:string]:IChartDataElement;
    }
    
    export interface IChartData{
       type:string;
       min_max:IChartBoundries;
       mappings:IChartDataMapping[];
       data:IChartDataCollection;
    }
  • DataProvider example:
    this.dataProvider = {
       type:'XY', // RAH (Radius Angle Height) RAE (Radius Azimuth Elevation), XYZ, etc.
       min_max:{xmin:0.00, xmax:11.00, ymin:0.00, ymax:3715.30},
       mappings:[{Jan:0, Feb:1, Mar:2, Apr:3, May:4, Jun:5, Jul:6, Aug:7, Sep:8, Oct:9, Nov:10, Dec:11}],
       data:{
          goals: {
             Jan: {min: 0, max: 1000.00},
             Feb: {min: 0, max: 1100.00},
             Mar: {min: 0, max: 1210.00},
             Apr: {min: 0, max: 1331.00},
             May: {min: 0, max: 1464.10},
             Jun: {min: 0, max: 1610.51},
             Jul: {min: 0, max: 1771.56},
             Aug: {min: 0, max: 1948.72},
             Sep: {min: 0, max: 2143.59},
             Oct: {min: 0, max: 2357.95},
             Nov: {min: 0, max: 2593.74},
             Dec: {min: 0, max: 2853.12}
          },
          obligations: {
             Jan: {min: 0, max: 500.00},
             Feb: {min: 0, max: 600.00},
             Mar: {min: 0, max: 720.00},
             Apr: {min: 0, max: 864.00},
             May: {min: 0, max: 1036.80},
             Jun: {min: 0, max: 1244.16},
             Jul: {min: 0, max: 1492.99},
             Aug: {min: 0, max: 1791.59},
             Sep: {min: 0, max: 2149.91},
             Oct: {min: 0, max: 2579.89},
             Nov: {min: 0, max: 3095.87},
             Dec: {min: 0, max: 3715.04}
          },
          pm_actuals: {
             Jan: {min: 0, max: 250.00},
             Feb: {min: 0, max: 341.39},
             Mar: {min: 0, max: 495.27},
             Apr: {min: 0, max: 618.30},
             May: {min: 0, max: 923.08},
             Jun: {min: 0, max: 1318.68}
          },
          facts: {
             Jan: {min: 0, max: 125.00},
             Feb: {min: 0, max: 134.17},
             Mar: {min: 0, max: 134.31},
             Apr: {min: 0, max: 163.00},
             May: {min: 0, max: 164.36},
             Jun: {min: 0, max: 202.29}
          },
          future_pm_actuals: {
             Jun: {min: 1318.68, max: 1318.68},
             Jul: {min: 1257.91, max: 1499.96},
             Aug: {min: 1342.92, max: 1827.03},
             Sep: {min: 1427.94, max: 2154.10},
             Oct: {min: 1512.96, max: 2481.16},
             Nov: {min: 1597.97, max: 2808.23},
             Dec: {min: 1682.99, max: 3135.30}
          },
          future_facts: {
             Jun: {min: 202.29, max: 202.29},
             Jul: {min: 193.38, max: 215.48},
             Aug: {min: 196.77, max: 240.99},
             Sep: {min: 200.17, max: 266.49},
             Oct: {min: 203.57, max: 291.99},
             Nov: {min: 206.96, max: 317.50},
             Dec: {min: 210.36, max: 343.00}
          }
       }
    };
  • Need to place the dataProvider in the html to see if it works there.

Phil 4.8.15

8:00 – 4:00 SR

  • Kinda promised Ronda cookies
  • Worked through Markov Chain Matrix math. I think I understand how it relates to PageRank Matrix math, and therefore, how Page Rank is a Markov Chain.
  • Working through charting bugs
    • Added font and color choice to dprint
    • Fixed canvas font application in WebGlComponentClasses
    • Updated WebGlInterfaces
    • Fixed bugs in ChartInfo
  • Newest version is live
  • Adding JSON objects for charts to read and display.

Phil 4.7.15

8:00 – 4:00 SR

  • Committed to bringing in a test version of the charting. I probably need a WGLChart2D so that there’s no DB complications initially. Need to verify that the JSON servlet still works though.
  • Added legends back in. Had to fix a bad string test
  • The CanvasRenderer moved. Had to fix that. Verified it still works
  • Removing chart classes from the controller and putting them in the classes folder
  • Added WebGlCharts to classes directory and to the makefile. Had problems until I realized that I had created “WegGlCharts”. Stupid fingers.
  • Starrting WGLChart2D
  • My new dev box is here!
  • 2D is mostly ported and running. A few more things to clean up before packaging to deploy. Visible here.

Phil 3.31.15

8:00 – 4:30 SR

  • Working on debugging POC name issue. Fixed? Had to roll back some things to make the data binding work?
  • Migrating NovettaUtils to the lib directory, then using that for inheriting in the charts module. Which was going to be migrated before discovering the fat arrow inherit feature (FAIF). So yeah. migrate that too.
  • Nope, realized that there was no way to maintain state using the approach that I tried. Looking into using the actual prototype chaining pattern instead.
  • Ok, kinda hit a wall here. Note that the breakpoint and the console.log disagree:

wtf

Phil 3.30.15

8:00 – 3:00 SR

  • Mark, who is standing in for Lenny, found this and I verified. Entering a POC in a new FR doesn’t show up in the list.
  • Testing the new callback scheme in typescript testbed.
  • Tried it, and was quite hopeful, but the scheme failed with the timeoutService callback. Bad, because that’s a basic Angular component and messing with that just isn’t in the cards. But the fatPrototype/fatSuper scheme works. Now I just need to be able to make prototype chaining work right. Done! Here’s the entire class:
    export class FatSuperBase {
       public functionMap:any[];
       constructor() {
          this.functionMap = [];
       }
       public setFatPrototype(fn:Function, n:string){
          // TODO: look for earlier prototypes that we might need to call
          if(!this.functionMap.hasOwnProperty(n)){
             this.functionMap[n] = [];
          }
          this.functionMap[n].push(fn);
       }
       public fatSuper(fnName:string, childArgs:IArguments){
          // TODO: look for earlier prototypes that we might need to call
          var fn:Function;
          var farray:Function[];
          if(this.functionMap.hasOwnProperty(fnName)){
             farray = this.functionMap[fnName];
             fn = farray[farray.length-1];
             fn.apply(fn, childArgs);
          }else{
             console.log("fatSuper(): function '"+fnName+"'does not exist on the prototype chain");
          }
       }
    }