Daniel Hinojosa

Independent Consultant

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

Let us peer into the future of Java with the Foreign Function and Memory Interface, the new way to interact with native code. This session will discuss the essential ingredients of creating a Java-based application that issues commands and reads from the underlying native code and libraries. We will discuss establishing memory arenas, establishing pointers, making download calls, and using upcall stubs. This presentation will be rich with actual code examples. We will conclude by discussing the eventual removal of JNI, the old Java Native Interface

In this session, we will describe each of the following features of the Foreign Function and Memory API, along with Kata demos that you can run.

  • Establishing an Arena
  • Creating a Linker
  • Downcall Handles
  • Method and Variable Handle
  • Describing Functions
  • Dealing with Pointers as Parameters and as Return Values
  • Upcall Handles
  • Restricted Methods
  • Using jextract
  • Linking to something other than C with a Demo using Rust

In this session, we will discuss the Vector API, now in incubator, in Java. We will start by discussing SIMD (Single Instruction, Multiple Data) and how we can use it to maximize the speed of our computations. We will then discuss setting up the Vector API, establishing a species, and defining and using components and lanes. We will understand and use masking and various operators using masking. Then, we will discuss same-lane and cross-lane computation.

In our session, we will cover the details of the Vector API and also dive into the code and the debugger to see what's going on underneath.

  • SIMD
  • Vectors
  • Lanes and Components
  • Lane Wise Operators: Adding, Multiplying, Broadcasting, Blending
  • Cross Lane Operators: Shuffling, Reducing, Comparing
  • Creating a Machine Learning Model on the Vector API

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