Tag Archives: Software Development

Building Blocks

I am currently working on a User Authentication module for a Django project and am anticipating using this in other Django projects. Wondering, not just with the User Authentication module, but other similar common building block modules that I could be working on and using in various projects – how would I plan on doing that.

I am also, for now at least, using Django as my backend for not only the web and mobile applications I am currently working on but also the native iOS apps I have plans to begin soon.

– manzoor

iOS Autolayout

UI is my weakest link in my Software Development journey. But with iOS Autolayout, I am getting a slight taste of the challenges faced when designing the User Interface. My biggest challenge right now – designing for both iPAD and iPhone. Designing just for iPhone has become complicated enough given the range of devices – iPhone 5s to iPhones XS Max.

– manzoor

Dev Workstation Setup

While there is an emphasis on the “dev” portion of my workstation – mostly because there is more of a need to ensure the various tools and their compatibility is maintained. I do want to clarify that I use the same workstation for my personal stuff too.

  1. Reinstall OS
    1. Reformat / Clean HD
    2. Install OS
      1. Set Finder to show / display the desired Folders / Volumes
      2. Set iCloud share to include expected shared folders
    3. Upgrade to macOS Sierra
  2. Install Basic Tools
    1. iTerm 2
    2. Keybase / 1password
    3. Slack
    4. chrome / Firefox
    5. —Google Drive—
    6. Viber / WhatsApp <- more personal than development need
    7. Sublime / atom
  3. Install Dev Tools
    1. Xcode – this can take a v-e-r-y l-o-n-g time
    2. homebrew – check brew.sh for instruction
    3. git
      1. Xcode Developer Tools
    4. cocoapods
    5. vagrant
    6. virtualbox
    7. npm
    8. docker
    9. terraform
    10. kops
    11. kubectl
    12. kuber
    13. bundler – this needs to happen after RVM
      1. sudo gem install bundler
      2. cd ~/dev/GAR/chef-repo ; bundle install
    14. rvm with latest ruby (NOTE: ruby v2.3.1 seems to be a good one to stick to)
      1. curl -L https://get.rvm.io | bash -s stable –auto-dotfiles –autolibs=enable –ruby
      2. rvm install 2.3.1
    15. gem install librarian-chef
      1. librarian-chef install
      2. berks install
    16. chef DK
    17. Google Cloud Platform / Engine
    18. AWS CLI
      1. brew install awscli

Issues:
rvm shell_session_update: command not found
Possible solution –
http://superuser.com/questions/1044130/why-am-i-having-how-can-i-fix-this-error-shell-session-update-command-not-f

Note:
Uninstall rvm
1. rvm implode
2. gem uninstall rvm

chef aws provisining -> https://christinemdraper.wordpress.com/2015/01/31/deploying-a-multi-node-application-to-aws-using-chef-provisioning/

VM

  1. list available vagrant box – vagrant box list
  2. add vagrant image (if not already in the list above) – vagrant box add ; vagrant box add ubuntu/trusty64
  3. initialize a vagrant image – vagrant init
  4. bring up the vagrant box – vagrant up
  5. log / ssh into the vagrant box – vagrant ssh

rails

  1. sudo apt-get install gnupg2
  2. gpg2 –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
  3. curl -sSL https://rvm.io/mpapis.asc | gpg –import –
  4. curl -L https://get.rvm.io | bash -s stable –rails
  5. source /home/vagrant/.rvm/scripts/rvm
  6. ruby –version
  7. rails –version
  8. sudo apt-get install git
  9. eval ssh-agent $SHELL

cocoapods

While I try to figure out why all the available PODs seem to be written in Objective-C (and not Swift) I need to make notes for using Objective-C (in addition to using CocoaPods) in my iOS App(s).

Pre-Req:

  • Xcode
  • cocoapods
  1. Create (and save) a Project
  2. on a Command Line Shell cd into the location of the App
  3. Run “pod init”
  4. Edit the “Podfile” that is created
    1. add the specific POD Framework entry
    2. Uncomment “use_frameworks!”
  5. Run / execute “pod install” (from the command line)
  6. Close the “Project” and open the “Workspace” (.xcworkspace file)
  7. If the POD Library is in Objectve-C, will need to follow the next few steps (to create a Bridging Header)
    1. Right Click on the Main Folder for the Project and Create / Add a New Objectve-C File (call it anything you want)
    2. Follow the flow till it asks to “Configure an Objective-C bridging header”. Definitely choose / select this option
    3. There should be a couple of files that gets created / generated. Delete (or not) all the files except for the one that ends with “-Bridging-Header.h”
    4. Edit the “-Bridging-Header.h” file to add the “import” for the POD Library
    5. Now to use the POD Library in any class, just add the “import” in the class file(s)
  8. that should do it

– manzoor

Python, Ruby & Swift

These are simply programming languages to help us learn “Object Oriented Programming”. While we will be trying to learn each of the languages as best we can, the goal is to learn to Program and user “Object Oriented Programming” as the foundation.

Data Structures

Struct

Class

  • Class Inheritence

Struct vs Class

  1. Class requires initializer to be written and Struct does not require
  2. Struct is of “Value Type”, Class is “Reference Type”

Method

  1. Instance Method

Initializer

Default / Memberwise

Functions

Optionals (need to go over) / Unwrapping Optionals / Optionals Chaining

– manzoor

Related Posts (internal)