Friday, 26 September 2014

InDesign CC 2014, Competition Entry, Analogies, Responsive Design, Design Patterns, Google Maps API, AngularJS

Design Activities @ Lynda - 

60% Complete InDesign CC Essential Training David Blatner
  • DONE Competition Entry submitted my first ever design prepared with InDesign to a competition where the Design a Flyer for Oil and Gas Engineering (Engenya GmbH) @ Took about ~10 hrs using InDesign (yikes! but good practice and fun) for Chance to win US$90 (not a chance though as only got rated 2/5 stars). Lesson Learnt: Always clarify whether or not to take design specification wording literally. 

Luke's Crazy Analogy for the Day

  • Traditional SPAs vs AngularJS vs Precast Concrete vs Cast In-Situ
    • Single Page Apps (SPAs aka AJAX apps) traditionally transport data asynchronously between client-side view (template HTML) and server-side data model (JSON or SQL database) via a RESTful controller using the MVC design pattern.
    • AngularJS Apps ship the template HTML and data model to the browser for assembly whilst the server statically serves templates and associated data required
    • Static Modular Precast Concrete present a DRY solution based on standardised designs that are pre-manufactured using materials in a factory, simply verified by design at fit for purpose, and shipped to site.
    • Cast In-Situ Concrete solutions for unique situations require costly ad-hoc design and verification prior to shipping of raw materials to site.
    • Dynamic Module Precast Concrete could be a hybrid AngularJS-like solution that enables the static serving of templates (designs) and data (constraints) that ship raw materials to site where a modular robotic contraption adapts them automatically to site environmental variable conditions and builds in-situ in real-time 
  • Books 
    • DONE AngularJS Book
      • Favourite Sections: 
        • Chapter 6: API Parent Directives to Coordinate Child Directives
        • Chapter 7: $location Service, and $safeApply Monkey Patch, AngularJS Lifecycle, Module Loading Phases and Configurations, API calls (Factory, Service, Provider), Communicating between Scopes ($on, $emit, and $broadcast) (Example Here)
    • DONE JavaScript Testing with Jasmine
    • DONE Google Maps API V2
    • READ (only programmed using 50%) Google Maps API V3 (excellent!)
    • READ Redis and Resque GitHub Article (excellent!)
    • 10% COMPLETE Enterprise Rails
    • IN PROGRESS Journey into Mobile Web @ Codeschool
  • Data Structures
    • Dictionaries 
      • Dfn: Queried (i.e. CRUD, search) Data Structures. Implementation choice affects Performance. Try each checking abstraction procedure call overhead to avoid non-time-critical options. Maintainable by Isolate Dict. Data Struct. (min. code) from Interface (bus. logic) (i.e. Separation of Concerns) }
      • Hash Tables
      • Skip Lists
      • Balanced/Unbalanced Binary Search Trees (BTrees)
    • Priority Queues 
      • Dfn: Quick Access Key in Set with Highest Retrieval Priority
      • Applic: 
        • Sort Ordered Tree Struct. Each Leaf (i.e. 7/2 or 1/5) determines Priority (i.e. Month then Date) }
    • Suffix Trees & Arrays {
      • Dfn: Trie (Tree Struct) to process checking if X is subString of String. Faster in Linear (search time is linear to String length) instead of O(n^2). Expensive in Memory terms.
      • Applic:
        • String problems. Node for each Char. Root is Null String. Branches at unique Chars. }
    • Graph Data Struct {
      • Dfn: Best for Algorithms repeatedly asking if (a,b) is in X. Note: Google Maps map stored in Edge Weighted Directed Graph, with Locations (Vertices) and transportation Paths (Edges)
      • Issues
        • Problem 1: Memory to remember large qty of Vertices and Edges. In-Memory DB that is Queried to Insert/Delete Vertices/Edges from Graph at runtime will not work properly with traditional Adjacency List
        • Solution 1: Streaming Library under the hood to Dynamically Load resources
          • Algorithms (e.g. Link)
            • Quad-Trees 
            • Frustum Culling 
      • Applic:
        • Adjacency Matrices 
          • Example - Best with Repeated Edge Insert/Delete using Small/Dense Graphs with say 100 Vertices, Adjacency Matrix has 10,000 entries
          • Algorithms (suitable): 
            • All-Pairs Shortest Path
        • Adjacency Lists
          • Applic. Best with Solving Maze Puzzle with One Solution using Sparse Graphs (i.e. Google Maps)
          • Example - Best with Attributes Insert/Delete of Graph Edge or Vertex (i.e. size, colour). Handle as Extra Records in Vertex or Edge Records 
          • Algorithms (suitable): 
            • Binary Search Trees (BTrees)
            • DFS(Depth-First Search)-based Algorithms with Iterative Deepening (traverses nodes and edges, Remembering Previous Nodes to avoid Repetitive Infinite Loop and to prevent Not Reaching all nodes)


No comments:

Post a Comment