How I Passed RHCSA on RHEL 10: Practical Lessons and Preparation Tips
This article is for anyone preparing for the Red Hat Certified System Administrator (RHCSA) exam.
Software Design · System Design · Architecture
I’m Shreyas Joshi. This is my personal notebook on software design, system design, and software architecture—a place to collect project notes, useful ideas, and lessons along the way.
The notebook
This article is for anyone preparing for the Red Hat Certified System Administrator (RHCSA) exam.
This article introduces JavaScript timers and selected built-in APIs for numbers, strings,dates, and regular expressions.
This article introduces JavaScript exceptions, closures, immediately invoked functionexpressions (IIFEs), and selected function properties.
JavaScript objects are accessed through references. This article introduces objectcreation, property access, prototypes, constructors, and function methods.
JavaScript arrays are objects accessed through references. Their elements can be changed,and many array methods mutate the original array while others return a new one.
When you assign a primitive value, the variable receives that value. JavaScriptprimitives include strings, numbers, booleans, null, undefined, symbols, and bigints.
This article is all about basic javascript features like switch and looping. This is in continuation to the basic javascript conditional structs.
This article compares selected JavaScript and C++ fundamentals. The languages share somesyntax, but differ in their type systems, runtime behavior, and memory models.
This article introduces JavaScript objects, functions, strict mode, truthiness, andconditional statements, with comparisons to C and C++.
This article introduces several AWS storage and data-transfer services. Product names,classes, and availability can change; consult current AWS documentation before choosinga service.
This article compares block storage and object storage at a high level. The examples arehistorical; check current service documentation before making an architectural decision.
This article describes the original AWS Well-Architected Framework pillars as they werepresented when this post was written, and introduces elasticity. AWS has since updatedthe framework;...
This historical introduction explains Docker image layers and a simple Nginx image. TheUbuntu and Nginx versions shown are obsolete; use maintained base images and currentpackage versions...
This article introduces AWS accounts, Regions, Availability Zones, and edge locations.
This historical walkthrough introduces Docker Swarm and Linux container isolation.Commands and recovery procedures are version- and environment-specific; verify them in atest environment ...
This historical Ubuntu walkthrough covers Docker package versions and logging drivers.Package versions, repository configuration, and supported drivers depend on the DockerEngine and Ubun...
This glossary introduces common concepts used when discussing cloud architecture anddisaster recovery.
This historical guide records an installation of Docker Engine on Ubuntu Bionic. Thecommands, repository-key instructions, and package versions below are obsolete; followthe current Docke...
This article introduces cloud service models and the AWS shared responsibility model.
This short, historical note shows how I added packages to a Yocto image. Recipe names and override syntax vary by Yocto release; this example is from the Warrior-era setup.For e.g, I woul...
This historical walkthrough records how I loaded a kernel and device tree from an SD card, wrote them to QSPI NOR flash with U-Boot, read them back for verification, and booted the kernel...
Endianness describes the order in which the bytes of a multi-byte value are stored in memory. It does not change the value itself; it describes how that value is represented across byte a...
This historical walkthrough records how I debugged a device tree overlay for an out-of-tree PHY driver on a Yocto-built MicroZed system. Kernel, compiler, and board details affect the exa...
This walkthrough records an NFS-root setup for an Avnet MicroZed Zynq board and an Ubuntu 18.04 development VM. It is specific to that older environment and is not a current production re...
This is all about my journey to submit my first kernel patch. Here I have discussed all the important things you must know before you submit your kernel patch and also respond to the feed...
This article collects short answers to common Linux and Windows questions. The examples reflect the tools available when these notes were written; check local versions and options before ...
This historical guide records a Visual Studio Code setup on Ubuntu 18.04. VS Code,Node.js, and extensions change over time; check the current documentation and review anextension’s publis...
This historical walkthrough records the steps I used to build U-Boot, a Linux kernel, a device tree, and a root filesystem for an Avnet MicroZed Zynq-7010 board using Yocto Warrior.Also, ...
The Chain of Responsibility pattern lets a request pass through a sequence of handlers. A handler can process the request or pass it to the next handler, reducing the sender’s dependency ...
The Builder pattern separates the construction of a complex object from its representation. This article uses tuner configurations to illustrate a classic builder and director arrangement.
The Observer pattern lets a subject notify interested observers when its state changes. A subject can add or remove observers at runtime; the observers depend on the subject’s notificatio...
This article introduces the SOLID design principles and some of the trade-offs behind applying them.
Class relationships are a foundation of object-oriented design. Two useful questions are whether one type can substitute for another (“is-a”) and whether an object collaborates with or ow...
This article discusses on how to call a JavaScript function from C++ usingQt Framework. This framework uses Qt-Webkit. Currently, there are two waysto achieve this.
Before this notebook
Some older resources from my previous site are still available in their original form.