Monthly Archives: July 2015

Phil 7.31.15

7:30 – 2:30 SR

  • AC service today, so I’m working from home.
  • Got server code running at home, now testing on production server.
  • Had to play around with config files, but everything is working now.
  • Working out a way to identify an item for easy searching when there is no (Google) guid. Trying an sha1 hash of the elements used to make the item.
  • Finished addItem()
  • Finished getItem()
  • Finished addItemRating()
  • Finished getItemRatings()

Phil 7.30.15

8:00 – 4:30 SR

  • Still working on getting software for the new dev machine.
  • Added tn_ratings and tn_touches to handle historical behavior. I realized that items shouldn’t have histories in a relational db. Histories should point at items. Sideways thinking.
  • Setting up base and subclasses for the DbIO.
    • baseDbIo
      • improved fail returns
    • userDbIo
    • networkDbIo
      • getUserNetworks
  • Working on item find/add/change/delete PHP functions

Phil 7.29.15

8:00 – 4:30 SR

Phil 7.28.15

8:00 – 5:00 SR

  • Fixing charts – everything done but TST. Did we do that one by hand?
  • Had a thought that the entire financial system could be represented as a network, which could be made to fit into the framework I’m trying to develop. It might let me collapse the project into something small enough for one person to manage, since the database would shrink to only a few (5?) tables…
  • Ordering Software – Visual Studio and IDEA Ultimate
  • A Visual Introduction to Machine Learning
  • Starting to build the server classes that will access the network data
    • A new component doesn’t have have an id_index, so we will know when to create and when to update. Deletion may be tricky, since multiple networks may share an item. We may just want to keep deleted items around anyway, since the fact that they were once attached might mean something…?
    • Class is up and doing raw calls to the database, which, of course is dangerous as heck. Working through how to do bound parameters. Staring with the addUser(), checkUser() and changePassword() methods, since they’re needed and unlikely to change.
    • Discovered the very nice PHP Data Objects (PDO) and this helpful tutorial. I have the checkUser() and rawSqlQuery() methods converted. Need to add some error checking, but very happy.

Phil 7.27.15

8:00 – 2:30 SR

  • I’m thinking about how the edges in a network can have certain characteristics
    • Bandwidth – the capacity of the edge. Can be expressed as used and potential
    • Frequency – how often the edge is used. Bandwidth provides a ceiling on this
    • Richness – I’m not sure how to think about this. In the most basic case, this could be an expression of information content (i.e. an infrequent transmission with lots of content is equivalent to a frequent transmission with low content). But when we layer on context and meaning, all kinds of additional information gets ‘compressed’ into the message – a glance can be nothing or everything. Ideally, the description of the edge should contain some way of accessing that context, and shouldn’t be considered simply a link
  • Along this lines, I found this paper: Lexical chains as representations of context for the detection and correction of malapropisms. Lexical chains are certainly one way of representing context.
  • Another way of thinking about richness is in terms of similarity. If the link is carrying the same payload over and over again, then there isn’t much richness. So can we look at similarity as a way of determining how rich a link is? An Information-Theoretic Definition of Similarity. And here’s looking at news headlines, which might be relevant to short posts or tweets: Similarity for news recommender systems
  • And this reminded me of Princeton’s WordNet, which could be really helpful.
  • Ok, back to the database
    • Based on the above thoughts, I’m adding assoc_type to tn_associations
    • Here’s a query that pulls all the parts together. According to everything I’ve read, joins are probably the most efficient way to do this (size and speed):
      select u.login as `Link Created By`, a.created_on as `Created On`, at.name as `Assoc Type`, si.text as Source, st.name as `Source Type`, ti.text as Target, tt.name as `Target Type`
      from  tn_associations a
      inner join tn_users u on a.user_id=u.uid
      inner join tn_types at on a.assoc_type = at.uid
      inner join tn_items si on a.source_id = si.uid
      inner join tn_types st on si.item_type = st.uid
      inner join tn_items ti on a.target_id = ti.uid
      inner join tn_types tt on ti.item_type = tt.uid;
    • Now I need to load and save a named network from a particular user or any variants up to and including all networks from all users, without redundant nodes/edges…

Phil 7.24.15

8:00 – 4:30 SR

  • Trying to get charts to work
  • Need to run Create Scratch Financial Data first
  • I think 2014 OM ACC is functioning correctly, but probably pointing at the wrong data. The chart is drawing, just need to figure out how to align the months.
  • Working on setting up the database for links as per the main goal. Think I’ve gotten a first pass on the tables. Need to remember how to use joins now. This helped a lot: http://stackoverflow.com/questions/3709560/mysql-join-three-tables

Phil 7.23.15

9:00 – 5:00 SR

  • First, I’m going to check to see if I can pull in and display an entire webpage with ng-sanitize
  • Had to get a cert for my dev machine php install to get curl to be able to pull https content. Here’s the relevant info from the php.net post
Please everyone, stop setting CURLOPT_SSL_VERIFYPEER to false or 0. If your PHP installation doesn't have an up-to-date CA root certificate bundle, download the one at the curl website and save it on your server:

http://curl.haxx.se/docs/caextract.html

Then set a path to it in your php.ini file, e.g. on Windows:

curl.cainfo=c:\php\cacert.pem

