Showing posts with label google maps api. Show all posts
Showing posts with label google maps api. Show all posts

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) @ Freelancer.com. 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
Problems 
  • 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)
Curiosity
Events

Links