Posts

Learning DSA as a working professional

Image
Hello, blog! Wanted to share a quick life update of how I've been spending my free time in active development of myself. As Jim Rohn once said, always work harder on yourself than you do on the job. Formal learning will make you a living but self-learning will make you a fortune. While I'm working on my fortune; a subject of interest to me has been Data Structures and Algorithms. Here are some tips: Start with why? I think for me it is to have a better understanding of the systems that I'm dealing with and eventually have my own startup. Subscribe to a course or plan out things to learn [1] Get an accountability partner [2] - this is something I came across from my Toastmaster's and its been super helpful. Dedicate a certain time everyday to study for this! Upload to GitHub everyday for those green squares Try to teach what you learn to other folks - maybe join a study group if possible. Here's how my contributions look; I'm sure you can clearly tell how I'v...

My experience with the RHCSA and RHCE exams

Image
Hello, blog! I recently passed the RHCSA exam and the RHCE exam. I wanted to pen down my thoughts here. RHCSA exam This was a re-certification since I had given the exam the first time on Jan 30, 2022. I believe the best resource for this is the Sander Van Vugt's RHCSA book [1]. A good trick to finding this book for free is to go to your local library and see if they have it or if they provide a subscription to O'Reilly online learning. I've gotten access to the latter through my University and through one of my employers as well. My advice would be to really understand what you're doing and to not memorize any of the commands. In my opinion; there have been many smart people involved in creating the Linux operating system and lots of thought been put into every component. If you feel like you want to learn more about why the operating system works the way it does, I recommend the Operating System Concepts book [2]. However, this goes into a level of depth that is not r...

RAID! No, not that one

Image
Hello, blog! Been a while. I rejoined Fortinet on the 12th of May with the FortiStack team and it's my second week at the company and already having a great time learning new things. So, the cloud team at Fortinet had mostly worked with Dell servers but now they're trying out MSI servers. The particular server that I'm evaluating for production is an MSI S1205-01-10G . One of the main tasks in setting up a new server is setting up the storage RAID. RAID stands for Redundant Array of Independent Disks and based on the setting writes data to multiple disks for redundancy. That way; if one of the drive fails, the data is still safe. RAID can be setup either with a physical RAID card or by software RAID. The server that we ordered did not have the physical RAID card. This means setting up the virtual RAID. Fig. 1 - MSI S1205-01 server The first 2 drives of the server were populated with 2X 480G SATA SSDs. Fig. 2 - Populated drives on the server This is what the drive looks like...

Working with Tomcat 10

Image
Tomcat Logo This blog has been inspired since we're upgrading our existing Tomcat 8 servers to Tomcat 10. First off, what's Tomcat anyway? The following is the definition you'd find on the Tomcat site [1]: The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. My face after reading the above definition The problem with the above definition is that I don't understand what it actually is. Like most people I used to think that it's just a 'web server' BUT it's not quite a full-fledged web server like Apache HTTP Server (httpd) or Nginx. It is primarily a 'servlet container' that executes Java Servlets and JavaServer Pages (JSP) with some web capabilities. It does NOT support features like reverse proxying, caching, or load balancing. A Java Servlet is a Java class that handles HTTP requests and g...

My Introduction to Spring Security

Image
This week at work, I've been working on migrating our application to containers to shift to the cloud. We decided a good point to start would be with the Access Control application which takes care of the authentication and authorization of users to our application. Since we're a Java/Spring Boot shop, this was built upon Spring Security which led to down the rabbit hole of investigating/learning how Spring Security works and this blog page summarizes my learning. A lot of the information in this book has been taken from [1] and I highly recommend the resource to learn in-detail about Spring Security! Introduction Before we dive into Spring Security, we need to understand the difference between Authentication and Authorization. Authentication is proving who you say you are; the most common way this is done is with a username and a password. Authorization on the other hand is about what services/pages you have access to following the authentication process, this is usually hand...

Simple piece of information leads to great clarity!

Image
Greetings! I've been trying to wrap my head around the Spring framework for over a year now and it's one of the most interesting things I've discovered. Spring framework is an application framework for the Java platform and has many many features! Spring Framework Runtime The above image just shows a small subset of the Spring framework features used in Runtime. As is the norm now, the way I learn anything is to type into ChatGPT, 'Teach me ...' first before referring to more 'authoritative' sources so I did the same with the Spring Framework. Snippet of ChatGPT response for 'teach me spring' Most of the time, it ends up generating something as shown in the screenshot above recommending to create a controller with the '@Controller' annotation and return a view. ``` Java package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetM...

What I learned while studying for the GCP PDE exam

Image
  GCP PDE Badge I recently (June 22nd, 2024) appeared for and passed the GCP Professional Data Engineer certification. [1] In this blog, I'd like to share what I've learned in studying for and taking the exam. First off, here are the main GCP offerings that are tested on the exam: BigQuery: This is a data warehouse that can hold structured data. It is SQL compliant and you can perform data analysis with this tool. Despite seeming like a regular relational database, it is actually a columnar database. This database can go up-to petabyte scale! BigTable: Despite have 'Table' in the name, it's a NoSQL database. It is a non-relational database used for things like receiving large amounts of IoT/factory sensors' data, user's application data, etc. Got to learn about BigTable schema design (& especially row-key optimization) Cloud Storage: This service was covered even in the Cloud Associate Engineer exam but it's just a blob (Binary Large OBject) storge l...