Presentations offered by Daniel Hinojosa

What's new in Scala 3 "Dotty"?

Categories: Scala, Scala 3, Programming, Functional Programming

In the alternative JVM Language arena, Scala has come out with a new feature set under the code name "Dotty", now called Scala 3. Let’s take a look at some of the cool new stuff that we can use. This presentation will assume basic Java knowledge and no Scala knowledge is required.

Personal Agility with the Pomodoro Technique

Categories: Pomodoro Technique, Productivity

Time is very precious and is often threatened by phone calls, emails, co-workers, bosses, and most of all, yourself. The Pomodoro Technique reigns in unfocused time and gives your work the urgency and the attention it needs, and it’s done with a kitchen timer.

HTTP Client Deep Dive

Categories: HTTP Client, Java, HTTP, HTTP/2

JDK 11 saw the advent of a new HTTP Client and important new API for calling content on remote RESTful endpoints. This presentation will just focus on the HTTP Client are how to maximize its use.

Property Based Testing on the JVM

Categories: Property Testing, Testing, Java, JQwik

Property Based testing is letting the computer determine aggressive inputs for your subjects. When the computer provides edge cases, it highlights some of the typical problems that may still show up, so that you, the programmer, may have not thought about.

TypeLevel Cats

Categories: Functional Programming, FP, Typelevel, Typelevel Cats, Monad, Monoid, Functor

Imagine toString, equals, and hashCode in a single class. Can you change implementations on the spot? Probably not, there may be too many dependencies on your implementation. Time to break out an adapter pattern, a utility class, or better yet, a type class! A type class is a kind of template in very static functional programming languages. Imagine a template that can read, write information as a side effect as well? Type classes are powerful.

In-Depth Jupyter Notebooks

Categories: Machine Learning, ML, Data, Notebooks

Jupyter Notebooks has been a platform for Data Analysts and Data Scientists for the last few years but it may be expanding to a more general population including students, financial analysts, and other Scientific rigors. Running a Jupyter Notebook today is just as important as running a web browser. It is an essential platform for learning, conveying information, and telling a story.

Grokking Generics

Categories: Java, JDK, SDK, Generics

For those still grappling with Generics? This will be an attempt to clear the air about generics. What are wildcards? What is extends? What is super? What is covariance? What is contravariance? What is invariance? What is erasure? Why and when do I need this?

Reactive Streaming with RXJava

Categories: RXJava, Reactive, Reactive Programming, Functional Programming

ReactiveX is a set of Reactive Extensions developed by Netflix, and is developed for various programming languages, like Java, Scala, and Clojure. ReactiveX overhauls the observable design pattern to achieve reactive goals. This presentation will solely focus on the Java version of ReactiveX, RXJava.

Getting Started with Test Driven Development in Java

Categories: Testing, Refactoring, TDD, Test Driven Development

Test-Driven Development is a test-first practice that drives the code through tests. It is a simple practice but not an easy practice.

  1. Quickly add a test.

  2. Run all tests and see the new one fail.

  3. Make a little change.

  4. Run all tests and see them all succeed.

  5. Refactor to remove duplication.

The details are what gets you. This presentation introduces you to Test Driven Development, how to get started, what modern tools are available, and the challenges you will face.

Graal The Magnificent

Categories: Graal VM, Graal, Java, JVM, Oracle, Native

Graal is a VM and an awesome VM at that. Able to run a variety of languages and fast. The execution times can be impressive too. This VM can run anything, JavaScript, Python 3, Ruby, R, JVM-based languages like Java, Scala, Kotlin, and LLVM-based languages such as C and C++.

Kubernetes Security Concepts Parts 1 & 2

Categories: Kubernetes, Security

There are multiple elements to Kubernetes where each component seems like a character in a book, pods, services, deployments, secrets, jobs, config maps, and more. In this presentation, we just focus on the security aspect of Kubernetes and the components involved. Particularly centered around RBAC and ServiceAccounts. What they are, what they do. We discuss etcd and secrets. We will also discuss other options for security in Kubernetes.

In Depth Kafka Streams and KSQLDB

