๐Ÿš€ My DevOps Journey โ€” Week 7: Git Internals, Python Pitfalls, Cipher Fun & Cloud Realizations

Anandhu P AAnandhu P A
7 min read

After last weekโ€™s Bash scripting marathon, I thought this week would be lighter. I was wrong.

I tackled Git (again), jumped into Python basics, wrestled with exceptions and generators, started my AWS journey, and even squeezed in a Caesar cipher. Somewhere between lambda expressions and cloud design principles, it all began to click.


๐Ÿ—“๏ธ Day 1 โ€” Git Is Not Just Push and Pull

I started the โ€œGit for Beginnersโ€ course on KodeKloud. I thought it would be a quick revision โ€” I already knew git init, git commit, git push, and git pull.

But this time, I understood why teams choose branching strategies and how pull requests are not just a GitHub feature but a crucial part of team collaboration.

๐Ÿ”ง Git Tools I Now Rely On

  • git stash: Save and switch context mid-task

  • git cherry-pick: Move single commits across branches

  • git revert vs git reset: One is safe, one rewrites history

  • git reflog: The ultimate undo

๐Ÿ” Git Internals Made Visible

Discovered Gitโ€™s object model โ€” blobs, trees, commits โ€” and explored them using:

git hash-object <file>
git cat-file -p <hash>

Git stopped feeling magical. It started making sense.


๐Ÿ—“๏ธ Day 2 โ€” Python: โ€œBeginnerโ€ is a Lie ๐Ÿ˜…

I finished the KodeKloud Python Basics course in one day. It lacked labs but had 38 quizzes and 5 mock exams.

๐Ÿงช Mock Exam Scores

  • Mock 1: 27/30

  • Mock 2: 25/27

  • Mock 3: 29/29

  • Mock 4: 27/29

  • Mock 5: 25/28

๐Ÿ” Lessons I Wonโ€™t Forget

  • .upper() returns a new string โ€” because strings are immutable

  • [::3] = "every third", not "skip three"

  • list2 = list1 โ†’ same object, not a copy

  • range('abcd') throws a TypeError

  • (0,) is truthy because it's a non-empty tuple

Python may look clean, but it hides surprising complexity.


๐Ÿ—“๏ธ Day 3 โ€” Strings, Packages & Cipher Experiments ๐Ÿ”

After finishing the basics, I officially started the PCAP (Certified Associate in Python Programming) course from KodeKloud. The jump in difficulty was real โ€” more real-world examples, deeper concepts, and an emphasis on writing clean, modular code.

โœ‚๏ธ Cleanups and Transformations

Practiced with small string transformation scripts:

txt = ",$,,   chocolate   banana ice-cream..."
txt = txt.strip(",$ .")
txt = " ".join(txt.split())
print(txt)  # chocolate banana ice-cream

๐Ÿ” Caesar Cipher โ€” My Version

Wrote a Caesar cipher from scratch using just loops and logic:

def encrypt(msg):
    result = ""
    for char in msg:
        if char.isalpha():
            if char == 'Z': result += 'A'
            elif char == 'z': result += 'a'
            else: result += chr(ord(char)+1)
        else:
            result += char
    return result

๐Ÿ› ๏ธ Tools & Modules I Explored

  • pip install, pip show, pip uninstall

  • random, math, platform, sys

  • Encoding: ASCII โ†’ Unicode โ†’ UTF-8

  • Also learned to avoid wildcard imports โ€” clarity wins.


๐Ÿ—“๏ธ Day 4 โ€” Headache #17, Generators & PCAP Mock Exams

This day hit hard โ€” I continued with the PCAP course and tackled some dense topics like OOP, iterators, and exception handling.

I also completed two PCAP mock exams from KodeKloud:

  • Mock Exam 1: 34/40 (85%)

  • Mock Exam 2: 31/40 (80%)

The format and difficulty felt much more aligned with real-world coding โ€” not just theory.

๐Ÿ’ฃ Headache #17

list(map(lambda x: x*x, filter(lambda x: x % 2 == 0, range(10))))

Looked easy. Read it five times. Got it wrong. Iโ€™ll never forget this line.

๐Ÿงฏ Try/Except and File Handling

try:
    stream = open("not_here.txt", "rt")
except FileNotFoundError:
    print("File missing!")
finally:
    print("Done.")

๐Ÿ‘จโ€๐Ÿซ From Procedural to OOP

Wrote a basic stack class:

class Stack:
    def __init__(self):
        self.__items = []

    def push(self, val):
        self.__items.append(val)

    def pop(self):
        return self.__items.pop()

Also explored:

  • Multiple inheritance

  • Method Resolution Order (MRO)

  • Composition vs inheritance

โš™๏ธ Generators & Closures

def custom_range(n):
    for i in range(n):
        yield i

def multiplier(factor):
    def multiply(num):
        return num * factor
    return multiply

times3 = multiplier(3)
print(times3(5))  # 15

๐Ÿ“ File I/O & Confidence Boost

