Trainings

Trainings offered by Daniel Hinojosa

Introduction to Jenkins

Categories: Jenkins CI CI/CD Deployment DevOps Ops

Originally started off as Hudson, Jenkins is the standard for Continuous Integration. Jenkins is still very popular due to the amount of plugins. Jenkins has certainly changed over the years, where as pipelines were once created in the UI of Jenkins, it is now mostly done as a groovy-based description file called Jenkinsfile which is committed to version control.

Introduction to Git

Categories: Git Version Control

Git is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. It is the current standard for version control. It is essential that developers know and understand git.

Apache Spark

Categories: Spark Scala Data Machine Learning Data Engineering FP Functional Programming

Apache Spark is a data analysis and aggregation tool built atop Scala. It is also a distributed calculation tool across multiple worker machines in a cluster. What makes the relationship of Spark and Scala so special is the ability to perform data analysis with functional programming or SQL.

This course is tailored for data analysts and engineers looking to harness their data workloads and develop solutions.

Domain Driven Design

Categories: Domain Driven Design DDD Architecture

Domain Driven Design has been one of the major cornerstones in large system design for many years. It has recently been in the zeitgeist as of late, especially when it comes to the terms bounded context and microservices. This five-day class introduces you to Domain Driven Design, and why it is important. We will cover the design and pattern, discuss subdomains, context mapping, tools, and management

Our class will not only introduce you to the terms, but we will cover planning, and go through challenges on design so we can discuss the tradeoffs that come with the design. We will also cover some of the more modern patterns that came out of DDD like CQRS, Data Mesh, Rest, and more.

Intermediate Java

Categories: Java JDK SDK

Intermediate Java assumes knowledge of some of the basics and continues with an understanding of harder concepts including Collection performance, DateTimeAPI, Database Programming, and the Java Module System.

Introduction to Helm

Categories: Helm Helm v3 Kubernetes

Helm is part Kubernetes Package Manager and Part Chart Development. The Helm course is designed to be an introduction to understanding and working with the Helm Kubernetes package manager. It will start with a journey to understand why Helm exists and its purpose. The course will then navigate a path towards how to work with it, including building charts, publishing them, using them to release and manage Kubernetes workloads, as well as the various capabilities Helm offers via its CLI.

RXJava

Categories: RXJava Reactive Reactive Programming Functional Programming

RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.

It extends the observer pattern to support sequences of data/events and adds operators that allow you to compose sequences together declaratively while abstracting away concerns about things like low-level threading, synchronization, thread-safety and concurrent data structures.

This class introduces you to the history of RXJava, what purpose it serves, using marble diagrams, and using it in a production environment.

Spinnaker

Categories: Spinnaker CD CI/CD Deployment DevOps Ops Continuous Delivery Continuous Deployment Kubernetes Netflix

Spinnaker is a free and open-source Continuous Delivery framework that manages deployments in either a cloud provider like AWS, GCP, or Azure or onto Kubernetes.

Spinnaker is the brainchild of Netflix where they use it to deploy and manage applications onto the cloud. This class covers important concepts like applications, accounts, artifacts and then delves into how to develop pipelines and run those pipelines.

Maven

Categories: Maven Java Build Tools

Maven is the de-facto build-tool in Java and Spring. Gradle comes in at a close second. It was one of the first, if not the first to make use of downloaded dependencies and calculating hashes for verification. It manages an entire development lifecycle, and enjoys a wide array of plugins from the community.

Advanced Java

Categories: Java JDK SDK

Advanced Java is for the programmer that needs to know all the latest and greatest advancements in Java. This training includes difficult topics like generics, I/O, Networking, and Security.

SBT

Categories: SBT Scala Build Tools

SBT is by far the most often used build tool for the Scala community. The official name now is SBT but was known as "Simple Build Tool", unofficially people call it "Scala Build Tool". Whatever name you prefer, this is an amazing build tool. Built on Scala, you can set up either declaratively or programmatically. The build tool is capable of multi-module projects, custom talks, scopes, and has multiple plugins developed by the community.

Kafka

Categories: Kafka Kafka Streams

Apache Kafka is a framework implementation of a software bus using stream-processing. It is an open-source software platform developed by the Apache Software Foundation written in Scala and Java. The project aims to provide a unified, high-throughput, low-latency platform for handling real-time data feeds. It is also a part of an entire ecosystem in the Confluent Platform that includes Schema Registry, Connect, Streams, and KSQLDB.

Beginning Java

Categories: Java JDK SDK

Beginning Java introduces the student to the fundamentals of Java. We discuss the tools. How to install. What is a jar file, and what is a classpath. We then go through not only the standards but modern conventions. We discuss Object-Oriented Programming, Methods, Classes.

Advanced Scala

Categories: Scala Functional Programming JVM

Scala is for better or worse is considered a difficult language. Often it is because of highly technical blog posts or instructions that confuse more than enlighten. This Advanced Scala course it to take this supposed "hard material" and simplify it for audiences so that the language becomes within reach.

Design Patterns in Java

Categories: Design Patterns Architecture Java

Design Patterns: Elements of Reusable Object-Oriented Software was and still is a seminal book. It defined many of the patterns that we see over and over again in our development. Design Patterns give us a vocabulary to communicate design; Adapter, Bridge, Flyweight, Factory, and more. Most of these patterns are still used today, although some have taken on a slightly different form due to the advent of lambdas and functional programming

Introduction to Kubernetes

Categories: Kubernetes

Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.

This introductory course is to level up operations and developers on how to use and maintain Kubernetes. This course starts with an introduction to Docker, then we proceed to an introduction to Kubernetes where we cover the history and what problems Kubernetes tries to solve. We then cover installation and necessary CLI utilities. We follow up describing the architecture of a Kubernetes cluster. Then we dig into how to do the common real-world operations like installing your app, scaling your app, viewing a dashboard, creating services and ingresses, deploying volumes, and administering your cluster.

Akka

Categories: Akka Distributed Computing Scala

Akka is a free and open-source toolkit and runtime simplifying the construction of concurrent and distributed applications on the JVM. Akka supports multiple programming models for concurrency, but it emphasizes actor-based concurrency, with inspiration drawn from Erlang.

The Akka Course is 90% Scala-based, but we will include one or two sections in Java.