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

Angular Workshop

9:00 AM MDT

Angular is a new JavaScript framework from Google. If you are looking into developing rich web applications, Angular is your friend. Angular embraces HTML and CSS, allowing you to extend HTML towards your application, and uses plain JavaScript which makes your code easy to reuse, and test. In this workshop we will start from the ground up, and build our way through a simple application that will let us explore the various constructs, and the familiarize ourselves with some of the new terminology in Angular.

In this workshop we will get down and dirty with Angular. In this workshop we will start with the very basics of how to boostrap our AngularJS application, and work slowly towards making REST-ful AJAX requests to a backend. List of topics include

  • Bootstrapping an AngularJS application using ng-app
  • ng-init and the evaluation {{ }} directive
  • A brief look at $rootScope
  • ng-model
  • Controllers, Dependency Injection, and the View-Model (controller as syntax)
  • Looping using ng-repeat
  • Forms using ng-form, form validation and submission in AngularJS
  • Angular provided filters and how to write our own
  • Factories
  • Making AJAX requests using $http
  • Routing and route params using $routeProvider and $routeParams

If time permits we will discuss a few good practices when working with AngularJS applications.

This is a hands on tutorial so bring your laptops!

Web Apps with AngularJS - Part I

8:30 AM MDT

In this session, we will take a look at Angular - the powerful MVVM SPA framework from Google. We will discuss some of the terminology that Angular offers, and see how we can use that to develop highly interactive, dynamic web applications. See “Detail” for a list of topics I cover and the Github repo URL

In this session we will take a look at Angular and using it to develop rich web applications. Angular embraces HTML and CSS, allowing you to extend HTML towards your application, and uses plain JavaScript which makes your code easy to reuse, and test.

Note: This is an intro level talk. It is targeted towards developers who are curious about Angular and want to learn about the fundamental features and concepts in Angular.

Topics Covered -

  • Bootstrapping an AngularJS application using ng-app
  • ng-init and the evaluation {{ }} directive
  • A brief look at $rootScope and scoping rules
  • ng-model
  • Controllers, Dependency Injection, and the View-Model
  • Looping using ng-repeat
  • Forms using ng-form, form validation and submission in AngularJS
  • ng-messages to display form validation messages to the user
  • Angular provided filters and custom filters

GitHub URL - https://github.com/looselytyped/angudone-workshop/tree/solutions

Web Apps with AngularJS - Part II

10:30 AM MDT

In this session, we will take a look at Angular - the powerful MVVM SPA framework from Google. We will discuss some of the terminology that Angular offers, and see how we can use that to develop highly interactive, dynamic web applications. See “Detail” for a list of topics I cover and the Github repo URL

In this session we continue our discussion from Part I. As we continue to evolve our application we will seek to use, and understand a few more of AngularJS' core constructs.

  • Factories and services
  • Routing using ng-view and $routeProvider
  • AJAX calls to a backend using $http

If time permits we will look at a few good practices when developing AngularJS applications, ways to modularize your code, and some tools that aid in the development of AngularJS applications.

On Subliminal text editing

8:30 PM MDT

We as programmers, spend a lot of time writing and manipulating text. Furthermore, as developers, not only do we appreciate the simplicity and power of plain text, we appreciate tools that manage, and/or manipulate plain text such as Git or Asciidoc. It is therefore prudent that as developers we find, and master a text editor that can let us do what we need to do, while growing to accommodate all of our text editing needs. In this session we will take a look at Sublime Text - a powerful, fast, and flexible text editor that has adoring fans the world over.

We will see what makes Sublime highly suited to the kinds of work that we wish to do, as well as some plugins and customizations that can make your life as a developer using Sublime text.

Devs Just Want to Have Fun(ctional)!

9:00 AM 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.

Being proactively Reactive with Rxjs

11:00 AM MDT

In today's world, our applications need to be both responsive, fast and scalable. Our applications need to respond to user interactions such as mouse movements, clicks and inputs as well as asynchronous inputs like XHR calls, server sent events, setInterval, even web socket events! Unfortunately as things stand today, there is no consistent way to deal with the myriad of different “changes” that could happen in an application.

But what if there is? This is what Reactive Extensions (specifially RxJs in this session) allow us to do. It offers us an abstraction that allows us to treat everything from DOM events (infinite streams) to our domain (maps, sets and arrays) as streams. This consistent interface now permits us to create and manipulate any source identically. Futhermore, it allows us to react to different sources as if they are one!

Reactive Extensions are fast becoming the de-facto approach of managing asynchronicity in JS land. From Netflix's UI to Angular 2 $http to ES7 - reactive programming is everywhere!

This session is RxJs 101, covering

  • A brief introduction to reactive programming
  • How reactive programming is analogous to dataflow programming
  • The architectural patterns underlying reactive extensions
  • How we can create and manipulate “observable” streams within our applications
  • Error handling
  • Hot and Cold observables
  • The reactive landscape, and a couple of gotcha

If we have time we will look at a simple demo, and reactive progamming's role in Angular 2

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.