Raju Gandhi

Founder, DefMacro Software

Raju is a software craftsman with almost 20 years of hands-on experience scoping, architecting, designing, implementing full stack applications.

He provides a 360 view of the development cycle, is proficient in a variety of programming languages and paradigms, experienced with software development methodologies, as well an expert in infrastructure and tooling.

He has long been in the pursuit of hermeticism across the development stack by championing immutability during development (with languages like Clojure), deployment (leveraging tools like Docker and Kubernetes), and provisioning and configuration via code (toolkits like Ansible, Terraform, Packer, everything-as-code).

Raju is a published author, internationally known public speaker and trainer.
Raju can be found on Twitter as @looselytyped.
In his spare time, you will find Raju reading, playing with technology, or spending time with his wonderful (and significantly better) other half.

Presentations

Containers are everywhere. Of course, a large part of the appeal of containers is the ease with which you can get started. However, productionizing containers is a wholly different beast. From orchestration to scheduling, containers offer significantly different challenges than VMs.

In particular, in terms of security. Securing and hardening VMs is very different than that for containers.

In this twopart session, we will see what securing containers involves.

We'll be covering a wide range of topics, including

Understanding Cgroups and namespaces
What it takes to create your own container technology as a basis of understanding how containers really work
Securing the build and runtime
Secrets management
Shifting left with security in mind

Containers are everywhere. Of course, a large part of the appeal of containers is the ease with which you can get started. However, productionizing containers is a wholly different beast. From orchestration to scheduling, containers offer significantly different challenges than VMs.

In particular, in terms of security. Securing and hardening VMs is very different than that for containers.

In this twopart session, we will see what securing containers involves.

We'll be covering a wide range of topics, including

Understanding Cgroups and namespaces
What it takes to create your own container technology as a basis of understanding how containers really work
Securing the build and runtime
Secrets management
Shifting left with security in mind

You've heard of Terraform, maybe even written some scripts using it. You've heard that Terraform is capable of dynamic behavior using blocks, for loops and counters. And you've glanced at the Terraform functions list, but wondered how one would ever go about using those?

We've got you covered.

In this session, we'll build a set of Terraform scripts that can be fed a YAML file, and using Terraform's dynamic capabilities, we'll build infrastructure as specced out in the YAML file.

We'll be covering a host of different topics in this session

Terraform's dynamic capabilities including dynamic blocks, for and for_each loops
Terraform's functions and datastructures

In a world where automation is king, when it comes to configuration management, Ansible rules. Ansible, an open-source project from RedHat allows you to automate configuration including installing software, applying security patches, managing networks across the whole spectrum—be that locally, on-prem, in the cloud.

In this exercise driven session, we’ll learn Ansible from the ground up. We’ll see how to declare your inventory, use modules to run arbitrary tasks on hosts, collect related tasks into playbooks, make reusable units of work using roles, and how to use variables. By the end of this session, you will walk away with a comprehensive understanding of how Ansible works, and how you can start to use it to automate away the mundane.

Detailed agenda:

  • Why Ansible?
  • How does Ansible work?
  • Ansible characteristics
  • Run ansible for the first time
  • Run an ansible module with args
  • Escalating privileges
  • Keeping track of your inventory
  • Groups of groups (of groups?)
  • Variables, specifically inventory variables
  • Extracting group and host variables into group/host variable files
  • Plays and playbooks
  • Our first play
  • Environment specific variables
  • Making a useful playbook
  • Jinja2 string interpolation
  • Roles
  • Using ansible.builtin.copy and ansible.builtin.template in roles
  • Using handlers
  • Using Ansible facts and filters
  • Using Ansible data-structures
  • Using tags
  • Encrypting passwords using ansible-vault
  • Checking your scripts
  • Benefits of Ansible
  • Trade-offs

In a world where automation is king, when it comes to configuration management, Ansible rules. Ansible, an opensource project from RedHat allows you to automate configuration including installing software, applying security patches, managing networks across the whole spectrum—be that locally, onprem, in the cloud.

In this exercise driven session, we’ll learn Ansible from the ground up. We’ll see how to declare your inventory, use modules to run arbitrary tasks on hosts, collect related tasks into playbooks, make reusable units of work using roles, and how to use variables. By the end of this session, you will walk away with a comprehensive understanding of how Ansible works, and how you can start to use it to automate away the mundane.

Detailed agenda:
Why Ansible?
How does Ansible work?
Ansible characteristics
Run ansible for the first time
Run an ansible module with args
Escalating privileges
Keeping track of your inventory
Groups of groups (of groups?)
Variables, specifically inventory variables
Extracting group and host variables into group/host variable files
Plays and playbooks
Our first play
Environment specific variables
Making a useful playbook
Jinja2 string interpolation
Roles
Using ansible.builtin.copy and ansible.builtin.template in roles
Using handlers
Using Ansible facts and filters
Using Ansible datastructures
Using tags
Encrypting passwords using ansiblevault
Checking your scripts
Benefits of Ansible
Tradeoffs

In this session we'll take a tour of some features that you might or might not have heard of, but can significantly improve your workflow and day-to-day interaction with Git.

Git continues to see improvements daily. However, work (and life) can take over, and we often miss the changelog. This means we don't know what changed, and consequently fail to see how we can incorporate those in our usage of Git.

In this session we will look at some features you are probably aware of, but haven't used, alongside new features that Git has brought to the table. Examples include:

  • Rebase and interactive rebase
  • restore/switch and when to use them
  • worktrees
  • shallow-clones
  • Git's filesystem monitor

By the end of this session, you will walk away with a slew of new tools in your arsenal, and a new perspective on how this can help you and your colleagues get the most out of Git.

Go-ing further - Video Preview

