Blog

Magnus Smith

Lead Developer at Scott Logic, Creator of Higher-Kinded-J. I've 25 years working with Java and passionate about modern JVM technologies.

ultramagn3tic@blusky

Tech
In Part 3 we are focusing on building an Abstract Syntax Tree (AST) for an expression language using Java 25 features and Higher-Kinded-J. We will create a complete expression language with parsing, type checking, optimisation, and interpretation that is type-safe, immutable, and easy to transform.
Tech
We continue the series by diving deeper into the three core optics - lenses for product types, prisms for sum types, and traversals for collections.
Tech
Java 25 embraces immutability with records and pattern matching. When it comes to deeply nested data then pattern matching solves reading, but provides no help for writing.
Tech
In this post we will see how Thunks and Trampolines can help solve problems by converting deep stack-based recursion into heap-based iteration helping to prevent StackOverflowErrors
Tech
In this post we will see how Higher Kinded Types types can help increase the flexibility of our code and reduce duplication.
Tech
Learn about how Functors and Monads provide patterns to write cleaner, more composable, and robust code that helps us deal with operations like handling nulls, managing errors and sequencing asynchronous actions.
Tech
In this post we will see how Intersection types help us better model type constraints promoting reuse and how Union types increase code flexibility. We will compare and contrast approaches and how to use in the latest Java and Scala.
Tech
In this post we look at Variance in Generics and how it is handled in Java and Scala. We consider use-site and declaration-site approaches and the trade offs of erasure. Finally we take a look at Phantom and Existential types and how they can enhance the capabilities of the type system when it comes to modelling.
Tech
In this post we explore the power of Algebraic Data Types(ADT) with Pattern Matching in Java. We look at how they help us model complex business domains and how using them together gives improvements on the traditional Visitor Pattern.
Tech
This post is designed for Java developers who want to adopt JSpecify for consistent nullability handling in their projects. By following the steps and examples, you should be able to set up and utilize the core JSpecify annotations effectively in your codebase.
Tech
This post explores some of the ideas and technology features behind Docker and Kubernetes. We delve into deploying a simple Java application on the Google Cloud Platform using a managed Kubernetes Cluster.