Posts

How does the company that pays me make money (aka an overview of Fortinet business)

Image
I joined Fortinet for a 2nd time in May 2025 with the FortiStack team supporting FortiSASE operations. I wanted to take some time out to write about what it is that I do at work and what the Fortinet business is. Fortinet is a cybersecurity company that was founded in 2000. The company's first and main product is the FortiGate, a physical firewall. They come in different sizes to be used at small offices to large campuses. The main thing that makes the FortiGate special is the custom Application Specific Integrated Circuit (ASIC) used in them such as a network processor (NP) for firewall/VPN throughput, content processor (CP) for inspection, & Security Processor (SP) for SoC on entry models. This allows higher inspection throughput at lower cost/watt than software-on-x86 competitors and it runs FortiOS which is a purpose-built OS (not Linux-derived at the datapath). Say you have a business or are in industry, there's a boundary between your LAN and the internet, between 2 d...

Making architectural decision on a simple DCIM ETL application

Hello, blog! This week at work, I've been working on PHP-IPAM [1] to NetBox [2] migration.  These are Data Center Information Management (DCIM) systems that helps us keep a track of assets at our various sites. We use an Excel spreadsheet (per site) with the deployment information such as cage locations, racks, rack units to place the devices in, networking connections, and other configuration information. This information is then passed on to the on-site personnel to make it easy for them to setup the site. Our team members would manually enter the data from the spreadsheet into the IPAM software. I was confident that we could replace this manual process with some Python automation code to read the spreadsheet and then update NetBox automatically. Step 1 - Scoping the project There's a Charles Kettering quote: A problem well-stated is a problem half-solved. What we needed our code to do could be cleanly split into 3 parts: (Extract) Parse information from the deployment spread...

Python dataclasses and __slots__

Image
Hello, blog! I was learning Binary Search Trees (BST) from Scott Barrett's Python DSA Course [2] and was using the following code to define a node. I got ChatGPT to teach me about Binary Search Trees and it generated the following code: Now, I was curious what this @dataclass annotation with 'slots=True' argument is. Looking into this, I learned that there is a 'dataclasses' module in the standard Python library (3.7+). '@dataclass' is a decorator function that lives inside that module. You use it as `@dataclass' on top of a class definition. It modifies the class to automatically generate methods like '__init__' , '__repr__', '__eq__', etc. Dataclasses As mentioned above, 'dataclasses' are a python feature (3.7+) that automatically generate boilerplate code for classes that primarily store data. For example, if you're creating a game, then the Hero class would look like the following: Using @dataclass annotation, you ...

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...

3-day study bender - March 29-31, 2024

Image
Haven't been able to write down as much as I'd like on this blog lately. I've been down with the flu for the past couple of days and decided that the best way to spend this long weekend is to study and write down posts on my learnings.  Here's the plan for the weekend, it's really simple, the first thing is to learn SQL (structured query language) and master the basics through a lot of practice. Then, the second thing is to learn 'Angular' front-end framework since we use this at work along with 'Java' backend.  The last thing on my list that I'd like to accomplish is to finish my blog on the 'Helm'. Here's my reading list: [1] Sams teach yourself sql in 10 minutes - Ben Forta ( link ) [2] Angular Docs -  https://angular.io/docs Fig. 1 - SQL commands cheat sheet Fig. 2 - Angular commands overview

Java Spring Development Journey

Image
Spring Framework Having worked in my current role for about 8 months, I have realized that to be a lynchpin, I need to understand Java programming, especially using Spring Framework and Angular front-end. Towards this end, I've spent a lot of my time and energy learning and honing this skill. Spring Framework Spring MVC - Model-View-Controller: Spring MVC Spring implements a Model-View-Controller (MVC) pattern which is a software architectural pattern that separates an application into 3 interconnected components. This separation helps manage complexity & promotes organized coding. Model: Represents the data and the business logic of the application. It is responsible for retrieving data from databases, encapsulating it, and defining the business operations. View: This is the user interface of the application. It displays the data from the Model to the user and also sends user commands to the Controller. Controller: Acts as an intermediary between View and Model. It receive...