Blog

Series Posts

These were originally posted on Blogspot under the name "Hassan Codes." Now that I have my own site, they've moved here. Time changes, haha.

01 - Introduction to Java

What Java actually is, why it's a solid starting language, and how the JDK, compiler, and interpreter fit together, explained with a Dumbledore analogy.

02 - Your First Java Program - Hello World

Writing and running your first Java program, understanding the main method, file naming rules, and the structure of a basic Java class.

03 - Variables and Data types in Java

Understanding primitive and reference types, variable declaration, and type conversion in Java.

04 - Operators in Java

Arithmetic, relational, logical, and bitwise operators, with operator precedence and practical examples.

05 - Input in Java

Taking user input using Scanner class and handling different data types from console input.

06 - Output in Java

Printing to console using System.out.println(), System.out.print(), and formatting output.

07 - If-else statements in Java

Conditional branching with if, else if, and else statements for decision making in programs.

08 - Switch statements in Java

Using switch statements for multiple condition checking and when to use them over if-else chains.

09 - While Loop in Java

Understanding while and do-while loops, loop conditions, and when to use each type.

10 - For Loop in Java

Using for loops for iteration, understanding initialization, condition, and increment/decrement.

11 - Nested Loops in Java

Using loops inside loops for pattern printing, matrix operations, and complex iterations.

12 - Methods in Java

Declaring and calling methods, understanding parameters, return types, and method structure.

13 - Overloaded Methods in Java

Method overloading with different parameter lists and compile-time polymorphism.

14 - Recursion in Java

Understanding recursive methods, base cases, and practical examples like factorial and Fibonacci.

15 - Arrays in Java

Declaring, initializing, and working with single-dimensional arrays in Java.

16 - Multidimensional Arrays in Java

Working with 2D and multi-dimensional arrays, matrix operations, and nested loops with arrays.

01 - What Xpense Actually Is

The app, the pivot from Java and JSON to Kotlin and Room, and real users on the Play Store.

02 - How Android Apps Actually Work

What happens when an Android app runs, from DEX to ART to the sandbox.

03 - Xpense's Project Structure

The real package layout, what each file is for, and why the data package exists.

04 - AndroidManifest.xml Explained

The identity document of the app, and what Android reads before running any code.

05 - Gradle and the Build System

How source code becomes an APK, and what the build settings actually mean.

06 - Layouts and XML UI

How a screen is described in XML and turned into pixels.

07 - Activities and the Activity Lifecycle

What an Activity is and why the lifecycle is the concept everything else builds on.

08 - Kotlin and the UI

How Kotlin code talks to XML layouts, from view lookups to click listeners.

09 - The Old Storage System

SharedPreferences and a JSON file, and why that setup eventually stopped being enough.

10 - Migrating to Room

Why the move to a real database happened and how the migration was designed.

11 - The Bug That Almost Wiped Real User Data

How a silent R8 stripping issue nearly destroyed a real upgrade, and how it was caught.

12 - Theming Done Right

How light and dark mode work without a single manual toggle.

13 - Signing, Keystore, and Releasing an APK

What signing means, what a keystore is, and why losing it is permanent.

14 - Publishing to the Play Store

The developer account, the store listing, and the closed testing gate.

01 - Getting Started with C++

Tooling, hello world, compiler errors and warnings, streams, and how core language, standard library, and STL relate.

02 - Variables and Data Types

Integer formats and modifiers, overflow and wrapping, floating point precision and setprecision, booleans, char and ASCII values, and type deduction with auto.

03 - Operators and Data Operations

Operator precedence, prefix vs postfix, compound operators, comparison and logical operators, output formatting manipulators, numeric limits, math functions, and integer promotion.

04 - Flow Control

If/else and nested conditions, switch statements and fall-through, and ternary expressions.

05 - Loops

size_t as a loop counter, for loops, while loops, and do-while loops.

06 - Arrays

Declaring arrays, why stack array size must be compile-time, getting array size, and char arrays as C-strings.

07 - Pointers, Part 1: Declaration and Memory

Pointer declaration and dereferencing, pointers to pointers, the three const pointer variants, char pointers vs char arrays, the OS memory map, and stack vs heap.

08 - Pointers, Part 2: Safety and Arithmetic

Dangling pointers and the owner pointer pattern, handling allocation failure, null pointer safety, dynamic arrays, and pointer arithmetic including the stack array size trick.

09 - References

Reference declaration and the three initialization syntaxes, const references, and how references compare to pointers.

10 - Char Arrays and String Manipulation

cctype character checks and conversion, cstring length/comparison/search functions, concatenation and copying, and why std::string replaces all of it.

11 - Functions, Part 1: Basics and Overloading

What a function is, the compilation model across multiple cpp files, the three ways to pass arguments, copy elision, and function overloading.

12 - Functions, Part 2: Lambdas, Templates, and Concepts

Lambda syntax and capture semantics, function templates and specialization, and C++20 concepts including the requires clause and constrained auto.

13 - Classes and Objects

Classes and access levels, the member initializer list, creating stack and heap objects, destructors and their call order, the this pointer, method chaining, struct vs class, and object size and padding.

14 - Inheritance

Protected members, public/protected/private inheritance types, construction and destruction order, copy constructors and slicing, inheriting base constructors, virtual destructors, and hiding vs overriding.

15 - Polymorphism

Static vs dynamic binding, virtual and override, overloading vs overriding vs hiding, vtables, object slicing, the final keyword, virtual destructors, dynamic_cast, and pure virtual functions and abstract classes.

Solo Posts