Monday, 21 April 2014

Post WDI - iOS Development, Objective-C (Object-Oriented), C-Programming (Procedural), XCode 5, Cocoa Touch

Activities @ TeamTreeHouse - 

iOS Development (using Xcode 5) with Douglass Turner - 
  • DONE Fundamentals of C (
    • Console Outputs
    • Code Source Files, 
    • Compiler (C Language), 
    • Executables, 
    • 'Include' Statement, 
    • Header Files prepended to Source Files before Build/Run and Conversion to Executable by Compiler, 
    • 'Main' Function entry point to C Programs,
    • Code Blocks and Statements, 
    • Return Types and Values for Functions, 
    • Variables {%d ints, %f floats, %c chars}, 
    • Array Declaration and Initialization, 
    • Operators {specify how variables manipulated}, 
    • Expressions {combine vars creating new values}, 
    • Auto Incrementing before/after Assignment, 
    • Modulus {Long Division Remainder})
  • DONE Functional Programming in C (
    • Control Flow Statements, 
      • For Loops, While and Do While Loops, 
      • If Else Conditional, 
      • Switch Statement Conditional {Comparisons}, 
    • Functions {Declaration, Main Function Use, Implementation}, 
    • Scoping Context Rules and Visibility
  • DONE Objective-C Basics (
    • Pointers to Memory Address, SizeOf, %ld, printf, 
      • Testing Length for Mem Usage Req'd in Bytes, 
      • Pointers '*xxx' Declaration {Tracks Values}, 
      • Pointer to Address '&xxx', 
      • Access/Retrieval De-Referencing Pointer '*xxx', 
      • Structs combined with Functions, 
      • Encapsulation {Well-defined fns with narrow focus to manage tedious programming aspects}) 
  • DONE Intro to Objective-C (
    • Compare Objective-C with Procedural C { 
      • Procedural-C All-in-one-file {typedef, fn, use in main, defined manipulation fns}
      • Objective-C {Object-Oriented Programming OOP} with Class-split-across-two-files {
      • .h header to manipulate class and @interfaces with others as base/super or subclass with instance methods  -(void), params and names associated with params and setters and getters, 
      • .m for background implementation not public}, 
    • C (Struct) VS OOP (Class/Objects)
    • Collections of Classes in Objective-C {NSArray, etc}, 
    • Calling Methods with [ ] {square brackets}, 
    • Allocating Memory {alloc} and Initializing {init}, 
    • @property {simplified setter and getter syntax with details covered by Compiler}, 
    • Inheritance where 'IS A' relationship exists {Base/Super Class with shared methods/properties and Sub Classes/Variations sharing characteristics, changeable in implementation of method or properties, same methods [aka messages] but diff results}, 
    • Composition where get another classes 'state'/'behaviour' / 'properties'/'methods' {want Capabilities of other Class without complexities/details which occurs in Inheritance where become like other Class, i.e. compose Shape with a Button where Button refers to/points to the Shape and gains its functionality}, 
    • Polymorphism 
  • Xcode 5 Shortcuts (CMD + [ --> Un-Indent Code, CMD + ] --> Indent Code)
  • DONE Cocoa Foundation Framework (
    • Objective-C Classes, 
    • Generality Theme of Object-Oriented Programming,
    • 'Init' special methods {i.e. initWithInt}, 
    • NSNumber Class, 
    • %@ to communicate with class to use its 'description' method to display info about it, 
    • Alloc Init (Convenience Constructors) VS
    • Literal Notation (simpler alternative to initialize), 
    • Concatenation {Nesting NSString Methods}, Uppercase, 
    • NSArray (retrieve only Container Class), 
    • NSMutableArray (modifiable generic wrapper Class), 
    • For 'In' Loop (construct 'in' creates local var to lookup array and auto increments code block), 
    • NSDictionary & NSMutableDictionary (collections of Key(unique)/Value pairs), Create using Preexisting Dictionaries) 
  • DONE Advanced Objective-C (
    • C Memory Mgmt {vars using Dynamic Memory} VS 
    • Objective-C Memory Mgmt {Compiler handled}, 
    • Memory Alloc & Free Calls {calls to free memory},
    • Reference Counting Technique of Objective-C {tracking qty of pointers referring to objects in app} Implem. by Compiler and Compiler Hints {from Developer}, 
    • Memory Deallocation when Reference Count is 'nil', 
    • Memory Mgmt Hints {provided via Properties to Compiler} @property(nonatomic{threading}, memory-directive) , 
    • Memory-Directors {Strong (i.e. parent), Copy (i.e. caters for mutable objects}, Weak (i.e. child), Assign}, Parent-Child Rel'ship (Strong/Weak References), 
    • 'Self' Keyword {refers to Object in context of specific instance of class where method being called}, 
    • 'Super' Keyword {calls implementation defined by Super Class and used to 'Override' their methods}, 
    • Categories {approach to create suites of methods sharing a common theme, it extends Classes by adding convenience methods to existing Classes that do not require Sub Classes to implement them}, 
    • Dynamic Typing {general purpose method capable of handling any type of object from any class using 'ID' data type as generic pointer, does not use * like normal types} 
    • Static Typing {when specifically declare type when create instance}, 
    • Objective-C Dynamic Language {flexibility as will always call the relevant Object on the fly}, 
    • 'Description' Method approach {so make obvious we're using it} NSLog(@"%@", [thing description]);
  • DONE Beyond the Basics 
    • Primitive Data (Scalar) Types { char %c, int %d, unsigned int %u,  long %ld, float %f, double %lf } (ordered by mem size req'd in bytes)
      • Fixed Mem Size (Compiler runtime auto allocates to mem block)
      • Auto Mem Addr Storage
    • Pointers
      • Dynamic Mem
      • Variable Storage
      • Mem Addr (i.e. printf("%p", &i);
      • "Passing by Value" (allocating mem twice for same data passed by reference is resource intensive)
      • Best Practice (Pointers)
        • Store Value Single Mem Location
        • Declare and Pass Pointers to Single Mem Location 
        • (i.e. int i = 100; int *i; i) i outputs mem address 
      • Arrays (Mem Addr points to first mem plus offset)
      • Alloc and Init (inherits from NSObject allowing Mem Mgmt)
        • (i.e. NSNumber *number = [[NSNumber alloc] initWithInt:100]
      • Literal Shorthand (Equivalents)
        • NSNumber *fortyTwo = @42; // performs alloc & init 
        • [NSNumber numberWithInt:42]
      • Compiler Directive (highlights shorthand notation in Objective-C, more readable and maintainable)
        • @ - Directive
        • @"" - NSString
        • @100 - NSNumber
        • @[ ] - NSArray
        • @ { } - NSDictionary
      • C Language Reference Documentation (highlights Equivalent Code Snippets)
      • @property - declaration sets up getters and setters methods
      • (nonatomic, ....) - not multi-threaded  (only one process of reading or writing and no decisions on prioritising access to data for multiple pointing processes
      • (...., strong) - reference for 'retaining' object/property with increasing retain count when property declared
      • (...., weak) - reference when no objection to underlying property being deallocated 
        • Parent Child relationship and referencing parent (self)
      • AFC (automatic reference counting) - previously versions req'd maintenance 
      • Retain Count - increase retain count by perform alloc and init causing an object to point to mem location. additional objects pointing to same mem address causes increase of retain count further (i.e. 2). assign pointer to nil for all pointers reduces retain count to 0 (no objects pointing to mem address) and can deallocate
        • NSLog(@“Retain count is %ld”, CFGetRetainCount((__bridge CFTypeRef)book1)); // where book1 is object retain count displaying
      • 'Retain' Cycle (i.e. Book *book1 = [[Book alloc] init]; book1.me = book1;) - creates retain cycle by 'me' child property of book1 (pointing to its parent). if execute (book1 = nil;) then 'me' property is still pointing to book1 so never releasing memory (Memory Leak caused)
      • Help - Document and API Reference
Activities - Other -


Curiosity

Sunday, 20 April 2014

Post WDI - Angular.js


Activities @ 
Lynda - 

Up and Running with AngularJS (2013) with Joseph LeBlanc - DONE
  • AngularJS(
    • Templates, 
    • Angular Activation with ng-app Directive, 
    • Scoped Variables, 
    • Dependencies, 
    • Placeholders {{}},
    • Boilerplate Structure Creation, 
    • Supplying Scoped Data, 
    • Filtering Outputs to Format Raw Data Inputs { using Pipe | with 'uppercase', 'currency', 'json' to debug, etc}, 
    • Listing Data with ng-repeat Directive, 
    • Controlling Scopes and Events with ng-click Directive instead of on-click which looks for global function, 
    • Partials with Jade, 
    • Routing Views without loading whole page with ng-view Directive with Front-End routing instead of back to Server, 
    • Single Page Apps with $routeProvider in Front-End with URLs interpreted by AngularJS instead of Server and URLs bound to Markups or Partials, 
    • Supplying Navigation with Active Buttons bound to URL loaded instead of only ng-click Directive Events, 
    • Controllers to change Navigation State and Links to show possible Views, 
    • Nesting Scopes with Outer and Inner Controllers using ng-controller and ng-view Directives {inner scope only access but not modify outer scope due to self contained data}, 
    • Links to Individual Records and Collections, 
    • Server-Side Integration using Modules to Connect Server-Side Resources and Data to Front-End code, 
    • Hash Symbols in URL for Server Defined Routes in JSON, 
    • AngularJS to Read Data from Routes instead of hard coded in Controllers, 
    • Retrieving Individual Records,
    • Searching Models with real-time Results Filtered as Typed, 
    • Saving Forms to Server with POST Requests using Resource Callbacks, 
    • Search and Reservation functionality on one page, 
  • Links:

Sunday, 30 March 2014

Post WDI - Node.js, Mocha, REPL, Dev Tools, Jade

Challenges
  • Node.js App 
  • Unable to view sub-directories after deploy to Heroku app:
    •  Tested - Procfile, Script Start (in Package.json), Foreman
  • Unable to remove error message that echos when running local Node.js server (tried creating a favicon.ico image and placing in main project directory, public folder, and the module folder indicated with no win)
    • Error: ENOENT, open '/Users/ ... / ... / <project_name> /portfolio/node_modules/express/node_modules/connect/node_modules/static-favicon/../public/favicon.ico'
  • Unable to overcome errors that appear when Testing in later Git Branch called 'Streams' (which includes pushes containing Express Module Sessions). Previous Branch without these Testing errors is 'Mongo', now cloned and progressing with 'Mocha2'. 
    • ~/Documents/ <project_directory>/ ✗ streams ∴ 
    • Error: Error setting TTL index on collection : sessions
    • TypeError: Object Error: Cannot determine state of server has no method 'isCompatible'
  • RIP Rohan Ramsay

  • Unit 5 - Phase 2 - Setting Priorities for Development - DONE
  • Unit 6 - Phase 3 - Concept Definition - DONE 
  • Unit 7 - Phase 4 - Product Dev & Feasibility Assessment - DONE 
  • Assignment 1 - DONE


Activities @ Lynda - 

Up and Running with Evernote for Mac - DONE

Node.js Essential Training with Joseph LeBlanc - DONE
  • Node.js(Modules, Require, Exports, Event Loops and Callbacks, Blocking vs Non-Blocking Environment, HTTP Module, RESTful, NPM Commands, Express Module and Framework,  Dependencies, Jade Templating Engine, Module Getters and Setters, Module Caching and Function Scopes, Reusable Modules with Module.Exports, Handling and Modifying Large Datasets with GET and PUT Requests Returning JSON, Creating Middleware to Modify HTTP Response Headers, Configuration for Unit Testing with Mocha, Should, and Supertest by Decoupling Seed Data and Server from App)
  • Node Package Manager (NPM)
  • Jade Templating Engine
  • Bootstrap 
  • Chrome Postman Plugin (HTTP Requests)
  • Unit Testing (Mocha, Should, Supertest)
  • Istanbul Code Coverage
  • Foreman (Heroku Deployment)
  • REPL (Read Eval Print Loop for interactive Node.js code debugging)
    • Created Custom REPL Gaining Control of App (Command-Line Interface interacting with Node.js App and Inspecting Data in Real-Time, Built Custom Prompt, GET and PUT Actions without HTTP Interface with Equiv. Results)
  • Optimise Module Cool!!
    • Handed Command-Line Arguments passed to Node.js App (Code Written to Accept Command-Line Args, Used Optimist to Return Data as an Object  with Properties and Values at the Cmd-Line instead of as an Array for easier Look-up)
  • Building Command-Line Tools 
    • Package.JSON Bin Scripts, Hashbangs in Server.js so Shell feeds whole Server.js with Node, NPM Link for symbolic link to path of project
  • Links

MongoDB via Mongoose Connection -  DONE
  • Node.js, MongoDB, npm install (save dependencies), Mongo Lab, Mongoose to create schema data for chainable queries, Postman (Chrome Extension), Querying collections in MongoDB database and handling responses, route handling, Jade framework to render template Views, Connect-Mongo middleware to tie Express sessions with MongoDB by parsing cookies 


Activities @ Book Reading

Javascript The Good Parts - DONE


Activities @ Code School

Discover DevTools - DONE


Activities - General
  • TeamTreehouse - Using (Use my basic account) MUST USE PERKS!!!
  • Amazon Web Services - Pending (Use Voucher by June 2014!)
  • General Assembly Courses - Pending (Use Vouchers)
  • Web Host - Pending (continue with Uber or change to Anchor?)

Events Upcoming
  • ATTENDed - ROROSyd Dev Hub - 6:30pm Tues 1 Apr 2014 (2 Market St Syd) 
  • ATTENDed - Codium - State Library of New South Wales, Macquarie Street
  • ATTENDed - M&G Prep Workshop with Tarun - 10am-1pm 12 Apr 2014 (Fishburners)
  • ATTENDed - M&G Graduates - 6:30-9pm 14 Apr 2014 (Mezzanine Level, 56-58 York St)
    • Business Card
Curiosity

    Sunday, 23 March 2014

    WDI Progress Update - Final Project (Littlehumans), Brainstorming, Mock Interviews, Codium

    Challenges
    • Littlehumans (Medical App for Midwives and Parents of New Born Children)
      • Problems faced
        • Combined OAuth Login (Facebook, Twitter, Google) with Devise spend all day Saturday trying to get it to work in Production environment (managed to get Google, Facebook, and Twitter to work)
        • See 'About Us' page at the Littlehumans website for other challenges
    • Dancing at Karaoke!
    Progress @ General Assembly (GA)
    • Littlehumans Final Project
      • Heroku Link: Littlehumans App    
      • Tech Stack: View the 'About Us' page at the link above
      • Purpose: Midwife app for Midwives and Parents to track and share New Born Baby information and key Moments (input from my partner who is a professional midwife)
    • Sunday Javascript - with Daniel Tsui
      • Challenging Tests
      • Immediately Invoked Function (IIFE)
      • .Then
      • Hoisting
      • First Class Citizen
    • Javascript Ecosystem - Presentation by Je Turnbull
      • Multi-paradigm (MPM) and styles 
      • Automation and Task Runners
      • Package Management
      • JS Essential Knowledge and Tools
      • Front-end Job Questions
      • JS Testing
      • Scope and Closures
      • Recommended Books
    • Codium Group Project
      • Twitter Gem - Solved ability to scrape blog posts
    Curiosity

    Friday, 21 March 2014

    WDI Progress Update - Data Structures, Recursion (Towers of Hanoi), Codium Group Project, RSpec, Twitter Gems, Secret Keys, Amazon Web Services

    Challenges
    • Problems fixed (lesson learnt: >4 hrs sleep required to RSpec effectively) 
      • RSpec refactoring (special attention!)- Thanks Taryn East
      • Activity Monitor & Which- Thanks Pranava Swaroop for tip on how to kill Mac tasks, and how to find which directory my Git was installed in 'which git'
      • Text navigation - Thanks Daniel Tsui for tip on how to navigate text quickly with ALT+Arrow

    Progress @ General Assembly (GA)
    • Computer Science (Data Structures {Queues, Stacks, Linked Lists {Nodes, Values, Pointers} }, LILO, FIFO, Random Access VS Binary Search) 
    • Codium Group Project
      • Gems Tested (Twitter Feed Scraper): 
        • Twitter Gem
        • Anemone Gem (Crawl, parse DOM, and harvest, but JS security issue without innerText)
      • Secret Keys Setup: Heroku, Devise, Twitter
      • Pry Debugging

    • Unit 3 - Organisational Strategy & NPD DONE
    • Unit 4 - Idea Generation IN PROGRESS - must finish on w/e before Final Project week

    Curiosity
    • Amazon Web Services - Thanks GA for Voucher! (must remember to use it by June 2014!)
    • SQL & Data Structures - Revise Engineering Notes! (eww..)
    • Anchor - may be the solution to my Rails and broader web hosting problems

    Tuesday, 18 March 2014

    WDI Progress Update - Computer Science (Algorithms, Big O Notation), Codium

    Challenges
    • Problems fixed 
      • Merge Array Sort made most intriguing - Thanks Taryn East
      • Git refactoring of RSpec using Bash Terminal and Regular Expressions - Thanks Taryn East 
    • Final Project Brainstorming
      • Feature Implementation Wants (Pivotal Tracker Link):
        • Wireframe 
        • Sass
        • Web Sockets Server Live Broadcast
        • Stripe Payment System 
        • Google OAuth
        • Eventmachine
        • Carrierwave for File Attachments
        • SSL in Rails
        • W3C Accessibility Standards Features
        • Temporary Communications (not Permanency)
        • Visibility and Editability of Cookies, Privacy, and Security
        • Visible Live Annotations
      • Umby Racks Crowdsourcing App encouragement - Thanks Daniel Tsui

    Progress @ General Assembly (GA)
    • Computer Science (Algorithms Types & Choices {Search, Sort}, Big O Notation {Logarithms}, Benchmarking Tools {Binary VS Big O}, Rails Quick Sort, Factorials, Language Paradigms, Recursion, Fibonacci) 
    • Codium Group Project (Git refactoring of RSpec using Bash)
    • Gems (Ruby Prof, Simplecov)

    Friday, 14 March 2014

    WDI Progress Update - Advanced Rails Caching, SASS, Websockets, Javascript Evolution & Frameworks, Group Project Implementation

    Challenges
    • Backbone.js and Burning Airlines - 6 hrs preparing Burning Airlines MVC for Flights on 13th Mar:
      • Problems fixed thanks to help from team in the morning:
        • Missing from app.js
          • Async call to fetch flight collection model and Router
        • Correction in FlightsController
          • 'respond_with @flights' instead of 'respond_with :json => @flights' to prevent embedded JSON
        • Removing JBuilder.json file that was merged after git pull from master, and caused only id and url to appear at URL /flights/flights.json (code previously pushed compiled successfully and listed flights)
        • Binding(this) to enable Search button functionality for on-click 
        • Debugging in Chrome Inspect Element using CMD+' to skip to next line of code for testing, and hovering over variables to show current value 
    • Pomodoro Time Management

    Progress @ General Assembly (GA)
    • Group Airline Project (Implementation)
      • Team: Marcus Hoile, Sam Peters, Alberto Forni, Luke Schoen
    • Javascript Evolution
      • JS Framework Types: 
        • Full-stack - Derby (real-time apps), Sails (like Rails), Meteor (new with potential security issues)
        • Front-end - Backbone.js, Marionette, Knockout, React, CanJS
        • Front-end + Datamining - Angular, Ember
        • Back-end frameworks, Websockets, 
        • Templating - Handlebars
        • Other: Batman, Express Polymer, Socketstream, Clojure
      • Websockets (Socket.io to manage HTML5 websockets, real-time control to sync broadcast changes without overhead HTTP)
      • Proxy Servers - NGrok
      • Separate Loading Templates - .jst.ejs and Global Namespaces
    • Caching in Rails
      • Client-side & Server-side (Page, Action, Fragment)
      • ActionPageCaching GEM
      • ActionPackCaching GEM
      • Rake Task Sweepers
      • SQL Query Caching
      • Memcache, Nullcache
    • SASS (Nested, Interpolating Content, Variables, Mixins, Cross-File Mixins, Inheritance, Pseudo Selectors, Asset Pipeline, Image-Path and Asset-Path for Production)
    • Presentation TankStream Labs
      • Key Takeaways:
        • Lifestyle & Work
          • Startup Org Fit Evaluation Essentials
          • Recording Skills
          • Cocurricular and Coding
        • Language Agility
          • Erlang, Haskell
        • Terminology & Tools
          • Strong Parameters
          • Async Processing and Delays (SidekiQ + Reddis)
          • Scheduling Processes (Cron + Whenever)
          • XML Parsing (Nokogiri)
          • PDF (Prawn, PDFQueue)
          • Debugging (Pry)
          • Uploading Files (Paperclip, Carrierwave)
          • Sublime GEMS (GEM Browser, Git Extensions)
          • JSON (JBuilder, JSON Serializers, Draper)
          • Image Resizing (LibXML image munging, Image Magic)
          • Communicate Validation in Natural Language (Chronic, Chronorails GEM)
    Purchases
    Events
    • Fisburners - Chat with Mark (Movie guru), met David (recommended Founders Institute), Dimitri, Jenny, and Matthews B'day

    Wednesday, 12 March 2014

    WDI Progress Update - Group Project (Burning Airlines), Backbone.js, TDD, BDD, Node.js

    Progress @ General Assembly (GA)
    • Group Airline Project (Planning)
    • Backbone.js (JSON, Namespacing, View Event Management, Dynamic Underscore Templates, Prototypal Inheritance, View Extensions, MVC, InspectElement Testing, Memory Leaks, Zombie Events, Seperation of Concerns, Object Properties, Backbone View Element (EL) Property, Customising Backbone Element, Models (Getters, Setter Methods), Collections, Routers, Slugs, Rails and Node.js, jBuilder)
    • Test Driven Development (TDD) (Test Unit, RSpec, Mocha, Mini Test, Meta Programming, Unit Tests, Functional Tests, Integration Tests, TestHelper, params.to_yaml, Fake Devise Login)
    • Behaviour Driven Development (BDD)
    • Gems (Shoulda, Mocha, Turn, Simplecov)
    • Mailers
    • Polymorphic Joins/Associations (___ABLE, using Rails Console Testing)
    • Self Joins 
    • Security 
    • Presentation - Interview Process, Mock Interview, Elevator Pitches - Tarun Mookley, Tiffany McHugh
    • Presentation - Node.js - Vlad Filippov
      • Single Page Apps
      • JSON API's
      • Modules
      • Grunt, JSHint (Code Quality)
      • PhantomJS (Screenshots Progress)
      • CSS Preprocessors (Stylus)
    Events
    • Sydinmotion.com (Garrett IOS next Tuesday)
    • ROROSyd 11 Mar - Met Mark from Coogee, Mick (SysAdmin recommended SLUG Meetup, tail -f flow)
    • Sydney Linux Meetup Group (SLUG) SLUG Meetup - 6pm 28th Mar
    Purchases
    • TeamTreeHouse.com (Basic account)
    Curiosity
    • Sphero3D (toy)
    • Fitnesse (create rake feature in Gem)
    • Snapsearch.io
    • Dash Docsets, Dash Cheatsheets
    • Kitchen.ci for Chef
    • Vagrantup.com
    • Bash Books
    • NIEM
    • Startups
      • Fishburners
      • PushStart
      • StartMate
      • ATP
      • Muru D
      • River City Labs
      • Resource 88
      • Tank Stream Labs
      • TheHub
      • WeCo
      • York Butter Factory
    • Training: TeamTreeHouse, PluralSite