You are viewing details from a past event. Please check our upcoming event schedule if you are looking for current content.

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

A Vue perspective - Web Apps with Vue.js — Part I

8:30 AM MDT

In this session we will build a full application using Vue.js. We will start by discussing how you can start working with Vue, all the way to seeing what it takes to build an app with Vue, including state management and routing.

Note: We'll be covering Vue version 3

Vue.js, the new kid on the JavaScript framework block is taking the world by storm. Vue has bypassed React in their count of Github stars, alluding to how popular this framework is starting to become. Vue attempts to provide just enough support with libraries like Vuex and the Vue Router, and tooling like the Vue CLI to get developers productive, without aiming to be too opinionated, and too flexible.

If you are curious about Vue, this is the session for you. Come in for 180 minutes of a thrill ride as we explore this fascinating new framework and mindset.

Note: We'll be covering Vue version 3

A Vue perspective - Web Apps with Vue.js — Part II

10:30 AM MDT

In this session we will build a full application using Vue.js. We will start by discussing how you can start working with Vue, all the way to seeing what it takes to build an app with Vue, including state management and routing.

Note: We'll be covering Vue version 3

Vue.js, the new kid on the JavaScript framework block is taking the world by storm. Vue has bypassed React in their count of Github stars, alluding to how popular this framework is starting to become. Vue attempts to provide just enough support with libraries like Vuex and the Vue Router, and tooling like the Vue CLI to get developers productive, without aiming to be too opinionated, and too flexible.

If you are curious about Vue, this is the session for you. Come in for 180 minutes of a thrill ride as we explore this fascinating new framework and mindset.

Note: We'll be covering Vue version 3

Testing Vue

1:00 PM MDT

In this session we will take a gander around the tools and techniques that have evolved around testing Vue applications. Vue testing requires that we understand a set of newer technologies to help test our Vue components, events, routes (using Vue-Router) and state (using Vuex).

We all realize we must test our code, right? Testing our Vue applications isn't only about ensuring it works correctly, but also tests give us the confidence that we truly understand our applications.

Get Go-ing

9:00 AM MDT

If you are interested in a different approach to writing your next micro-service, or are knee deep in the DevOps world with Kubernetes and Docker (both written using Go) you need to know go.

Come join me in a rather quick introduction to the language and it's merits and short-comings.

Micro-services, DevOps, command-line utilities — Go has been the catalyst in a quiet revolution happening right under our noses. Go, from Google, aims to be a language that is simple, with the aim of writing scalable and reliable software. Go brings a unique tilt to many aspects of language design, including enforcing a strict project structure, powerful tooling to support things like code-style enforcement, as well as “goroutines” to allow for concurrency.

Go-ing further

11:00 AM MDT

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.

Infrastructure-As-A-Code with Ansible

1:30 PM MDT

An integral part to any DevOps effort involves automation. No longer do we wish to manage tens, hundreds or even thousands of servers by hand, even if that were possible. What we need is a programmatic way to create and configure servers, be those for local development, all the way to production.

This is where tools like Ansible come into play. Ansible offers us a way to define what our server configurations are to look like using plain-text, version-controlled configuration files.
Not only does this help with avoiding “snow-flakes”, but it promotes server configuration to participate in the SDLC, pulling server configuration closer to the developers.

In this session we will explore what Ansible has to offer, decipher the Ansible terminology, and run some examples to configure a local server.

Ansible (best) practices

3:15 PM MDT

Ansible, like Git, aims to be a simple tool.
The benefit here is that the level of abstraction that Ansible offers is paper-thin, with no complicated workflows, or opinions enforced by the tool itself.
The downside is that without a prescribed approach to Ansible, developing your playbooks often becomes a case of trial-and-error.

As engineers steeped in the DevOps mindset we must be able to use the tool effectively, allowing us to accelerate and shorten the lead time from development to production.

In this session we will take a look at some lessons learned when working with Ansible. Topics covered:

  • Variables, variable lookup precedence, and the best way to use variables in your Ansible scripts
  • Setting up Ansible to work locally, allowing for faster development, iteration and testing
  • Laying out your inventory files, and positioning them to work best with group_vars and host_vars
  • Thinking about the “hierarchy” of your infrastructure, and how best to use Ansible to reflect that hierarchy

Pipelines-as-a-Code with Jenkins 2+

5:00 PM MDT

We developers really like code.
Code, being plain-text, can be version-controlled, versioned, and follow a traditional SDLC lifecycle.
For the longest time however, we were forced to live with having most of our Ci/Cd and server configurations live outside of our codebases, often at the mercy of infrastructure/operations teams.