Turning off CURLOPT_SSL_VERIFYPEER allows man in the middle (MITM) attacks, which you don't want!
  • Adding the ability to open full pages. It’s now working (not for all pages, will need to finesse that), but I had a few moments where Chrome would NOT LET GO of its cache. Sheesh.
  • Loading the html in the PHP and sending it back as content didn’t work. The trick is to open the page in a frame directly (and save the link) Based on the stackoverflow staring point.
      • Use the $sce service component from ngSanitize and inject in the main module:
        this.appModule.directive('ngFeedPanel', ['$timeout','$rootScope', '$sce', queryDirectivePtr]);
      • It gets incorporated in the directive so:
        public ctor(timeout:ng.ITimeoutService, rootscope:ng.IScope, sce:ng.ISCEService):ng.IDirective {
            this.sceProvider = sce;
            // other stuff goes here
        }
      • That in turn gets called in the html like this:
        
        
  • Lastly, getLink() in the directive looks like:
    scope.getLink = ():void => {
        var mobj:RssControllersModule.IDataResponse = scope.messageObj;
        return this.sceProvider.trustAsResourceUrl(mobj.link);
    };

Phil 7.22.25

8:00 – 5:00 SR

  • Filled out contact info for Steve
  • The stricter trust chain did not work. I had Ronda go back to the looser one.
  • Fixed attraction/repulsion/linkScalar it’s 1.0, 10.0, 10.0 for defaults
  • Ran into a weirdness with <input type=”range> and browsers. Chrome is fine. FF and Chrome have differing default widths and margin/padding. Had to add the following to get all ranges to work similarly:
    .forceRange{
        position: absolute;
        width: 120px;
        right: 10px;
        margin: 0px;
        padding: 5px;
        z-index: 2;
    }
  • Back to figuring out the AlchemyNews API. Blew up the limit again, being careful. I think that the news API, aside from behaving poorly (things like ‘&q.enriched.url.concepts.concept.relevance=0.9’ don’t work). Think I’m going to add more user interaction and less machine learning. Store it all for later page ranking?

Phil 7.21.15

8:00 – 4:30 SR

  • Server is behaving with the stricter trustchain.
  • This is the AlchemyNews REST API Documentation, and the list of fields that can be returned. And Twitter access, BTW.
  • Blew through my limits for the day trying to figure out keywords. Asking for academic license.
  • A good example of how to group query elements: http://alchemyapi.readme.io/docs/sentiment-analysis
  • Need to add sliders for attraction and repulsion (network scalars?). Implemented. Now I need to figure out some good values. I think that we might just have to scale attraction for linked items. It should clean things up and cut down the math a bit.

Phil 7.17.15

8:00 – 2:00 SR

  • The production server is behaving again!
  • Wrote up some thoughts on TypeScript interfaces and fat arrow notation.
  • Working out more subtle network linkages. An item is current (selected?) has potentially several other items that will connect to it. Selecting should also bring up the search results associated with that item (create an itemlist of nearest neighbors). Maybe the item should be created before the results of the query come back. That might make things more modal.

Phil 7.16.15

8:00 – 4:30 SR

  • The production server isn’t visible through the browser, though the test server is. It first I thought it was pre-populated keychains, but when the servers are set up identically, the production server still doesn’t cooperate. Ronda’s putting in a ticket.
  • Helped Ronda generate a PKI request for the new dev server, she’s going to try to make it work on the other two.
  • Looking at Dong’s code, I cannot figure out why he needs fat arrow. His:
    public promiseCaller():void{
       this.promise = this.service.getQueries();
       this.promise.then(this.processData, this.errorData);
    }
    
    public processData = (data:any):void => {
       console.log("got data");
    };
    
    public errorData = (data:any):void => {
       alert("error getting data");
    };
  • And mine
    private goodUserQuery (response:any) {console.log("got data");}
    private goodUserQuery (response:any) {alert("error getting data");}
    public promiseCaller():void{
        this.queryService.submit(qstr, this.goodUserQuery, this.errorResponse);
    }
  • Which calls (in the service):
    public submit(query:string, goodResponse:any, errorResponse:any):any {
       return this.httpService(query).then(goodResponse, errorResponse);
    }
  • And it looks like Google won’t let me use their images as textures. Working at downloading on the server side and storing in a local directory, using PHP. That works just fine! And to keep from downloading the same pix all the time, added a check as well. PHP has pretty much everything you’d ever want to do stuff on the web. But no typing. Must check out Hack one of these days.
  • Adding connections. Finally! Simple conditions are working and up.

Phil 7.15.15

8:00 – 4:00SR

  • Prime day. May poke at that a bit. Disappointing.
  • Call Porsche for oil change and chin cover repair – nope. Tomorrow?
  • Get network connections working – Almost!
  • Add news API integration – nope

Dong Shin 07.15.2015

  • continue from yesterday’s setting up Phil’s laptop for build – done!
    • checked out all client codes
      • Financial Assistant Apps
        •  SVN location: trunk/Sandbox_folders/DONG_SANDBOX/JavaScript/FinancialAssistant
      • Charting App
        • SVN location: trunk/Sandbox_folders/DONG_SANDBOX/webstorm/charts
      • Query Builder App
        • SVN location: trunk/Sandbox_folders/DONG_SANDBOX/webstorm/QueryBuilder
      • Reqonciler App
        • SVN location: trunk/Sandbox_folders/DONG_SANDBOX/webstorm/Reqonciler
    • Configure Deployment Server for the projects
    • Screenshot 2015-07-15 07.44.08Screenshot 2015-07-15 08.39.47Screenshot 2015-07-15 08.40.06
    • changed link to FinancialAssistant in FinancialAssistantService(Java) in WebContent folder to point to valid directory
    • create logging database and use logging.sql to initialize
    • create visibility_scripting database and use visibility_scripting.zip to initialize