After all that, file handling felt like a reward.

  • read(), readline(), readlines()

  • readinto() for binary files

  • os.mkdir, os.rmdir, os.system("ls")

Back in Linux territory โ€” and it felt great.


๐Ÿ—“๏ธ Day 5 โ€” Into the Cloud โ˜๏ธ

Started the AWS Cloud Practitioner course from KodeKloud. No labs, just pure theory โ€” but eye-opening all the same.

โ˜๏ธ What I Learned About Cloud Computing

Compared traditional IT (hardware, approvals, delays) with cloud (API-driven, instant, scalable). Key models:

  • All-in-Cloud โ€” Fully hosted on AWS

  • On-Premises โ€” Managed privately (legacy)

  • Hybrid Cloud โ€” Best of both worlds

๐Ÿ’ธ Cloud Economics

Studied AWS billing options:

  • Free Tier โ€” Explore for free (for 12 months or forever)

  • On-Demand โ€” Pay only for what you use

  • Reserved Instances โ€” Commit 1โ€“3 years, save up to 72%

  • Volume Discounts โ€” Use more, pay less per unit

๐Ÿง  Cloud Design Principles

  1. Design for Failure โ€” Expect breakdowns. Plan recovery.

  2. Decouple Components โ€” Use queues to isolate failures.

  3. Implement Elasticity โ€” Auto-scale up/down with demand.

  4. Think in Parallel โ€” Speed things up by splitting work.


๐Ÿ—“๏ธ Day 6 โ€” Security Overload & IAM Rabbit Hole ๐Ÿ”

This was the day I truly realized how overwhelming AWS security can be โ€” not because it's hard to understand, but because itโ€™s packed with concepts, services, and a ton of theory. Most of it was documentation-style learning with only small demos here and there. It honestly felt a bit dry. No hands-on labs, no clicking around โ€” just concepts. But I also knew this was foundational knowledge I needed to absorb, whether I liked it or not.

The day started with AWS IAM (Identity and Access Management). I explored IAM users, groups, roles, and policies โ€” all the building blocks of how AWS controls access. The course briefly showed how to create IAM entities, but the focus was more on understanding the why behind each component. I also learned how permissions are inherited, how policies are structured in JSON, and how roles differ from users when it comes to temporary credentials.

From there, it expanded into AWS Organizations, where I learned about Organizational Units (OUs) and Service Control Policies (SCPs). These act like guardrails for entire accounts โ€” you can block services even if the IAM user has permissions. Itโ€™s powerful but abstract, and I had to watch that section twice to really get it.

Then came the alphabet soup of AWS security services. I explored preventative security tools like AWS WAF (Web Application Firewall), AWS Shield, and AWS Network Firewall. Detection-based services included Amazon GuardDuty, AWS Inspector, AWS Config, Security Hub, Amazon Detective, and even Security Lake. There was also a deep dive into management services like Firewall Manager, Resource Access Manager, Cognito, and Secrets Manager. By this point, my brain was buzzing with acronyms.

I wrapped up the day with cryptographic key management โ€” a core part of securing AWS workloads. I learned how AWS KMS, CloudHSM, Certificate Manager, and Private Certificate Authority all play roles in encrypting and securing data in the cloud. Again, no labs here โ€” but I now understand how AWS handles sensitive data protection and encryption.

This wasnโ€™t the most exciting day of the week, but it was one of the most important. If you donโ€™t understand access control, you donโ€™t understand AWS. Simple as that.

๐Ÿ—“๏ธ Day 7 โ€” Docs, GitHub, and Deep Breaths

After six days of Git, Python, and Cloud, I took Day 7 to reflect and document.

  • Wrote this entire blog

  • Organized my notes

  • Pushed everything to GitHub

Somehow, writing it all down made the learning feel real โ€” like I actually owned it.


โœ… What I Took Away This Week (now feels even more true):

  • Git isnโ€™t just push/pull โ€” itโ€™s a version control machine

  • Python is โ€œsimpleโ€ on the surface, but complex inside

  • Writing my own Caesar Cipher taught me more than reading docs

  • Cloud isnโ€™t just hosting โ€” itโ€™s a design shift

  • You donโ€™t memorize code. You test, break, rebuild, and learn


๐Ÿค A Word of Thanks

Special thanks to ChatGPT โ€” my rubber duck, error explainer, and Python therapist ๐Ÿ˜…. From Caesar ciphers to debugging lambda chains, youโ€™ve helped me make sense of it all.

0
Subscribe to my newsletter

Read articles from Anandhu P A directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Anandhu P A
Anandhu P A

Iโ€™m an aspiring DevOps Engineer with a strong interest in infrastructure, automation, and cloud technologies. Currently focused on building my foundational skills in Linux, Git, networking, shell scripting, and containerization with Docker. My goal is to understand how modern software systems are built, deployed, and managed efficiently at scale. Iโ€™m committed to growing step by step into a skilled DevOps professional capable of working with CI/CD pipelines, cloud platforms, infrastructure as code, and monitoring tools