With the evolution of DevOps comes the notions of constructs like IaaC (Infrastructure-As-A-Code), and with Jenkins 2.0, we can now manage our Jenkins jobs configurations as code!

In this session we will explore the concept of “Pipelines-As-A-Code”, including the DSL that Jenkins offers, and how we can use this to configure Jenkins jobs via simple, version-controlled Jenkins files. We will see how we can create Jenkins jobs by autodiscovering repositories, as well as when we branch our code to create releases.

Docker Workshop - Part I

9:00 AM MDT

Docker! Docker! Docker! Whether its running a piece of software on your local machine, to hermetic deployments of your software in production - docker has a place in your workflow. In this 2 part workshop we will get our hands dirty with Docker. We will create, tear down and modify containers, create our own images, see how to set up networking and volumes for containers, see the role of Dockerfiles, and if we have time, attempt to “compose” an application using “docker-compose”

In this introductory workshop we will flit between practice and theory. We will spend a lot of time working with the Docker CLI, and cement our new found knowledge with hands-on exercises and theory.

I must highlight that this is ONLY a 3 hour workshop, but please ensure that you follow the “Set up” instructions and test to see if all is well before attending this workshop

In this workshop we will cover the following -

  • The “Why” and Benefits of Docker
  • Creating our “Hello World” container
  • Creating “interactive” containers
  • Understanding how to know what is running on your machine, what isn't, and how to remove images and containers no longer needed
  • VMs vs. containers
  • Docker lifecycle
  • Setting up networking for containers
  • Setting up volumes for containers
  • The Union File System
  • The role of Dockerfiles
  • (If we have time) docker-compose

Docker Workshop - Part II

10:45 AM MDT

Docker! Docker! Docker! Whether its running a piece of software on your local machine, to hermetic deployments of your software in production - docker has a place in your workflow. In this 2 part workshop we will get our hands dirty with Docker. We will create, tear down and modify containers, create our own images, see how to set up networking and volumes for containers, see the role of Dockerfiles, and if we have time, attempt to “compose” an application using “docker-compose”

In this introductory workshop we will flit between practice and theory. We will spend a lot of time working with the Docker CLI, and cement our new found knowledge with hands-on exercises and theory.

I must highlight that this is ONLY a 3 hour workshop, but please ensure that you follow the “Set up” instructions and test to see if all is well before attending this workshop

In this workshop we will cover the following -

  • The “Why” and Benefits of Docker
  • Creating our “Hello World” container
  • Creating “interactive” containers
  • Understanding how to know what is running on your machine, what isn't, and how to remove images and containers no longer needed
  • VMs vs. containers
  • Docker lifecycle
  • Setting up networking for containers
  • Setting up volumes for containers
  • The Union File System
  • The role of Dockerfiles
  • (If we have time) docker-compose

https://github.com/looselytyped/nfjs-docker-workshop

Devs Just Want to Have Fun(ctional)!

1:30 PM MDT

Functional programming (FP) is fast becoming the tool that programmers reach for in this era of multi-core processors. Although the definition of “functional” varies quite a bit between implementations, there are a few facets that remain core and true to the paradigm. Facets such as functions as first-class, higher order functions, closures etc. In this session we will explore the meaning of these using JavaScript as our medium.

Why JavaScript? The answer in short is: omnipresence. The long answer is that hiding at the core of JavaScript is a language that is not only beautiful and elegant, but one that supports many of the core ideas in FP. If you are interested in what the fuss is all about, or are confused about some of the concepts that make FP a reality, then this is the session you should attend.

On being an effective developer

3:15 PM MDT

As developers we not only operate in different contexts, but also often have these different contexts interplay as part of our work.
Each of the tools that we use — version control systems like Git (along with collaborative tools like Github/Gitlab), IDE's like Eclipse/IntelliJ, build systems like Gradle, Ci/Cd tooling like Jenkins, IaaC tools like Ansible, the command line — all introduce context.

To be effective developers we need to know when to operate in a certain context, combine or tease apart how these contexts interplay.
Can you improve your release announcements if format your commit messages consistently? You bet!
How should your build tool interact with your version control system?
What does naming your files have to do with how you use your IDE?

This session will take a look at several of these contexts — it will attempt to discern between them, explore when you should separate them and when you attempt to bring them together.

With lots of examples, and lots of quizzes this session will definitely leave you thinking about a few things.

Books

Head First Software Architecture: A Learner's Guide to Architectural Thinking

by Raju Gandhi

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.

Head First Git: A Learner's Guide to Understanding Git from the Inside Out

by Raju Gandhi

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 Next: Your Complete Guide to the New Features Introduced in JavaScript, Starting from ES6 to ES9

by Raju Gandhi

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.