ultramagnetic
ultramagn3tic.bsky.social
ultramagnetic
@ultramagn3tic.bsky.social
Lead Developer at Scott Logic by day, Architecturally curious, techno freak by night. Creator of Higher-Kinded-J https://higher-kinded-j.github.io
#higher-kinded-j #hkj #java #scala
Views are frequently my own
🎉 New in higher-kinded-j: Bifunctor support!

Transform both sides of your data structures with bimap, first, and second operations.
✨ Use with Either, Tuple2, Validated, and Writer
✨ Type-safe
✨ Law-verified
higher-kinded-j.github.io/functional/b...

#Java #FunctionalProgramming #TypeSafety
Bifunctor - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner, more composable Java code for your projects using Optics.
higher-kinded-j.github.io
November 15, 2025 at 12:08 PM
🚀 New Selective support in latest #higher-kinded-j release🚀
Bringing the power of conditional effects to #Java use Selective with
* Either
* Maybe
* Optional
* List
* IO
* Reader
* Id
* Validated
Find out more: higher-kinded-j.github.io/functional/s...
Selective - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner...
higher-kinded-j.github.io
November 14, 2025 at 9:30 AM
Reposted by ultramagnetic
Understanding Contramap
blog.rhetoricalmusings.com
September 20, 2025 at 11:03 PM
🚀 New Higher-Kinded-J 0.1.8 🚀
✨ Protofunctors - Transform both inputs & outputs of your functions with dimap, lmap, rmap
🔍 Protofunctor enhanced Optics - Lens, Prism, Traversal & Iso for immutable data manipulation
Checkout the hkj-book higher-kinded-j.github.io/functional/p...
#Java #FP #Optics
Profunctor - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner...
higher-kinded-j.github.io
September 10, 2025 at 4:11 PM
September 5, 2025 at 10:15 PM
🚀 higher-kinded-j v0.1.7 is here!

✨ Auto wither methods via @GenerateLenses
✅ Error accumulating Validated (Applicative)
🧮 New Semigroup, Monoid, & Foldable interfaces
↔️ Improved type flexibility on core interfaces

All documented in the updated hkj-book: higher-kinded-j.github.io

#Java #FP
Introduction to Higher-Kinded-J - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner...
higher-kinded-j.github.io
August 29, 2025 at 4:24 PM
#Java is getting Typeclasses. This is a super interesting talk from @briangoetz.bsky.social looks to be a huge evolutionary improvement to Java and very well thought out. Can't wait to try it! youtu.be/Gz7Or9C0TpM...
Growing the Java Language #JVMLS
youtu.be
August 22, 2025 at 10:50 AM
Higher-Kinded-J
🔍 Traverse complex records with Lenses, Traversals, & Prisms, all type-safe, compile-time generated, and fully immutable in Java

Full example: higher-kinded-j.github.io/optics/audit...
Explore more: higher-kinded-j.github.io

#Java #FunctionalProgramming #Optics #Immutability #HKTs
Auditing Complex Data - The Power of Optics - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner...
higher-kinded-j.github.io
July 23, 2025 at 4:07 PM
Say goodbye to verbose "copy-and-update" logic! #higher-kinded-j higher-kinded-j.github.io now has a powerful #Optics library. Generate #Lenses, #Prisms, #Isos and #Traversals with a simple annotation and perform deep, immutable updates in a single line of code. #Java #JavaDev #FP #FunctionalJava
Introduction to Higher-Kinded-J - Higher-Kinded Types and Optics for Java
Explore Higher-Kinded Types (HKTs) and Optcs in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner...
higher-kinded-j.github.io
July 20, 2025 at 2:16 PM
This is great analysis of AI hype/reality/motives of the pkayers and played
i released the 4th post of my series that reflects upon (purely) AI-agent-based software development. this time i discuss rarely considered side effects and unresolved questions that would arise from fully handing sw dev over to AI agents: www.ufried.com/blog/ai_and_...

