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

Event Driven Architecture

Monday, 9:00 AM EST

Event-driven architecture (EDA) is a design principle in which the flow of a system’s operations is driven by the occurrence of events instead of direct communication between services or components. There are many reasons why EDA is a standard architecture for many moderate to large companies. It offers a history of events with the ability to rewind the ability to perform real-time data processing in a scalable and fault-tolerant way. It provides real-time extract-transform-load (ETL) capabilities to have near-instantaneous processing. EDA can be used with microservice architectures as the communication channel or any other architecture.

In this workshop, we will discuss the prevalent principles regarding EDA, and you will gain hands-on experience performing and running standard techniques.

  • Key Concepts of Event-Driven Architecture
  • Event Sourcing
  • Event Streaming
  • Multi-tenant Event-Driven Systems
  • Producers, Consumers
  • Microservice Boundaries
  • Stream vs. Table
  • Event Notification
  • Event Carried State Transfer
  • Domain Events
  • Tying EDA to Domain Driven Design
  • Materialized Views
  • Outbox Pattern
  • CQRS (Command Query Responsibility Segregation)
  • Saga Pattern (Choreography and Orchestrator)
  • Avoiding Coupling
  • Monitoring Systems
  • Cloud-Based EDA

Architectural Patterns Focus: Security

Tuesday, 8:30 AM EST

In this session, we will discuss architectural concerns regarding security. How do microservices communicate with one another securely? What are some of the checklist items that you need?

  • Valet Key
  • mTLS and Sidecars
  • Public Key Infrastructure (PKI)
  • SASL
  • Hashicorp Vault Keys
  • SBOMs
  • JSON Web Tokens

Architectural Patterns Focus: Data

Tuesday, 10:30 AM EST

This session will focus on data governance and making data available within your enterprise. Who owns the data, how do we obtain the data, and what does governance look like?

  • CQRS
  • Materialized Views
  • Warehousing vs Data Mesh
  • OLAP vs OLTP
  • Pinot, Kafka, and Spark
  • Business Intelligence
  • Making Data Available for ML/AI

Architectural Patterns Focus: Fault Tolerance

Tuesday, 1:00 PM EST

This presentation will discuss the patterns required when things go wrong in architecture and how to stay resilient under pressure. These are battle-tested patterns that every architect should know.

  • Circuit Breaker
  • Throttling
  • Retries
  • Bulkhead
  • Failover
  • Fallback
  • Timeout
  • Leader Election
  • Raft Protocol
  • Competing Consumers
  • Health Checks
  • Replicator
  • Idempotency
  • Shadowing
  • Graceful Degradation

From DDD to Delivery

Tuesday, 3:00 PM 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 presentation, we will break it down into pairs of topics.

  • Subdomains to Architecture Boundaries
  • Bounded Contexts
  • Context Mapping
  • Value Objects, Entities, and Aggregates
  • Where do Microservices fit in?
  • How do subdomains and bounded contexts fit in?
  • Where do we put human beings in all this?
  • What is Event Storming

Architectural Patterns Focus: EventDriven Architecture & Messaging

Wednesday, 9:00 AM EST

Join us for an indepth exploration of cuttingedge messaging styles in your large domain.

Here, we will discuss the messaging styles you can use in your business.

  • Event Sourcing
  • EventDriven Architecture
  • Claim Check
  • Event Notification
  • Event Carried State Transfer
  • Domain Events

Architectural Patterns Focus: Transactions

Wednesday, 11:00 AM EST

We take a look at another facet of architectural design, and that is how we develop and maintain transactions in architecture. Here we will discuss some common patterns for transactions

  • TwoPhase Commit
  • The Problem with 2PC
  • Using EventDrivenArchitecture to manage transactions
  • Transactional Outbox
  • Compensating Transaction
  • Optimistic vs Pessimistic Locking
  • TCC (TryConfirm/Cancel)
  • Saga Orchestrator
  • Saga Choreography

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