Go is a fascinating language. While it is simple, it makes some rather interesting decisions on several language features that we take for granted in other languages.

In this session we will take a deeper dive into the language — seeing what it makes it the language of choice for companies like Google, as well as the go to language for large OSS projects like Kubernetes and Docker.

Git revolutionized the way we think about version control. Kubernetes' on the other hand gave us a programmatic mechanism to declaratively specify the desired state of a cluster, and with the magic of Kubernetes reconciliation loop automatically see the cluster reflect that ask.

Combine the two, and we get GitOps. In this session we will take a look at FluxCD, a CNCF project that allows you to commit your changes to a repository, and have your changes automatically applied to your Kubernetes cluster.

Join me to see what it takes to adopt FluxCD in your workflow, the benefits it provides, and how you can modernize, simplify and automate your deployment process.

In this session, we will take a look at GitOps, using FluxCD to simplify and automate your deployment process.

Platform engineering is the latest buzzword, in a industry that already has it's fair share. But what is platform engineering? How does it fit in with DevOps and Developer Experience (DevEx)? And is this something your organization even needs?

In this session we will aim to to dive deep into the world of platform engineering. We will see what platform engineering entails, how it is the logical succession to a successful DevOps implementation, and how it aims to improve the developer experience. We will also uncover the keys to building robust, sustainable platforms for the future

A large part of embracing DevOps involves embracing automation. Over the last decade we have seen the emergence of “as Code” — Build-as-Code, Configuration-as-Code and Infrastructure-as-Code. The benefits to utilizing such tools are huge! We can codify the state of the world around our applications, giving us the ability to treat everything that our code needs like we treat the code itself. Version control, release management, tagging, even rolling backs are now possible.

Terraform, an open-source tool from HashiCorp allows us to build, control and modify our infrastructure. Terraform exposes a Domain-specific language (DSL) that we can use to express what our infrastructure should look like. Terraform can work with all the major cloud providers, including Amazon AWS, Google GCP and Microsoft Azure.

We will be using AWS as our playground for this workshop

Agenda

  • The place for, and benefits of “Everything as Code” alongside GitOps
  • Terraform's architecture
  • Terraform 101
  • Introduction to HCL
  • What are providers?
  • Initializing terraform and providers
  • Dive right in! Creating your first resource in AWS using Terraform
  • Understanding references, dependencies
  • apply-ing terraform
  • Variables and the HCL type-system
  • Using data and output in your terraform scripts
  • Understanding how Terraform manages state
  • Using S3 as a backend
  • DRY with Terraform modules
  • Collaboration using Terraform
  • Terraform ecosystem, testing, and GitOps
  • Closing arguments, final Q/A, discussion

Instructions

Please visit https://github.com/looselytyped/terraform-workshop/ for detailed instructions. They might seem a tad arduous but it's not as bad as it looks :)

Kubernetes IS the the cloud operating system, allowing to to do everything from resource management, to scheduling to networking. However, deploying applications of any complexity can be overwhelming. involving wrangling lots of YAML files. Oh! And good luck versioning your releases.

Most operating systems ship with a package manager. From apt to home brew to chocolatey, a package manager simplifies the act of installing software. So why don't we have one for Kubernetes?

Well, your wait is over. Say hello to Helm—the Kubernetes package manager. Helm, a CNCF project, aims to simplify deploying your applications to Kubernetes, with support for multiple environments, versioning, rollbacks and so much more.

In this session we will deep dive into Helm. We will see what it takes to package your applications using Helm, and discuss the benefits of folding Helm into your workflows. Single-click Kubernetes deployments, here we come!

Books

  • If you're a software developer looking for a quick on-ramp to software architecture, this handy guide is a great place to start. From the authors of Fundamentals of Software Architecture, Head First Software Architecture teaches you how to think architecturally and explores the unique challenges of software architecture. You'll learn the distinction between architecture and design and the relationship between code, components, and architectural styles. You'll also learn how to work with some common architectural styles through vivid, fun examples. Quick, easy, and entertaining, this book is a valuable introduction to the world of software architecture.
  • Many people who use Git rely on "recipes"--copying and pasting commands they find on the internet without really understanding how Git actually works. But what do you do if you find yourself in a tight spot? You can't simply wing it. With this unique hands-on guide, you'll learn the ways of Git and have fun while doing it. Raju Gandhi peels back the layers to reveal the simple yet powerful engine that powers Git, so you'll understand not just the how but the why. You'll master branches, merges, commit messages, search, utilities, and more; learn best practices for collaborative work; and unlock the full potential of Git.

    If you've read a Head First book, you know what to expect--a visually rich format designed for the way your brain works. If you haven't, you're in for a treat. With this book, you'll learn Git through a multisensory experience that engages your mind rather than a text-heavy approach that puts you to sleep.
  • JavaScript has finally grown up. Armed with a slew of new features, JavaScript now makes writing the code that powers your applications elegant, concise, and easy to understand. This book is a pragmatic guide to the new features introduced in JavaScript, starting with Edition 6 of ECMAScript, and ending with Edition 9. 

    Using a "compare and contrast" approach, each chapter offers a deep dive into new features, highlighting how best to use them moving forward. As you progress through the book, you'll be offered multiple opportunities to see the new features in action, and in concert with one another.

    Backed by an example-driven writing style, you'll learn by doing, and get ready to embrace the new world of JavaScript. 

    What You'll Learn

    • Provide a deep exposition of the new features introduced in ES6 through ES9 
    • Review how JavaScript's new features by-pass any limitations of an existing approach
    • Examine the refactoring necessary to go from old to new
    • Demonstrate how JavaScript's new features work in unison with each other 

    Who This Book Is For

    New and experienced developers who wish to keep abreast of the changes to JavaScript and deepen their understanding of the language.