enjoy if you like ... ;)
Thoughts on AI and software development - Part 4
Side effect and unresolved questions
www.ufried.com
June 29, 2025 at 10:04 AM
Reposted by ultramagnetic
Interesting thoughts.
calpaterson.com/porter.html
Building LLMs is probably not going be a brilliant business
The Netscapes of AI
calpaterson.com
November 28, 2024 at 6:14 AM
✨The new For-Comprehension in #higher-kinded-j can de-sugar complex monadic chains into a simple, sequential script.
It supports: ➡️ Generators (from) ➡️ Bindings (let) ➡️ Guards (when) ➡️ Final yield
#Java #FP #FunctionalProgramming #Monads #OpenSource #HKJ
higher-kinded-j.github.io/for_comprehe...
For Comprehension - HKJ Higher-Kinded Types for Java
Explore Higher-Kinded Types (HKTs) in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner, more composable Java code for your projects.
higher-kinded-j.github.io
June 12, 2025 at 6:01 PM
Learn how to use the State monad and IO monad in #Java with higher-kinded types by building a playable Draughts game with the new #higher-kinded-j functional library. #fp #functional #monad #hkj higher-kinded-j.github.io/draughts.html
Draughts Game - HKJ Higher-Kinded Types for Java
Explore Higher-Kinded Types (HKTs) in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner, more composable Java code for your projects.
higher-kinded-j.github.io
June 6, 2025 at 3:51 PM
Higher-Kinded-J is a new functional library for #Java bringing higher-kinded types to popular monad patterns. higher-kinded-j.github.io
Higher-Kinded-J - HKJ Higher-Kinded Types for Java
Explore Higher-Kinded Types (HKTs) in Java with the Higher-Kinded-J library. Learn about Functors, Applicatives, Monads, Transformers, practical functional patterns, and how to write cleaner, more com...
higher-kinded-j.github.io
June 5, 2025 at 5:38 PM
Reposted by ultramagnetic
New post: Responding to Real Usage

In Part 3 of Crafting Fluent APIs, I share how a conference demo led to a last-minute fix in WebClient's fluent API. Watch how people use your API, then improve it.

#Java #Spring #APIDesign #FluentAPI #tech
Responding to Real Usage · Poutsma Principles
poutsma-principles.com
May 28, 2025 at 11:02 AM
Reposted by ultramagnetic
i released the 2nd post, pondering the idea of ai-based coding and its potential impact on software development. this time i discuss the forces that drive the market and decision making (might feel a bit darker and more controversial than usual): www.ufried.com/blog/ai_and_...

enjoy if you like ;)
Thoughts on AI and software development - Part 2
The real forces that drive markets and decision makers
www.ufried.com
May 18, 2025 at 8:41 AM
Phantom types are an under appreciated feature in #Java. Can simulate typestate programming where an objects type changes to reflect current state, with operations available on that object depending on its current typestate. We can parametrise this using a base type and phantom type.
May 10, 2025 at 11:40 PM
In my latest post we explore how to manage deep recursion in Java and Scala using thunks and trampolines. Learn techniques that help avoid stack overflows and make recursive code more efficient. #Java #Scala #FunctionalProgramming
blog.scottlogic.com/2025/05/02/r...
Recursion, Thunks and Trampolines with Java and Scala
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
blog.scottlogic.com
May 2, 2025 at 4:04 PM
Higher-kinded types provide abstractions allowing us to define operations once and reuse across many different data structures. In my latest post i explore how they work in #Scala and how we can simulate them ourselves using #Java blog.scottlogic.com/2025/04/11/h...
Higher Kinded Types with Java and Scala
In this post we will see how Higher Kinded Types types can help increase the flexibility of our code and reduce duplication.
blog.scottlogic.com
April 11, 2025 at 10:43 AM
My latest blog post covering how we can write cleaner, more composable and robust code using functors and monads with examples in #java and #scala https://blog.scottlogic.com/2025/03/31/functors-monads-with-java-and-scala.html
Functors and Monads with Java and Scala
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.
blog.scottlogic.com
April 1, 2025 at 1:21 PM
Reposted by ultramagnetic
Unlock the mechanics of Kafka with our hands-on tutorial.

Our developer breaks down the Kafka Visualization Tool, guiding you step-by-step to simulate data flow through replicated Kafka topics.

Understand message processing better and optimize your Kafka operations:
Kafka Visualization Showcase
YouTube video by SoftwareMill
www.youtube.com
February 3, 2025 at 12:44 PM
Reposted by ultramagnetic
🧵I am happy to announce that I have just released v0.8.0 of Gatherers4j, a library of Stream Gatherers (intermediate operations) for #java 23+.

Please let me know what you think, especially if you have ideas for new gatherers.

github.com/tginsberg/ga...
Release Release v0.8.0 · tginsberg/gatherers4j
What's Changed Add support for orElse() and orElseEmpty() on size-based gatherers to provide a non-exceptional output stream Implement everyNth() to get every nth element from the stream Implement...
github.com
February 1, 2025 at 9:31 PM