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

Journey into Architectural Design Patterns

Monday, 9:00 AM EST

In this day-long work workshop, we will walk through a catalog of all the common architectural design patterns. For each design pattern, we will run docker-compose files that demonstrate the strengths and weaknesses of those design patterns. So you have a first-hand, full-on, and highly engaged full-day workshop to give you the knowledge you need to make critical architectural choices.

We will cover:

  • Anti-corruption-layer
  • Claim Check
  • CQRS
  • Gatekeeper
  • Strangler Fig
  • Bulkhead
  • More …

From DDD to Delivery

Tuesday, 8:30 AM EST

Domain Driven Design has been guiding large development projects since 2003, when the seminal book by Eric Evans came out. Domain Driven Design is split up into two parts: Strategic and Tactical. One of the issues is that the Strategic part becomes so involved and intense that we lose focus on implementing these sorts of things. This presentation swaps this focus as topic pairs. For example, when we create a bounded context, is that a microservice or part of the subdomain? When we create a domain event, what does that eventually become? How do other tactical patterns fit into what we decide in the strategic phase?

In this workshop, we will break it down into pairs of topics.

  • Subdomains to Architecture Boundaries
  • Where do Microservices fit in?
  • Where does DataMesh fit in?
  • How do subdomains and bounded contexts fit in?
  • What is shared kernel technology-wise? Is it a library or a service?
  • Where do we put human beings in all this?
  • What can we afford to do?
  • What kind of technology shopping list are we looking at?

In this workshop, we will perform the following activities

  • Event Storming but with a Technology Focus
  • Context Mapping but with a Technology Focus
  • Decide how to implement some common patterns with a Technology Focus

From DDD to Delivery

Tuesday, 10:30 AM EST

Domain Driven Design has been guiding large development projects since 2003, when the seminal book by Eric Evans came out. Domain Driven Design is split up into two parts: Strategic and Tactical. One of the issues is that the Strategic part becomes so involved and intense that we lose focus on implementing these sorts of things. This presentation swaps this focus as topic pairs. For example, when we create a bounded context, is that a microservice or part of the subdomain? When we create a domain event, what does that eventually become? How do other tactical patterns fit into what we decide in the strategic phase?

In this workshop, we will break it down into pairs of topics.

  • Subdomains to Architecture Boundaries
  • Where do Microservices fit in?
  • Where does DataMesh fit in?
  • How do subdomains and bounded contexts fit in?
  • What is shared kernel technology-wise? Is it a library or a service?
  • Where do we put human beings in all this?
  • What can we afford to do?
  • What kind of technology shopping list are we looking at?

In this workshop, we will perform the following activities

  • Event Storming but with a Technology Focus
  • Context Mapping but with a Technology Focus
  • Decide how to implement some common patterns with a Technology Focus

Machine Learning Data Pipelines

Wednesday, 1:30 PM EST

This workshop builds an entire event driven data pipeline with Machine Learning and Kafka. From Kafka where we use producers or Kafka Connect to generate information, we then will Kafka Streams to apply a machine learning model to make business decisions.

This intensive lab will start by integrating sources into our backplane, then train our models, and operationalize our model using Kafka Streams. We will then create result topics when we can read in as a report and display visualizations of our data. The result will also be scalable and fault tolerant.

Machine Learning Data Pipelines

Wednesday, 3:15 PM EST

This workshop builds an entire event driven data pipeline with Machine Learning and Kafka. From Kafka where we use producers or Kafka Connect to generate information, we then will Kafka Streams to apply a machine learning model to make business decisions.

This intensive lab will start by integrating sources into our backplane, then train our models, and operationalize our model using Kafka Streams. We will then create result topics when we can read in as a report and display visualizations of our data. The result will also be scalable and fault tolerant.

The Fine Art of Canary Deployments

Wednesday, 5:00 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

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