Categories: Kafka, Kafka Streaming, Java, KSQLDB

Kafka is more than just a messaging pub/sub with storage. It goes beyond that and with technology from Confluent open source it has become a full-fledged data ETL and data streaming ecosystem.

Testing Data Layers with TestContainers

Categories: Testing, Integration Testing, TestContainers

In the past, testing the data layer was hard, really hard. It would include a test database, as opposed to the production which of course we didn’t want to use for testing. Maintaining any sort of consistency was a pain to do, and perhaps fell by the wayside because it was too tedious and too fragile. Then we used in-memory databases, but the only viable ones were HSQLDB or H2. The problem there though is that the SQL for the in-memory databases didn’t quite match up. Today we have Test Containers which uses a Docker Client to download a specific version of whatever database or messaging system you wish to integrate. The best part, you can test against the same version of the database or messaging system so you have higher confidence that your tests work.

Testing the Undesireable

Categories: Testing, Legacy, Refactoring

In reality, our jobs aren’t dealing with new code, but old crufty and evil code. How do we test such code, how do we get through it? How can we surgically take some of this bad code apart and make it testable.

Machine Learning Data Pipelines

Categories: Machine Learning, ML, Data, Data Pipelines, Data Engineering, Kafka, Kafka Streaming, Deep Learning

How do we move information realtime and connect machine learning models to make decisions on our business data? This presentation goes through machine learning and Kafka tools that would help achieve that goal.

Understanding JVM Futures

Categories: Java, JDK, SDK, Futures, Functional Programming

Starting with JDK 5, we have had Futures, and they mostly went ignored. Now with concurrency and reactive technology in demand, it is essential that we understand what futures are, and how to handle them and make use of their power in asynchronous systems.

Foundations of Facial Recognition

Categories: Machine Learning, ML, Facial Recognition

Facial Recognition whether you agree with it or not it is here to stay. Understand what the algebra is behind facial recognition, what is involved, and what kind of software there is out there.

Spinnaker and Kubernetes

Categories: Kubernetes, Spinnaker, Netflix

Back in 2005, when an unknown program called Hudson came onto the scene, I was pretty excited. I had used CruiseControl up to that point and was getting pretty comfortable with the notion of Continuous Integration. Hudson had terrific graphics and an intuitive UI, unlike Cruise Control with XML laden directives. I thought the future was here. Then some cracks started showing, particularly in the delivery aspect of Hudson. I had used a Tomcat plugin, but trying to get a jar, use various environments, became a juggling act. Then came Docker, and I loved it because we get to deploy an image! No more SSHing into a box and messing things up. We had immutability. Now, we have Kubernetes, a system that takes these immutable containers and monitors them, among other great features. Jenkins still has its place but as CI, Continuous Integration. In this presentation, I will demonstrate Spinnaker, a system developed by Netflix for CD, Continuous Delivery. I will demonstrate how to set up, deploy, , monitor, rollback, and scale our pods with the ease of just selecting an item on a menu.

Kafka and Streaming

Categories: Kafka, Kafka Streaming, Java, Data Engineering

Kafka has captured mindshare in the data records streaming market, and in this presentation, we knock on its door and see what lies behind it. What is the draw? What makes it an attractive addition? How does it compare to Message Queues and other message streaming services?

Introduction to

Categories: Functional Programming, Java, FP, Vavr

Java 8 is pretty great, but mix in JavaSlang (now called Vavr) and get ready for some functional programming excitement.

Machine Learning with Spark MLLib

Categories: Machine Learning, ML, Data, Data Engineering, Data Science

Spark has a machine learning aspect to it and it’s called Spark MLLib. We discuss an intro into machine learning, some models, then apply some of those common machine learning models.

Functional Reactive Programming on the Front-End using Elm

Categories: Language, Elm, Programming, Reactive, Functional Programming

The silent and deadly competitor to React and Angular. Meet Elm. All functional and client language. Absolutely Clean.

Spark Streaming

Categories: Scala, Spark, Streaming

Spark Streaming is one of the few additions that are available with Spark that uses its internal architecture and creates a Streaming processing framework to process data in real-time.