Week 4 Shorts
Architecture vs Design Pattern
![](/assets/img/shorts/programming.png )
Architecture patterns resolve macro-level problems and focus on the overall organization of the application. Defines the system components and the interaction between the components. For Example: MVC, MVVM, Microservice. on the other hand, Design patterns resolve micro problems and focus on providing a solution for common development problems. Examples of some development problems like notifying an object, how to use a shared resource, etc. Design Pattern examples: singleton, Observer.
Hybrid vs Cross Platform Mobile Application
![](/assets/img/shorts/programming.png )
Hybrid applications are made up of a combination of web and native technologies. The app UI is rendered into a native web browser component, so native is just a container here. In contrast, cross-platform applications are made up using a third-party framework. These third-party frameworks create wrappers on native components for all platforms so that a single source should work on multiple platforms. All the responsibility to render is moved to these frameworks.
Linting
![](/assets/img/shorts/programming.png )
Linting is the process of analysing code to identify problems in a code. Linter is a tool used for the process. It scans the code and identifies syntax problems, coding standards non-adherence and at some level logical problems. It is also named a static code analyzer because it runs on source code without executing.
CI/CD
![](/assets/img/shorts/devops.png )
CI/CD is the practice followed to ensure the reliability of the application after each small code change. Continuous integration is an automation process for building and testing the application after every change. Continuous deployment is the next stage to handling the deployment of the application in test & production environments.
Week 3 Shorts
Memory Layout of C Program
![](/assets/img/shorts/programming.png )
An executable file of a C program is loaded into RAM into Four separate segments. Text Segment contains executable instructions. The Stack Segment is reserved for local variables and function calls. The Heap Segment memory can be allocated/deallocated at run time using memory management methods. Data Segment is for global and static variables. It is further categorized into initialized and uninitialized data segments.
SOAP vs REST
![](/assets/img/shorts/programming.png )
SOAP is a protocol that defines strict guidelines for communication between applications. SOAP exposes data through functions (like getEmploy). SOAP has complexity and overhead due to built-in rules.
Rest provides an architecture for communication and the developer is free to set guidelines. Any service which follows client-server and Layered architecture returns uniform and cachable data without any state is REST. REST uses URI to expose data(/employ).
Week 2 Shorts
Garbage Collector vs ARC
![](/assets/img/shorts/programming.png )
Garbage Collector is a technique to traverse the object graph at intermediate intervals and mark every object in use. At the end of a cycle, release every object which was not marked. On the contrary, Reference counting is a technique to maintain object reference count as metadata. When the reference count drops to zero object is recycled.
HTTPS vs SSL pinning
![](/assets/img/shorts/encryption.png )
HTTPS provide secure communication between client and server by encrypting the data. During the Handshake process, an SSL certificate containing a public key is exchanged to encrypt the data. SSL pinning adds one more layer of security by keeping a local copy of the server SSL certificate. During Handshake it validates the exchange certificate with the local copy.
Noncopyable Value types in Swift
![](/assets/img/shorts/swift.png )
By Default, Struct or Enum in Swift are copyable and do not fit well to represent unique resources. Noncopyable provides this capability by ensuring a unique ownership. Classes can also represent a unique resource as only reference is copied but with the complexity of sharing ownership.
Week 1 Shorts
ARC is a compile-time feature
![](/assets/img/shorts/swift.png )
ARC in Swift is a compile-time feature. The compiler inserts the retain before every assignment and releases it after the last use of reference. On the other hand, the Garbage collector is a run time feature.
Declarative vs Imperative Programming
![](/assets/img/shorts/programming.png )
Imperative programming, where we provide step-by-step instructions to describe how to perform a particular task. By contrast, declarative programming is where code only specifies what is required for a task.
HTTP vs HTTPS
![](/assets/img/shorts/network.png )
Both are used for transferring data over the network. However, HTTPS is "HTTP plus encryption plus verification", where s stands secure. HTTPS encrypt HTTP requests and responses using Public key cryptography.
Symmetric vs Asymmetric Cryptography
![](/assets/img/shorts/encryption.png )
Cryptography is a technique to encrypt data to protect it from illegal access. The symmetric method uses a single key to encrypt and decrypt the data while In the Asymmetric a public key is used to encrypt and a private key to decrypt the data.
Certificate pinning
![](/assets/img/shorts/encryption.png )
Certificate pinning is a technique for secure communication between client and server. The client application keeps a local copy of the public certificate. During Handshake, the client validates the public certificate received from the server with the local copy and if it succeeds then the client pins the certificate for further validation.