# Notes

## Tej Pratap Singh's Notes

- [Notes: Front Page](https://notes.tejpratapsingh.com/_/notes-front-page.md): All notes listed here

## Windows Tips

- [PowerSelll](https://notes.tejpratapsingh.com/_/windows-tips/powerselll.md)
- [Rename all files, replacing " " with "\_"](https://notes.tejpratapsingh.com/_/windows-tips/powerselll/rename-all-files-replacing-with-_.md): Rename all files, remove space with underscore
- [Rename all files, removing first 3 characters](https://notes.tejpratapsingh.com/_/windows-tips/powerselll/rename-all-files-removing-first-3-characters.md): Rename all files, remove first 3 chars

## Offline First Data Sync

- [Offline First Data Sync](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync.md): How to successfully implement data sync between 2 devices
- [Offline Data](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync/offline-data.md): Data you collect offline, has to be shared with other devices
- [Online Data](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync/online-data.md): Your Online datastore, should be quarriable.
- [File Store / S3](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync/file-store-s3.md): Online Data bucket to upload database files
- [Sync Logic](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync/sync-logic.md): Now the magic that will sync everything.
- [Big Brother](https://notes.tejpratapsingh.com/_/offline-first-data-sync/offline-first-data-sync/sync-logic/big-brother.md): We always know who the Boss is.

## JavaScript

- [JavaScript Tips](https://notes.tejpratapsingh.com/_/javascript-tips/javascript-tips.md): Tips for JavaScript and browser
- [Save blob as File](https://notes.tejpratapsingh.com/_/javascript-tips/javascript-tips/save-blob-as-file.md): How to save a blob in you disk as a file

## Android

- [AOSP](https://notes.tejpratapsingh.com/_/android-tips/aosp.md): Android Open Source Project
- [Clone AOSP repository](https://notes.tejpratapsingh.com/_/android-tips/aosp/clone-aosp-repository.md)
- [Directory Structure](https://notes.tejpratapsingh.com/_/android-tips/aosp/directory-structure.md)
- [Setup IDE](https://notes.tejpratapsingh.com/_/android-tips/aosp/setup-ide.md): Setup your choice of ide for entire AOSP development
- [Setup VSCode](https://notes.tejpratapsingh.com/_/android-tips/aosp/setup-ide/setup-vscode.md)
- [Build](https://notes.tejpratapsingh.com/_/android-tips/aosp/build.md): AOSP uses soong build which uses Android.bp for configuration
- [BluePrint for Application Project](https://notes.tejpratapsingh.com/_/android-tips/aosp/build/blueprint-for-application-project.md): How to configure Android.bp for an application
- [BluePrint for Android Library Project](https://notes.tejpratapsingh.com/_/android-tips/aosp/build/blueprint-for-android-library-project.md): How to configure Android.bp for an android library
- [Manifest](https://notes.tejpratapsingh.com/_/android-tips/aosp/manifest.md): Capabilities of AOSP development in App Manifest file.
- [sharedUserId](https://notes.tejpratapsingh.com/_/android-tips/aosp/manifest/shareduserid.md): android:sharedUserId="com.example.shared"
- [persistant](https://notes.tejpratapsingh.com/_/android-tips/aosp/manifest/persistant.md): android:persistent, makes app running at all times
- [Gradle](https://notes.tejpratapsingh.com/_/android-tips/gradle.md): Tips to create efficient gradle script
- [Create Custom Build Config Variables](https://notes.tejpratapsingh.com/_/android-tips/gradle/create-custom-build-config-variables.md): Add Custom fields to
- [Create Custom manifest Variables](https://notes.tejpratapsingh.com/_/android-tips/gradle/create-custom-manifest-variables.md)
- [Make app debugable](https://notes.tejpratapsingh.com/_/android-tips/gradle/make-app-debugable.md)
- [Android Process](https://notes.tejpratapsingh.com/_/android-tips/android-process.md)
- [Find a process by name](https://notes.tejpratapsingh.com/_/android-tips/android-process/find-a-process-by-name.md): find a process using ps and grep
- [Kill a process by Id](https://notes.tejpratapsingh.com/_/android-tips/android-process/kill-a-process-by-id.md): Kill a process in Android or Linux
- [Catch any exception in Android](https://notes.tejpratapsingh.com/_/android-tips/catch-any-exception-in-android.md): Implement custom exception logger (lust like CrashAnalytics)
- [Theming](https://notes.tejpratapsingh.com/_/android-tips/theming/theming.md): Ways to theme you android
- [RRO](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/rro.md): Runtime Resource Overlay
- [RRO Internals](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/rro/rro-internals.md): How RRO works internally
- [RRO classes in AOSP](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/rro/rro-classes-in-aosp.md)
- [RRO Example](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/rro/rro-example.md)
- [RRO Permission](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/rro/rro-permission.md)
- [Fabricated RRO (FRRO)](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/fabricated-rro-frro.md): Fabricated RRO is build on top traditional RRO system
- [FRRO Example](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/fabricated-rro-frro/frro-example.md)
- [Permission](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/fabricated-rro-frro/permission.md): Here are the permissions required for using Fabricated RRO
- [Context Hijack](https://notes.tejpratapsingh.com/_/android-tips/theming/theming/context-hijack.md): Use resources of other application
- [Basics](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/basics.md): Basics of android development
- [Lifecycle](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/basics/lifecycle.md): Lifecycle of diffetent components in Android
- [Activity](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/basics/lifecycle/activity.md): Activity lifecycle with saved instance state
- [Fragment](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/basics/lifecycle/fragment.md): Fragment Lifecycle
- [Fragment add](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/basics/lifecycle/fragment/fragment-add.md): Fragment Manager add() lifecycle
- [Lifecycle Aware Custom Class](https://notes.tejpratapsingh.com/_/android-tips/lifecycle/lifecycle-aware-custom-class.md): A custom business class that can be lifecycle aware, just like ViewModel
- [Interview Questions](https://notes.tejpratapsingh.com/_/android-tips/interview/interview-questions.md)
- [Architecture Pattern](https://notes.tejpratapsingh.com/_/android-tips/interview/architecture-pattern.md)
- [MVC Architecture pattern](https://notes.tejpratapsingh.com/_/android-tips/interview/architecture-pattern/mvc-architecture-pattern.md)
- [MVP Architecture Pattern](https://notes.tejpratapsingh.com/_/android-tips/interview/architecture-pattern/mvp-architecture-pattern.md)
- [MVVM Architecture Pattern](https://notes.tejpratapsingh.com/_/android-tips/interview/architecture-pattern/mvvm-architecture-pattern.md)
- [Design Patterns](https://notes.tejpratapsingh.com/_/android-tips/interview/design-patterns.md)
- [General Kotlin and Android Dev](https://notes.tejpratapsingh.com/_/android-tips/interview/general-kotlin-and-android-dev.md)
- [Interview Prep 1](https://notes.tejpratapsingh.com/_/android-tips/interview/general-kotlin-and-android-dev/interview-prep-1.md)
- [Interview Prep 2](https://notes.tejpratapsingh.com/_/android-tips/interview/general-kotlin-and-android-dev/interview-prep-2.md)
- [AOSP](https://notes.tejpratapsingh.com/_/android-tips/interview/aosp.md)
- [Interview AOSP 1](https://notes.tejpratapsingh.com/_/android-tips/interview/aosp/interview-aosp-1.md)
- [Interview AOSP 2](https://notes.tejpratapsingh.com/_/android-tips/interview/aosp/interview-aosp-2.md)
- [Compose](https://notes.tejpratapsingh.com/_/android-tips/interview/compose.md)
- [Compose Part 1](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-1.md)
- [Compose Part 2](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-2.md)
- [Compose Part 3](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-3.md)
- [Compose Part 4](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-4.md)
- [Compose Part 5](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-5.md)
- [Compose Part 6](https://notes.tejpratapsingh.com/_/android-tips/interview/compose/compose-part-6.md)
- [Simple AIDL Communication](https://notes.tejpratapsingh.com/_/android-tips/aidl/simple-aidl-communication.md): AIDL is Android's way of achieving IPC.
- [Creating an AIDL file](https://notes.tejpratapsingh.com/_/android-tips/aidl/simple-aidl-communication/creating-an-aidl-file.md): an .aidl file is a barebone description of set of API's server exposes
- [Create an AIDL server](https://notes.tejpratapsingh.com/_/android-tips/aidl/simple-aidl-communication/create-an-aidl-server.md): AIDL server app exposes an service.
- [Create AIDL client](https://notes.tejpratapsingh.com/_/android-tips/aidl/simple-aidl-communication/create-aidl-client.md): An AIDL client connects to a exposed AIDL Service via Binders
- [Limitations](https://notes.tejpratapsingh.com/_/android-tips/aidl/simple-aidl-communication/limitations.md)
- [AIDL with callback](https://notes.tejpratapsingh.com/_/android-tips/aidl/aidl-with-callback.md): An AILD will callback methods
- [Create AILD interfaces](https://notes.tejpratapsingh.com/_/android-tips/aidl/aidl-with-callback/create-aild-interfaces.md): Main interface as well as its callback
- [Create an AIDL server](https://notes.tejpratapsingh.com/_/android-tips/aidl/aidl-with-callback/create-an-aidl-server.md): Server which will expose a service
- [Create AIDL client](https://notes.tejpratapsingh.com/_/android-tips/aidl/aidl-with-callback/create-aidl-client.md)

## Java Testing

- [Java Testing](https://notes.tejpratapsingh.com/_/java-testing/java-testing.md)
- [Mockito](https://notes.tejpratapsingh.com/_/java-testing/mockito.md): Mocking framework for unit tests in Java
- [Mockito.mock()](https://notes.tejpratapsingh.com/_/java-testing/mockito/mockito.mock.md): Creates a mock of any non final class
- [Mockito.spy()](https://notes.tejpratapsingh.com/_/java-testing/mockito/mockito.spy.md)
- [Mockito.verify()](https://notes.tejpratapsingh.com/_/java-testing/mockito/mockito.verify.md): Verify interactions with your mock
- [Mockito.mockStatic()](https://notes.tejpratapsingh.com/_/java-testing/mockito/mockito.mockstatic.md): Mock static methods without PowerMock
- [ArgumentMatcher](https://notes.tejpratapsingh.com/_/java-testing/mockito/argumentmatcher.md): Match arguments passed in a method of your mock
- [ArgumentCaptor](https://notes.tejpratapsingh.com/_/java-testing/mockito/argumentcaptor.md): Can do everything argument matcher can and still more
- [PowerMockito](https://notes.tejpratapsingh.com/_/java-testing/powermockito.md)
- [Why we need PowerMock?](https://notes.tejpratapsingh.com/_/java-testing/powermockito/why-we-need-powermock.md)
- [PowerMockRunner](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockrunner.md): You must annotate each class you test with PowerMockRunner
- [PrepareForTest](https://notes.tejpratapsingh.com/_/java-testing/powermockito/preparefortest.md): Mark this class for bytecode manipulation
- [Understanding @PrepareForTest](https://notes.tejpratapsingh.com/_/java-testing/powermockito/preparefortest/understanding-preparefortest.md): PrepareForTest is very powerful tool that unlocks class manipulation capabilities by modifying class to byte code level.
- [SuppressStaticInitializationFor](https://notes.tejpratapsingh.com/_/java-testing/powermockito/suppressstaticinitializationfor.md)
- [PowerMockito.suppress()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockito.suppress.md)
- [PowerMockito.stub()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockito.stub.md)
- [PowerMockito.replace()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockito.replace.md)
- [PowerMockito.whenNew()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockito.whennew.md)
- [Limitation of PowerMockito.whenNew()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/powermockito.whennew/limitation-of-powermockito.whennew.md): Why Powermockito.whenNew() is not enough.
- [Whitebox.invokeMethod()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/whitebox.invokemethod.md)
- [Whitebox.setInternalState()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/whitebox.setinternalstate.md)
- [Whitebox.getInternalState()](https://notes.tejpratapsingh.com/_/java-testing/powermockito/whitebox.getinternalstate.md)
- [Tips](https://notes.tejpratapsingh.com/_/java-testing/tips.md): Pages with tips to test your code effectively
- [How to test ViewModel and LiveData](https://notes.tejpratapsingh.com/_/java-testing/tips/how-to-test-viewmodel-and-livedata.md): Test your async code build on top of androidx arch.

## Java

- [Java Guide](https://notes.tejpratapsingh.com/_/java-tips/java-guide.md): Handy definitions and examples in Java
- [Concurrency](https://notes.tejpratapsingh.com/_/java-tips/concurrency/concurrency.md): Concurrency in Java
- [Completable Future](https://notes.tejpratapsingh.com/_/java-tips/concurrency/completable-future.md)
- [Example of completable future](https://notes.tejpratapsingh.com/_/java-tips/concurrency/completable-future/example-of-completable-future.md)

## C Plus Plus

- [C Plus Plus: Docs](https://notes.tejpratapsingh.com/_/cpp/roadmap/c-plus-plus-docs.md): My learning on CPP language and its features.
- [Build Process](https://notes.tejpratapsingh.com/_/cpp/build/build-process.md): C++ build process
- [Connect multiple C++ Files](https://notes.tejpratapsingh.com/_/cpp/build/connect-multiple-c++-files.md): Here is how to connect multiple c++ file:
- [Pre-Processors](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors.md): Those #Tag inside our program
- [#include](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors/include.md)
- [#define](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors/define.md): This is used to define macros. Macros can be simple constants or function
- [#ifdef](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors/ifdef.md): These directives allow you to include or exclude code based on certain conditions
- [#pragma](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors/pragma.md): Pragma is a Include Guards, it tells compiler whether  to include header file again or not
- [Predefined Macros](https://notes.tejpratapsingh.com/_/cpp/code/pre-processors/predefined-macros.md): C++ has many predefined macros too
- [LValue and RValue](https://notes.tejpratapsingh.com/_/cpp/code/lvalue-and-rvalue.md)
- [Data Types](https://notes.tejpratapsingh.com/_/cpp/code/data-types.md)
- [Enum](https://notes.tejpratapsingh.com/_/cpp/code/data-types/enum.md)
- [TypeDef](https://notes.tejpratapsingh.com/_/cpp/code/data-types/typedef.md)
- [const in c++](https://notes.tejpratapsingh.com/_/cpp/code/data-types/const-in-c++.md)
- [extern vs inline](https://notes.tejpratapsingh.com/_/cpp/code/data-types/extern-vs-inline.md)
- [Casting](https://notes.tejpratapsingh.com/_/cpp/code/casting.md)
- [Operator overloading](https://notes.tejpratapsingh.com/_/cpp/code/operator-overloading.md)
- [Available Operators](https://notes.tejpratapsingh.com/_/cpp/code/operator-overloading/available-operators.md)
- [Examples of operator overloading](https://notes.tejpratapsingh.com/_/cpp/code/operator-overloading/examples-of-operator-overloading.md)
- [Namespace](https://notes.tejpratapsingh.com/_/cpp/code/namespace.md)
- [Namespace Example](https://notes.tejpratapsingh.com/_/cpp/code/namespace/namespace-example.md)
- [Using directive](https://notes.tejpratapsingh.com/_/cpp/code/namespace/using-directive.md)
- [Header File](https://notes.tejpratapsingh.com/_/cpp/code/header-file.md)
- [For C++ Classes](https://notes.tejpratapsingh.com/_/cpp/code/header-file/for-c++-classes.md)
- [Structure](https://notes.tejpratapsingh.com/_/cpp/code/structure.md): Collection of different data types
- [Struct vs Class](https://notes.tejpratapsingh.com/_/cpp/code/structure/struct-vs-class.md)
- [Public vs Private inheritance](https://notes.tejpratapsingh.com/_/cpp/code/structure/public-vs-private-inheritance.md)
- [Classes](https://notes.tejpratapsingh.com/_/cpp/code/classes.md)
- [Friend Function](https://notes.tejpratapsingh.com/_/cpp/code/classes/friend-function.md)
- [Copy Constructor](https://notes.tejpratapsingh.com/_/cpp/code/classes/copy-constructor.md)
- [Explicit Constructor](https://notes.tejpratapsingh.com/_/cpp/code/classes/explicit-constructor.md)
- [Move Constructor](https://notes.tejpratapsingh.com/_/cpp/code/classes/move-constructor.md)
- [Move Semantics](https://notes.tejpratapsingh.com/_/cpp/code/classes/move-constructor/move-semantics.md)
- [Other constructors](https://notes.tejpratapsingh.com/_/cpp/code/classes/other-constructors.md)
- [Virtual functions](https://notes.tejpratapsingh.com/_/cpp/code/classes/virtual-functions.md)
- [Pure virtual function](https://notes.tejpratapsingh.com/_/cpp/code/classes/pure-virtual-function.md): Interface/abstract classes in c++
- [Other function declaration](https://notes.tejpratapsingh.com/_/cpp/code/classes/other-function-declaration.md)
- [const function vs final function](https://notes.tejpratapsingh.com/_/cpp/code/classes/const-function-vs-final-function.md)
- [Memory Introduction](https://notes.tejpratapsingh.com/_/cpp/memory/memory-introduction.md)
- [Heap and Stack](https://notes.tejpratapsingh.com/_/cpp/memory/heap-and-stack.md)
- [Pointers](https://notes.tejpratapsingh.com/_/cpp/memory/pointers.md)
- [Dangling Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/dangling-pointer.md)
- ['this' Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/this-pointer.md)
- [Function Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/function-pointer.md)
- [Smart Pointers](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/smart-pointers.md)
- [Unique Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/smart-pointers/unique-pointer.md)
- [Shared Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/smart-pointers/shared-pointer.md)
- [Weak Pointer](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/smart-pointers/weak-pointer.md)
- [Reference count](https://notes.tejpratapsingh.com/_/cpp/memory/pointers/reference-count.md)
- [Helper function](https://notes.tejpratapsingh.com/_/cpp/memory/helper-function.md)
- [Vector \[ArrayList\]](https://notes.tejpratapsingh.com/_/cpp/memory/vector-arraylist.md)
- [Custom vector, part 1](https://notes.tejpratapsingh.com/_/cpp/memory/vector-arraylist/custom-vector-part-1.md)
- [Custom vector, part 2](https://notes.tejpratapsingh.com/_/cpp/memory/vector-arraylist/custom-vector-part-2.md)
- [Custom vector, part 3](https://notes.tejpratapsingh.com/_/cpp/memory/vector-arraylist/custom-vector-part-3.md)
- [std::vector](https://notes.tejpratapsingh.com/_/cpp/memory/vector-arraylist/std-vector.md)
- [Union](https://notes.tejpratapsingh.com/_/cpp/memory/union.md)
- [Type Punning](https://notes.tejpratapsingh.com/_/cpp/memory/union/type-punning.md)
- [Type Punning, part 2](https://notes.tejpratapsingh.com/_/cpp/memory/union/type-punning-part-2.md)
- [Type Punning, part 3](https://notes.tejpratapsingh.com/_/cpp/memory/union/type-punning-part-3.md)
- [Union, part 1](https://notes.tejpratapsingh.com/_/cpp/memory/union/union-part-1.md)
- [Union, Part 2](https://notes.tejpratapsingh.com/_/cpp/memory/union/union-part-2.md)
- [Threading](https://notes.tejpratapsingh.com/_/cpp/thread/threading.md)
- [std::thread](https://notes.tejpratapsingh.com/_/cpp/thread/threading/std-thread.md)
- [Detach a thread](https://notes.tejpratapsingh.com/_/cpp/thread/threading/detach-a-thread.md)
- [Execution Order](https://notes.tejpratapsingh.com/_/cpp/misc/execution-order.md)
- [Print memory](https://notes.tejpratapsingh.com/_/cpp/misc/print-memory.md)
