Daniel Hinojosa

Independent Consultant

Daniel Hinojosa

Daniel is a programmer, consultant, instructor, speaker, and recent author. With over 20 years of experience, he does work for private, educational, and government institutions. He is also currently a speaker for No Fluff Just Stuff tour. Daniel loves JVM languages like Java, Groovy, and Scala; but also dabbles with non JVM languages like Haskell, Ruby, Python, LISP, C, C++. He is an avid Pomodoro Technique Practitioner and makes every attempt to learn a new programming language every year. For downtime, he enjoys reading, swimming, Legos, football, and barbecuing.

Presentations

Nix: Sandbox and Reproducible Builds

Monday, 3:15 PM EST

We have gone through a lot when it comes to configuring our computers with Java, with an editor, and maybe even setting up Git. We often take great care in ensuring that our PATH and even JAVA_PATH environments are clean and organized. Then, when we decide to install software that depends on the software that we already have installed, what does it do, reinstall that dependency! Not only that, it's somewhere else. Now we have multiple Java's with the same version. We have multiple pythons, Multiple everything. It's time to end this madness and aggravation and nix the old way and introduce a new way, NixOS.

In this presentation, we tell a story.

  • I want my group to use the same language and tool versions exactly and repeatedly; I don't want to hear, “It works on my machine.” It should work on all machines and CI/CD.
  • Wait, is this like Docker?
  • Installing and Using Nix
  • How to use nix-shell?
  • Finding our software in the nix-store
  • Establishing a default.nix
  • How to install
  • Using some of the other nix commands
  • Programming Nix
  • Using Nix with Docker
  • How dependencies are cached
  • What is the actual operating system? Nix-OS?

The Fine Art of Canary Deployments

Tuesday, 1:30 PM EST

Canary Deployments are the last ingredient of any Continuous Delivery or Continuous Deployment rollout. A canary deployment is a deployment strategy that releases an application or service incrementally to a subset of users. All infrastructure in a target environment is updated in small phases (e.g., 2%, 25%, 75%, 100%). This control makes a canary release the lowest risk-prone compared to all other deployment strategies, like the blue-green strategy. If you need to back out of a production deployment quickly without much disruption, then canary deployments may be an excellent practice to set up.

We will treat this talk like a recipe so that you can set up a canary in your work environment.

  • Continuous Integration, Continuous Delivery,
  • Continuous Deployment Overview
  • You can perform this anywhere: Cloud instances or Kubernetes
  • What is Canary? What are some of the strategies you can use?
  • What CD Frameworks perform Canary Deployments?
  • How do you perform metrics? Are things going too slow or too fast?
  • How do you back out if this rollout is not performing as well as it should?
  • Can you perform canary deployments without a CD framework? Perhaps something native to Kubernetes?
  • Performing using Spinnaker, Argo, Istio
  • Conclusion

Helm: Kubernetes Chart Deployment & Development Deep Dive

Wednesday, 9:00 AM EST

Helm is excellent stuff. It is the package manager for Kubernetes and a way that you can package your Kubernetes YAML files and templatize them for reuse for either people in your organization or the public at large. Helm makes it super simple to deploy any major system with relative ease: find a repository, add the repository, and install your product. All Helm charts have a set of default values for everyday use cases, and it would be up to you to override the values you desire for your custom installation.

In this presentation, we will cover the following to get you going with Helm:

  • Installation of Helm
  • Adding a repository
  • Installing a chart
  • Upgrading and rolling back a chart
  • Installing a dependency or subchart
  • Creating charts
  • Helm Functions
  • Unit Testing
  • Deployment

Helm: Kubernetes Chart Deployment & Development Deep Dive

Wednesday, 11:00 AM EST

Helm is excellent stuff. It is the package manager for Kubernetes and a way that you can package your Kubernetes YAML files and templatize them for reuse for either people in your organization or the public at large. Helm makes it super simple to deploy any major system with relative ease: find a repository, add the repository, and install your product. All Helm charts have a set of default values for everyday use cases, and it would be up to you to override the values you desire for your custom installation.

In this presentation, we will cover the following to get you going with Helm:

  • Installation of Helm
  • Adding a repository
  • Installing a chart
  • Upgrading and rolling back a chart
  • Installing a dependency or subchart
  • Creating charts
  • Helm Functions
  • Unit Testing
  • Deployment

Books

Testing in Scala

by Daniel Hinojosa

  • If you build your Scala application through Test-Driven Development, you’ll quickly see the advantages of testing before you write production code. This hands-on book shows you how to create tests with ScalaTest and the Specs2—two of the best testing frameworks available—and how to run your tests in the Simple Build Tool (SBT) designed specifically for Scala projects.

    By building a sample digital jukebox application, you’ll discover how to isolate your tests from large subsystems and networks with mocking code, and how to use the ScalaCheck library for automated specification-based testing. If you’re familiar with Scala, Ruby, or Python, this book is for you.

    • Get an overview of Test-Driven Development
    • Start a simple project with SBT and create tests before you write code
    • Dive into SBT’s basic commands, interactive mode, packaging, and history
    • Use ScalaTest both in the command line and with SBT, and learn how to incorporate JUnit and TestNG
    • Work with the Specs2 framework, including Specification styles, matchers DSLs, and Data Tables
    • Understand mocking by using Java frameworks EasyMock and Mockito, and the Scala-only framework ScalaMock
    • Automate testing by using ScalaCheck to generate fake data