Episodes

  • Project Valhalla: Value Types, Nullability and Float16
    Jul 14 2024
    An airhacks.fm conversation with Paul Sandoz (@paulsandoz) about: Project Valhalla's origins and goals, value types vs reference types, heap and stack flattening optimizations, Value objects and data transfer objects, nullability constraints, enums and values, implicit constructability, potential performance gains, challenges in retrofitting value types into Java, implications for numeric types and operator overloading, connections to Vector API and Project Panama, impact on JVM languages like Scala, timeline and development process for Project Valhalla, potential for improving Java's competitiveness in areas like machine learning, challenges in growing the Java language in an extensible way, considerations around backwards compatibility, Paul Sandoz's role in the project and future directions for Java

    Paul Sandoz on twitter: @paulsandoz

    Show more Show less
    1 hr and 3 mins
  • OpenRewrite: Transforming Java Code at Scale
    Jul 7 2024
    An airhacks.fm conversation with Jonathan Schneider (@jon_k_schneider) about: OpenRewrite as an open-source tool for code transformation using lossless semantic trees (LSTs), recipes as programs that manipulate the LST, YAML configuration for defining recipes, dry run and in-place code modification options, separation of open-source and commercial aspects of the project, Moderne as a SaaS platform for large-scale code analysis and transformation, visualization features in Moderne including dependency usage violin charts, impact analysis capabilities, organizational structure in Moderne for managing large codebases, integration of OpenRewrite in various IDEs and tools including Amazon Q Code Transformer, IntelliJ IDEA, and Visual Studio Code, the business model of open-source and commercial offerings, the genesis of OpenRewrite from Gradle Lint in 2015-2016, recent momentum in adoption, Jonathan's background with micrometer project, discussion about IDEs including Visual Studio Code and IntelliJ IDEA, potential future topics including Micrometer and Spinnaker

    Jonathan Schneider on twitter: @jon_k_schneider

    Show more Show less
    48 mins
  • JVector: Cutting-Edge Vector Search in Java
    Jun 30 2024
    An airhacks.fm conversation with Jonathan Ellis (@spyced) about: discussion of JVector, a Java-based vector search engine, Apache Kudu as an alternative to Cassandra for wide-column databases, FoundationDB - is a NoSQL database, explanation of vectors and embeddings in machine learning, different embedding models and their dimensions, the Hamming distance, binary quantization and product quantization for vector compression, DiskANN algorithm for efficient vector search on disk, optimistic concurrency control in JVector, challenges in implementing academic papers, the Neon database, JVector's performance characteristics and typical database sizes, advantages of astra DB over Cassandra, separation of compute and storage in cloud databases, Vector's use of Panama and SIMD instructions, the potential for contributions to the JVector project, Upstash uses of JVector for their vector search service, the cutting-edge nature of JVector in the Java ecosystem, the logarithmic performance of JVector for index construction and search, typical search latencies in the 30-50 millisecond range, the young and rapidly evolving field of vector search, the self-contained nature of the JVector codebase

    Jonathan Ellis on twitter: @spyced

    Show more Show less
    55 mins
  • Object-Oriented Programming (OOP) vs. Data-Oriented Programming (DOP) in Java
    Jun 23 2024
    An airhacks.fm conversation with Nicolai Parlog (@nipafx) about: the advantages and challenges of Object-oriented programming (OOP) vs data-oriented programming (DOP) in Java, using Java record classes, sealed interfaces, and switch expressions to implement business logic outside of data classes, the advantages of polymorphism and transparent persistence in specific use cases, the pitfalls of deep inheritance hierarchies and instance of checks, modeling data with records and sealed interfaces, validating data at the boundaries and ensuring immutability, using switch expressions and pattern matching for type-based logic, the advantages of data-oriented programming for maintainability and safety, applying data-oriented programming to web services and data pipelines, combining enums with records for complex configurations

    Nicolai Parlog on twitter: @nipafx

    Show more Show less
    1 hr and 32 mins
  • From JSP to Rife and From Kotlin to Java
    Jun 17 2024
    An airhacks.fm conversation with ethauvin (@Erik C. Thauvin) about: Erik previously on: "#298 The bld Power User", running a high-traffic link blog using JSP and Tomcat, challenges with caching and performance, meeting Geert Bevin through discussions about URL encoding, evaluating and migrating his blog to the Rife framework, appreciating Rife's lean architecture and built-in utilities, the appeal and disappointment of Ruby on Rails, using lightweight Java application servers like Glassfish and Payara, avoiding heavy dependencies and XML configuration, generating XML with xdoclet, the advantages of Rife's templating system and code readability, Erik's journey with Kotlin and reasons for returning to Java, building a Kotlin URL encoding library with multiplatform support, the power of Kotlin's multiplatform capabilities, discussing the BLD build tool and its origins in simplifying build processes, the complexities of modern Java builds with dependencies compared to the simplicity of Java EE, considering Ant as an alternative to Maven, the idea of "Build as Code" and integrating build logic into applications, Erik's experience converting over 60 projects to bld, challenges of introducing new build tools in enterprise environments, Erik's automated blog posting system

    ethauvin on twitter: @Erik C. Thauvin

    Show more Show less
    58 mins
  • The bld Power User
    Jun 9 2024
    An airhacks.fm conversation with Erik C. Thauvin (@ethauvin) about: previously Erik on "#287 How Linkblog Happened", from Rife to bld, Gert on "#284 No Dependencies--Or How Rife 2 and Bld Happened", the simplicity and power of bld compared to Gradle and Maven, using Java as the build language without any DSLs or plugins, the advantages of a direct approach to building and running tools, converting projects from Gradle to bld and the resulting simplification, creating extensions for bld to integrate with various tools and libraries, the benefits of using pure Java for build files and the flexibility it provides, the speed of bld and the underlying Java compilers, ideas for future improvements and features in bld, the philosophy behind bld and its focus on simplicity and developer productivity, the potential for using bld as a scripting tool and automation platform, the extension mechanism in bld and how it leverages the builder pattern, the performance gains of using bld over traditional build tools, the aesthetics and user experience of bld, the history of Java compilers and the evolution of Java desktop applications

    Erik C. Thauvin on twitter: @ethauvin

    Show more Show less
    1 hr and 8 mins
  • Observability-Driven Development with Digma, Serverless and Java
    Jun 2 2024
    An airhacks.fm conversation with Roni Dover (@doppleware) about: previously Roni on airhacks.fm "#252 BDD: Bug Driven Development vs. Continuous Observability", discussion about the Java community and its focus on innovation, Digma and Java, Digma's growth and user feedback, observability as a tool for early issue detection and better code design, the importance of continuous observability and reducing mental effort, Digma's elevator pitch and data science approach, the changing testing pyramid and the benefits of test containers, "#103 Unit Testing Considered Harmful", the cost and value of different types of tests, optimizing lambda costs and performance, linking System Tests to traces from quarkus JVMs, Digma's architecture and deployment options, recent features and improvements in Digma, the impact of observability on productivity and shorter feedback loops, AWS Lambda Power Tuning, the limitations and potential of large language models (LLMs) in generating tests and code, the importance of understanding the client and writing maintainable code, the challenges of complex code generated by LLMs, the potential of feeding runtime data to LLMs for code generation and optimization, the Java community's vibrant and innovative nature

    Roni Dover on twitter: @doppleware

    Show more Show less
    1 hr and 3 mins
  • Exploring ONNX, Embedding Models, and Retrieval Augmented Generation (RAG) with Langchain4j
    Jun 1 2024
    An airhacks.fm conversation with Dmytro Liubarskyi (@langchain4j) about: Dmytro previously on "#285 How LangChain4j Happened", discussion about ONNX format and runtime for running neural network models in Java, using langchain4j library for seamless integration and data handling, embedding models for converting text into vector representations, strategies for handling longer text inputs by splitting and averaging embeddings, overview of the retrieval augmented generation (RAG) pipeline and its components, using embeddings for query transformation, routing, and data source selection in RAG, integrating Langchain4j with quarkus and CDI for building AI-powered applications, Langchain4j provides pre-packaged ONNX models as Maven dependencies, embedding models are faster and smaller compared to full language models, possibilities of using embeddings for query expansion, summarization, and data source selection, cross-checking model outputs using embeddings or another language model, decomposing complex AI services into smaller, specialized sub-modules, injecting the right tools and data based on query classification

    Dmytro Liubarskyi on twitter: @langchain4j

    Show more Show less
    1 hr and 9 mins