Java, Java EE, Jakarta EE, MicroProfile and Web oriented conversations with Adam Bien
An airhacks.fm conversation with Volker Simonis (@volker_simonis) about: explanation of corretto as an openJDK distribution with support for multiple platforms and Java versions, insights into the build and certification process for Corretto releases including TCK testing, discussion of the security vulnerability group and embargo process for Java security fixes, explanation of how Amazon contributes features back to OpenJDK, detailed overview of Amazon's contributions including async logging for improved performance, Project Lilliput for compact object headers reducing memory usage by 10-50%, Generational Shenandoah garbage collector achieving sub-millisecond pause times, comparison between ZGC and Shenandoah garbage collectors, discussion about the Graal compiler and Project Galahad to reintroduce it into OpenJDK, mention of Amazon being the second largest contributor to OpenJDK after Oracle, information about the Amazon Corretto Crypto Provider for improved encryption performance, introduction of arctic GUI testing tool for Java, insights into the collaborative nature of the OpenJDK ecosystem despite competition between vendors Volker Simonis on twitter: @volker_simonis
An airhacks.fm conversation with RichardBair (@RichardBair) about: the relaxed nature of JavaOne keynote presentations with James Gosling, the experience of delivering live demos versus pre-recorded content, impressions of the recent JavaOne conference with 70% new attendees, the Hashgraph team including former Sun/Oracle employees like Josh Marinacci and Jasper Potts, explanation of Hedera Hashgraph's consensus service as a message bus system, discussion of a practical enterprise use case for Hashgraph to create immutable release pipelines, storing release stages as messages in a topic, capturing build metadata including dependencies and test results on the blockchain, the ability to run your own mirror node to query data for free, the potential to create a release pipeline listener that triggers actions based on blockchain messages, the advantage of having an immutable audit trail for compliance purposes, the possibility of creating an enterprise gateway that handles payment and provides REST APIs, the difference between consensus nodes and mirror nodes, the benefits of using blockchain for software supply chain verification, the performance capabilities of the system for reading thousands of messages per second RichardBair on twitter: @RichardBair
An airhacks.fm conversation with Juan Fumero (@snatverk) about: tornadovm as a Java parallel framework for accelerating data parallelization on GPUs and other hardware, first GPU experiences with ELSA Winner and Voodoo cards, explanation of TornadoVM as a plugin to existing JDKs that uses Graal as a library, TornadoVM's programming model with @parallel and @reduce annotations for parallelizable code, introduction of kernel API for lower-level GPU programming, TornadoVM's ability to dynamically reconfigure and select the best hardware for workloads, implementation of LLM inference acceleration with TornadoVM, challenges in accelerating Llama models on GPUs, introduction of tensor types in TornadoVM to support FP8 and FP16 operations, shared buffer capabilities for GPU memory management, comparison of Java Vector API performance versus GPU acceleration, discussion of model quantization as a potential use case for TornadoVM, exploration of Deep Java Library (DJL) and its ND array implementation, potential standardization of tensor types in Java, integration possibilities with Project Babylon and its Code Reflection capabilities, TornadoVM's execution plans and task graphs for defining accelerated workloads, ability to run on multiple GPUs with different backends simultaneously, potential enterprise applications for LLMs in Java including model distillation for domain-specific models, discussion of Foreign Function & Memory API integration in TornadoVM, performance comparison between different GPU backends like OpenCL and CUDA, collaboration with Intel Level Zero oneAPI and integrated graphics support, future plans for RISC-V support in TornadoVM Juan Fumero on twitter: @snatverk
An airhacks.fm conversation with Christian Humer (@grashalm_) about: bachelor thesis on a Java bytecode interpreter written in Java, exploration of whether Java could be used as a systems language, benefits of implementing an ecosystem in itself as validation, C1X compiler based on C1 but reimplemented from scratch, concept of sea of nodes for mixing control and data flow, goal to rewrite the entire VM in Java, benefits of using one compiler throughout the stack for compatibility and maintainability, discussion of de-optimization process in JIT compilation, explanation of guards and assumptions in optimized code, three versions of Espresso (Java bytecode interpreter), first version as proof of concept, second version using Truffle with serialized ASTs, third version based on bytecodes with unrolling bytecode loops, explanation of bytecode quickening technique, sandboxing capabilities in GraalVM as replacement for deprecated security manager, isolating untrusted code in separate heaps for security, protection against speculative execution attacks, use case for running AI-generated Java code safely in isolated environments, GraalOS as a minimal operating system for running Java isolates, TRegex as GraalVM's optimized regular expression engine that compiles regex to machine code, bytecode interpreter DSL for generating efficient bytecode interpreters for different languages, memory improvements from using bytecode arrays instead of AST objects, potential future integration of TRegex as a Java API Christian Humer on twitter: @grashalm_
An airhacks.fm conversation with Colt McNealy (@coltmcnealy) about: first computing experience with Sun workstations and network computing, background in hockey and other sports, using system76 Linux laptops for development, starting programming in high school with Java and later learning C, fortran, assembly, C++ and python, working at a real estate company with kubernetes and Kafka, the genesis of LittleHorse from experiencing challenges with distributed microservices and workflow management, LittleHorse as an open source workflow orchestration engine using Kafka as a commit log rather than a message queue, building a custom distributed database optimized for workflow orchestration, the recent move to fully open source licensing, comparison with AWS Step Functions but with more capabilities and open source benefits, using RocksDB and Kafka Streams for the underlying implementation, performance metrics of 12-40ms latency between tasks and hundreds of tasks per second, the multi-tenant architecture allowing for serverless offerings, integration with Kafka for event-driven architectures, the distinction between orchestration and choreography in distributed systems, using Java 21 with benefits from virtual threads and generational garbage collection, plans for Java 25 adoption, the naming story behind "Little Horse" and its competition with MuleSoft, the Sun Microsystems legacy and innovation culture, recent adoption of Quarkus for some components, the "Know Your Customer" flow as the Hello World example for Little Horse, the importance of observability and durability in workflow management, plans for serverless offerings and multi-tenant architecture, the balance between open source core and commercial offerings Colt McNealy on twitter: @coltmcnealy
An airhacks.fm conversation with Francesco Nigro (@forked_franz) about: JCTools as a Java concurrency utility library created by Nitsan Wakart, the history of JCTools and how Cliff Click donated his non-blocking HashMap algorithm to the project, contributions to JCTools including weight-free queue implementations, Apache Storm vs. Apache Kafka, explanation of how JCTools improves upon Java's standard concurrent queues by reducing garbage creation and optimizing memory layout, the difference between linked node implementations in standard Java collections versus array-based implementations in JCTools, detailed explanation of linearizability as a property of concurrent algorithms, the challenges of implementing concurrent data structures that maintain proper ordering guarantees, explanation of lock-free versus wait-free algorithms and their progress guarantees, discussion of the xadd instruction in x86 processors and how it's used in JCTools for atomic operations, the implementation of MessagePassingQueue API in JCTools that provides relaxed guarantees for better performance, comparison between JCTools and other solutions like Disruptor, explanation of how JCTools achieves 400 million operations per second in single-producer single-consumer scenarios, discussion of cooperative algorithms for multi-producer scenarios, the use of padding to avoid false sharing in concurrent data structures, the implementation of code generation in JCTools to create different flavors of queues, the use of Unsafe and AtomicLongFieldUpdater for low-level operations, real-world applications in high-frequency trading and medical data processing, integration of JCTools with quarkus and mutiny frameworks, the importance of proper memory layout for performance Francesco Nigro on twitter: @forked_franz
An airhacks.fm conversation with Volker Simonis (@volker_simonis) about: discussion about carnivorous plants, explanation of how different carnivorous plants capture prey through movement, glue, or digestive fluids, Utricularia uses vacuum to catch prey underwater, SAP's interest in developing their own JVM around Java 1.4/1.5 era, challenges with SAP's NetWeaver Java EE stack, difficulties maintaining Java across multiple Unix platforms (HP-UX, AIX, S390, Solaris) with different vendor JVMs, SAP's decision to license Sun's HotSpot source code, porting Hotspot to PA-RISC architecture on HP-UX, explanation of C++ interpreter versus Template interpreter in Hotspot, challenges with platform-specific C++ compilers and assembler code, detailed explanation of JVM internals including deoptimization, inlining, and safe points, SAP's contributions to openJDK including PowerPC port, challenges getting SAP to embrace open source, delays caused by Oracle's acquisition of Sun, SAP's extensive JVM porting work across multiple platforms, development of SAP JVM with additional features like profiling safe points, creation of SAP Machine as an open-source OpenJDK distribution, explanation of Java certification and trademark restrictions, Hotspot Express model allowing newer VM components in older Java versions, Volker's move to Amazon Corretto team after 15 years at SAP, brief discussion of ABAP versus Java at SAP, Volker's recent interest in GraalVM and native image technologies Volker Simonis on twitter: @volker_simonis
An airhacks.fm conversation with Richard Bair (@RichardBair) about: discussion about Hedera public ledger and its underlying technology, explanation of Hashgraph algorithm for consensus and transaction ordering, comparison to other blockchain technologies like Bitcoin and ethereum, Hedera's democratic approach to block production versus leader-based systems, the Linux Foundation project called Hiero where Hedera's code is being moved, explanation of how nodes gossip transactions and come to consensus, the role of the Hedera Governing Council including companies like Dell and IBM, discussion of HBAR as the native token and fee system, comparison of Hedera's fixed dollar-denominated fees versus fluctuating fees in other blockchains, explanation of staking mechanism and how it creates a representative democracy for node selection, technical details about Hedera's Java implementation using Java 21 and modern language features, use of ZGC garbage collector with 200GB heap on consensus nodes, deployment on Linux using docker, discussion of Java modules and challenges with libraries like Netty, custom Protobuf to Java compiler called PBJ for performance optimization, consideration of replacing Netty with Helidon for better virtual thread support, discussion of supply chain security concerns and minimizing dependencies, custom logging implementation to avoid bloated frameworks like Log4j, importance of deterministic code execution across all nodes, challenges of distributed systems where iteration order must be consistent, explanation of node synchronization mechanisms when nodes fall behind, comparison to serverless cloud pricing models, discussion of vertical versus horizontal scaling in blockchain systems Richard Bair on twitter: @RichardBair
An airhacks.fm conversation with Francesco Nigro (@forked_franz) about: discussion about the importance of stress testing over System Tests and unit tests, Coordinated Omission Problem in load generators where they don't accurately measure server performance during slowdowns, introduction to HyperFoil as a high-performance load generator capable of generating millions of requests per second with just two cores, explanation of how HyperFoil avoids GC overhead by pre-allocating resources, the architecture of HyperFoil using Netty event loops and a graph-based execution model, comparison with other load testing tools like JMeter, K6, Apache Benchmark and Vegeta, introduction to QDUP as a shell automation tool for distributed testing, overview of Horreum for performance test results storage and analysis, explanation of how these tools work together in Red Hat's performance testing pipeline, discussion of JCTools and its importance for GC-free concurrent data structures, the Universal Scalability Law and its application to load balancing algorithms, the pick-two-random algorithm for efficient resource allocation, the benefits of using JBang for easy one-line execution of HyperFoil, potential drawbacks of HyperFoil including ergonomics and JIT compilation warm-up issues, the possibility of using GraalVM native image to avoid JIT compilation delays Francesco Nigro on twitter: @forked_franz
An airhacks.fm conversation with Burr Sutter (@burrsutter) about: discussion about integrating LLMs into enterprise Java applications, challenges with non-deterministic LLM outputs in deterministic code environments, limitations of chat interfaces for power users in enterprise settings, preference for form-based applications with prompts running behind the scenes, using LLMs to understand unstructured data while providing structured interfaces, maintaining existing CRUD systems while using LLMs for unstructured data like emails and support tickets, practical examples of using LLMs to generate code from business requirements, creating assistants with system messages and short user prompts, potential for embeddings to replace text prompts in the future, developer journey in learning LLM integration including prompts, tools, RAG, and agentic workflows, benefits of specialized agents over one general agent, using LLMs for code generation with limitations for complex use cases, hybrid approaches combining LLMs with human oversight, using LLMs for email routing and support case classification, potential for extracting knowledge from enterprise data sources like Confluence and SharePoint, quality assurance with LLM judges, discussion of small language models versus large ones, model distillation and fine-tuning for specific enterprise use cases, cost considerations for model training versus using off-the-shelf models with better tool invocation, prediction that models will become more efficient and run on commodity hardware in the future, focus on post-training inference and reliable results Burr Sutter on twitter: @burrsutter
An airhacks.fm conversation with Volker Simonis (@volker_simonis) about: early computing experiences with Schneider CPC (Amstrad in UK) with Z80 CPU, CP/M operating system as an add-on that provided a real file system, programming in Basic and Turbo Pascal on early computers, discussion about gaming versus programming interests, using a 9-pin needle printer for school work, programming on pocket computers with BASIC in school, memories of Digital Research's CP/M and DR-DOS competing with MS-DOS, HiMEM memory management in early operating systems, programming in Logo language with turtle graphics and fractals, fascination with Lindenmayer systems (L-systems) for simulating biological growth patterns, interest in biology and carnivorous plants, transition to PCs with floppy disk drives, using SGI Iris workstations at university with IRIX operating system, early experiences with Linux installed from floppy disks, challenges of configuring X Window System, programming graphics on interlaced monitors, early work with HP using Tickle/Tk and python around 1993, first experiences with Java around version 0.8/0.9, attraction to Java's platform-independent networking and graphics capabilities, using Blackdown Java for Linux created by Johan Vos, freelance work creating Java applets for accessing databases of technical standards, PhD work creating software for analyzing parallel text corpora in multiple languages, developing internationalization and XML capabilities in Java Swing applications, career at Sun Microsystems porting MaxDB to Solaris, transition to SAP to work on JVM development, Adabas and MaxDB, reflections on ABAP programming language at SAP and its database-centric nature Volker Simonis on twitter: @volker_simonis
An airhacks.fm conversation with Alvaro Hernandez (@ahachete) about: discussion about stackgres as a complete database cloud solution for PostgreSQL, kubernetes as an abstraction layer over infrastructure providing a programmable API, Stackgres offering high availability with primary and replica nodes using patroni, integrated connection pooling with PgBouncer, kubernetes operators and Custom Resource Definitions (CRDs) as a powerful way to extend Kubernetes, day two operations automated through CRDs including benchmarks and version upgrades, Stackgres supporting sharding with Citus for horizontal scaling similar to DynamoDB, Change Data Capture capabilities using embedded debezium, failover mechanisms taking typically 30 seconds with DNS updates, synchronous vs asynchronous replication options affecting data loss during failover, Stackgres being implemented in Java using quarkus, ContainerD as a programmable container runtime that can be used without Kubernetes, Stackgres offering multiple interfaces including CRDs, REST API, and a web console, considerations for running databases on Kubernetes vs cloud-managed services, the advantages of containerization for infrastructure, the challenges of multi-leader setups in PostgreSQL requiring conflict resolution, the value of Kubernetes for on-premises deployments vs cloud environments Alvaro Hernandez on twitter: @ahachete
An airhacks.fm conversation with Kevlin Henney (@KevlinHenney) about: first computer was a Sinclair ZX81 with 1K of memory, programming in Basic and later Z80 assembly language, creating simulations like volcano explosions and n-body problems as a teenager, transitioning to the ZX Spectrum and other early home computers, studying physics at university but becoming more interested in programming, learning fortran, getting his first programming job at a small software house in Bristol where his boss had a wall of books on programming languages and paradigms, becoming self-taught through reading these books, developing an interest in AI and philosophy of mind which led to pursuing a master's degree in parallel computer systems, creating a virtual machine for a Lisp-based actor model, learning about the occam programming language based on Communicating sequential processes (CSP) for transputers, discovering Object-oriented programming and being fascinated by modularity and encapsulation, encountering Java in the mid-90s as a free downloadable language with platform independence, appreciating Java's familiar C-like syntax while offering object orientation without low-level concerns, using Java primarily for training and consultancy work rather than application development, discussing the evolution of Java features like inner classes (Java 1.1) and interfaces, explaining his unique perspective on interfaces coming from distributed systems experience with IDLs, reflecting on his work with various distributed Java technologies like RMI, Jini and JavaSpaces, continuing his career as an independent consultant, trainer and speaker with strong involvement in the patterns community Kevlin Henney on twitter: @KevlinHenney
An airhacks.fm conversation with Francesco Nigro (@forked_franz) about: Netty committer and performance engineer at Red Hat, discussion of Netty's history, focus on low-level core components like buffers and allocators in Netty, relationship between Vert.x and Netty where Vert.x provides a more opinionated and user-friendly abstraction over Netty, explanation of reactive back pressure implementation in Vert.x, performance advantages of Vert.x over Netty due to batching and reactive design, detailed explanation of IO_uring as a Linux-specific asynchronous I/O mechanism, comparison between event loop architecture and Project Loom for scalability, limitations of Loom when working with IO_uring due to design incompatibilities, discovery of a major Java type system scalability issue related to instance-of checks against interfaces, explanation of how this issue affected Hibernate performance, deep investigation using assembly-level analysis to identify the root cause, collaboration with Andrew Haley to fix the 20-year-old JDK issue, performance improvements of 2-3x after fixing the issue, discussion of CPU cache coherency problems in NUMA architectures, explanation of how container environments like kubernetes can worsen performance issues due to CPU scheduling, insights into how modern CPUs handle branch prediction and speculation, impact of branch misprediction on performance especially with memory access patterns, discussion of memory bandwidth limitations in AI/ML workloads, advantages of unified memory architectures like Apple M-series chips for AI inference Francesco Nigro on twitter: @forked_franz
An airhacks.fm conversation with Burr Sutter (@burrsutter) about: first computer: IBM PS/2 386SX funded by grandparents' Kona coffee sales, early passion for programming and problem-solving, self-taught C programming, database engine development as a student, transition from theater aspirations to computer science, work with Progress 4GL and Silverstream, shift to .net development, joining JBoss and Red Hat through acquisition, Mark Fleury's impactful "free don't suck" presentation, evolution of Java application servers and middleware technologies, enterprise service bus and SOA, impact of docker and kubernetes on the industry, Red Hat's adaptation to cloud-native technologies, development of quarkus, current interest in language models and GenAI, Java's longevity and adaptability, Quarkus' fast startup time and compatibility with legacy Java EE applications, work on Kubernetes and Quarkus, the importance of Java's "write once, run anywhere" principle, Java's performance compared to other languages Burr Sutter on twitter: @burrsutter
An airhacks.fm conversation with Christian Humer (@grashalm_) about: early programming experiences with DOS text Adventures and Captain Comic, transition from graphics design to computer science, work on Java Server Pages (JSPs) and point-of-sale systems, development of Swing GUI for touchscreens, introduction to GraalVM and Truffle framework, ActionScript, Adobe Flash and Adobe Flex, explanation of Futamura projections and partial evaluation in Truffle, discussion on the challenges of implementing dynamic language runtimes, de-optimization in JIT compilers, Nashorn JavaScript engine vs. GraalJS, language interoperability in GraalVM, reuse of libraries across different programming languages, embedding of JavaScript and React in Java applications, comparison with PyPy in the python ecosystem, current work on bytecode DSL for generating bytecode interpreters, the importance of math in computer science and its relation to programming concepts Christian Humer on twitter: @grashalm_
An airhacks.fm conversation with Richard Bair (@RichardBair) about: early programming experiences with Basic and building computers, his first production app at 17 for his father's auto repair shop, starting computer science degree at 16 and completing it at 43, joining Sun Microsystems' Swing team, working on JavaFX from its inception as F3 through its evolution, becoming lead of JavaFX team and chief architect for client Java, moving to Oracle's IoT team, current role as VP of Engineering at Hedera blockchain company, explanation of Hedera's Hashgraph algorithm solving the Byzantine Generals Problem, implementation of Hedera's technology in Java, open-source nature of Hedera's codebase, resources for learning about and developing with Hedera including documentation, Hedera Improvement Proposals - hips, and developer hedera playground, discussion of blockchain technology and its potential impact on open protocols and decentralized networks, comparison of blockchain to distributed databases, explanation of consensus mechanisms in distributed ledgers, tokenization of real-world assets Richard Bair on twitter: @RichardBair
An airhacks.fm conversation with Alvaro Hernandez (@ahachete) about: discussion on Postgres JDBC driver contributions, SCRAM authentication library implementation, importance of connection pooling for Postgres performance, tuning Postgres configuration, PgBouncer as a popular connection pooler, challenges with lambda and database connections, benefits of using connection poolers at multiple levels, the need for an HTTP-based protocol for PostgreSQL, PostgresSQL Configuration Tool by StackGres, distributed SQL databases like DSQL and their trade-offs, optimistic vs pessimistic locking in distributed databases, comparison of JPA optimistic locking to distributed database conflicts, the power of using SQL directly vs ORM frameworks, the evolution of Java and JDBC making direct database queries more convenient, the potential benefits of using stored procedures in databases, the importance of understanding database internals for optimal performance, the need for careful consideration when choosing between ORM and direct SQL queries, the complexities of distributed databases and their impact on application design Alvaro Hernandez on twitter: @ahachete
An airhacks.fm conversation with Francesco Nigro (@forked_franz) about: starting with a used Commodore 64 without display, breakdancing as a hobby and its influence on his learning approach, studying computer science at university with a focus on AI and compilers, pursuing a PhD in reinforcement learning, transitioning to IoT and embedded system work, discovering high-performance computing and concurrency patterns like the Disruptor, contributing to open-source projects, persistence in joining Red Hat despite initial rejection, rewriting ActiveMQ Artemis journal, considering Hazelcast before ultimately choosing Red Hat, working on messaging and performance optimization at Red Hat, becoming the performance expert for quarkus, journey from assembly and C programming to Java performance optimization, the importance of understanding low-level details in high-level languages, the impact of container resources on Java JVM performance, the value of deep technical knowledge in the age of AI and LLMs, Francesco's current role at Red Hat focusing on Quarkus performance and scalability issues Francesco Nigro on twitter: @forked_franz
An airhacks.fm conversation with Ladislav Thon (@ladicek) about: CDI history and evolution, transition from XML-based configuration to annotation-based dependency injection, introduction of CDI lite in version 4.0, differences between portable extensions and build-compatible extensions, Arc as Quarkus CDI implementation, challenges in implementing CDI at build time, new features in CDI 4.0 and 4.1 including lifecycle events and method invokers, comparison of CDI with other dependency injection frameworks, discussion on decorators, interceptors, and stereotypes in CDI, performance implications of CDI in Quarkus, Convention over Configuration in CDI, upcoming changes in CDI 5, removal of expression language dependency from CDI API, benefits of build-time oriented implementations like Quarkus, challenges in migrating portable extensions to build-compatible extensions, introduction of synthetic beans and observers, addition of priority support for stereotypes, improvements in invocation context API, ability to declare priority on producers in CDI 4.1, integration of CDI with application programming models, Convention over Configuration paired with dependency injection, performance considerations of CDI in Quarkus compared to manual dependency management Ladislav Thon on twitter: @ladicek
An airhacks.fm conversation with Gerald Venzl (@GeraldVenzl) about: discussion on prepared statements and their benefits in Oracle databases, explanation of hard parsing vs soft parsing in database queries, overview of connection pooling and its importance in database performance, introduction to Oracle's Database Resident Connection Pool (DRCP), exploration of Oracle's support for serverless workloads, discussion on PL/SQL and JavaScript support in Oracle databases, brief mention of ADA programming language and its influence on PL/SQL, introduction to GraalVM and its role in Oracle databases, comparison of performance between PL/SQL and JavaScript in Oracle, mention of Oracle database support for ARM architecture including M1 Macs and Raspberry Pi 5, explanation of database sharding vs partitioning, discussion on the benefits of stored procedures for data-intensive operations Gerald Venzl on twitter: @GeraldVenzl
An airhacks.fm conversation with Alvaro Hernandez (@ahachete) about: first computer experiences with Amstrad CPC 464, early programming with Basic, university studies in Telecommunication Engineering, transition from PHP to Java development, creating an ERP system, attending JavaOne conferences, failed startup attempt with a mobile phone bill analysis app, specialization in PostgreSQL, founding ongres company, developing stackgres as a kubernetes operator for PostgreSQL, discussion about the benefits of open-source software and the "My Server, My Rules" philosophy, comparison of cloud-managed services vs. self-managed solutions, the importance of control and transparency in database management, Stackgres as a solution for running PostgreSQL as a service with full control, the use of Java in developing kubernetes operators, the shift from on-premises to cloud deployments and its implications for developers, the challenges of setting up and managing databases in the cloud, the benefits of serverless and managed services, the importance of understanding the underlying infrastructure in cloud deployments, the evolution of database management from dedicated teams to self-service models, the potential for new container-related products from Ongress, the recent popularity of Bluesky as a social media platform for the Java community Alvaro Hernandez on twitter: @ahachete
An airhacks.fm conversation with Ladislav Thon (@ladicek) about: Didaktik Gama to Red Hat, early programming experiences with Basic and Karel, learning Pascal and C in school, working with Java in university and early career, joining Red Hat as a quality engineer for JBoss Enterprise Application Platform, testing clustering and load balancing with SmartFrog, transitioning to WildFly Swarm / Thorntail development, becoming Thorntail project lead, moving to quarkus development, involvement in CDI specification improvements, discussion about portable extensions in CDI, interest in science fiction literature, mention of favorite authors and books including Neal Stephenson's Anathem and The Expanse series Ladislav Thon on github: @ladicek
An airhacks.fm conversation with Alfonso Peterssen (@TheMukel) about: updates on Lama 3 Java project and performance improvements, GraalVM Vector API support and performance enhancements, Espresso's ability to run Java code within GraalVM, implementation of Continuations and serializable continuations in Espresso, development of a debugger for native image using Espresso, potential for adding dynamism to native image, Espresso's use in sandboxing and isolating Java code execution, potential applications in cloud environments and serverless computing, possibility of using Espresso for LLM-generated code execution, potential for Espresso as a replacement for the deprecated SecurityManager, discussion of Espresso's performance compared to full virtualization stacks, class reloading capabilities in Espresso, invitation for future discussions on debugging and Espresso deep dive Alfonso Peterssen on twitter: @TheMukel
An airhacks.fm conversation with Mario Fusco (@mariofusco) about: early programming on ZX Spectrum and Commodore 64, father's computer shop in South Italy, work experiences with Olivetti and IBM, the Olivetti M10 laptop, introduction to Java and aspect-oriented programming, project on advertisement optimization for Berlusconi's company, experience with Scala and presenting at Scala Days, joining Red Hat to work on Drools rule engine, current work on quarkus and langchain4j integration, importance of open source contribution and conference participation for career growth, evolution of programming languages and technologies, thoughts on AI and rule engines, social aspects of software development, importance of community involvement in tech industry Mario Fusco on twitter: @mariofusco
An airhacks.fm conversation with Phillip Krueger (@phillipkruger) about: early programming experiences with Visual Basic and Java, transition from actuarial science to computer science, first job at a bank working with Java Swing and RMI over CORBA, experience with J2EE and XML technologies, working with XML and XSLT, development of open-source Swing components, work on dotMobi sites for mobile phones in Africa, creation of API extensions for Java EE and MicroProfile, involvement in the MicroProfile GraphQL specification, joining Red Hat and working on quarkus, development of SmallRye GraphQL, improvements to OpenAPI support in Quarkus, work on Quarkus Dev UI, discussion about the evolution of Java application servers and frameworks, comparison of REST and GraphQL, thoughts on Java development culture in South Africa Phillip Krueger on twitter: @phillipkruger
An airhacks.fm conversation with Bruce Hopkins about: discussion on using ChatGPT for Java development, challenges and benefits of AI-assisted coding, importance of understanding and reviewing AI-generated code, bootstrapping approach in Bruce's book, using ChatGPT as a pair programmer, limitations of AI in making architectural decisions, potential pitfalls of relying too heavily on AI-generated code, multi-modal capabilities of AI models, creating a podcast visualizer project, integrating with Slack and Discord APIs, hallucination issues in AI responses, importance of prompt engineering, potential for Java in AI and LLM integration, advantages of Java in enterprise environments, energy efficiency and performance of Java compared to other languages, upcoming trends in Java development including project valhalla and Vector API, potential for a follow-up book on quarkus and langchain4j, modern Java syntax and features making it competitive with other languages, challenges of translating technical books to other languages, the ChatGPT for Java book
An airhacks.fm conversation with Christos Kotselidis (@CKotselidis) about: early experiences with computers and programming, transition to studying Java and virtual machines at university, work on Jikes compiler and distributed software transactional memory for PhD, current roles as professor at University of Manchester and working on motorcycle electronics at KTM, overview of tornadovm project for accelerating Java on GPUs and other hardware, discussion of recent Java implementations of LLMs like jlama and llama3 java, potential for TornadoVM to accelerate model inference, challenges around quantized types for large models, integration with Project Panama for improved native interop, importance of performance and energy efficiency for enterprise Java applications, potential for Java Flight Recorder to provide power consumption metrics, need for standardized quantized types in Java, opportunities for Java in AI/ML workloads, invitation for companies to reach out about using Tornado VM for their use cases Christos Kotselidis on twitter: @CKotselidis
An airhacks.fm conversation with Vadym Kazulkin (@VKazulkin) about: journey as a Java developer from the late 1990s to present, early experiences with Java and J2EE development, transition to cloud and serverless technologies, particularly AWS Lambda, discussion of Java performance on lambda compared to node.js, detailed explanation of AWS SnapStart technology for improving Java cold starts, pros and cons of "fat" Lambda functions versus microservices, challenges of using GraalVM with Lambda, importance of optimizing Lambda package size and dependencies, comparison of quarkus and Spring Boot on Lambda, benefits of serverless architecture for business logic focus, involvement with Java User Group Bonn and AWS Community Builder program, brief mention of asynchronous patterns in serverless architectures, importance of staying technically hands-on as a manager in the rapidly evolving cloud world Vadym Kazulkin on twitter: @VKazulkin
An airhacks.fm conversation with Gerald Venzl (@geraldvenzl) about: discussion about the evolution of Oracle's annual conference from OpenWorld to CloudWorld, the JavaOne conference, explanation of JDBC driver types and their evolution, Oracle's thin JDBC driver becoming the preferred option, availability of Oracle JDBC drivers on Maven Central, proprietary features of Oracle's JDBC driver including Continuous Query Notification (CQN) and Application Continuity, comparison of CQN to Change Data Capture (CDC) and CQRS patterns, Oracle's Flashback Data Archive for auditing and time travel capabilities, Oracle's Advanced Queuing and Transactional Event Queues, ORDS REST APIs, Oracle product page, Oracle JDBC client libraries, the plug-in mechanism implemented in early Java versions for JDBC drivers using Class.forName and static initializers, Gerald Venzl's online presence and recent blog post about running Oracle database on Raspberry Pi Gerald Venzl on twitter: @geraldvenzl
An airhacks.fm conversation with Dmytro Liubarsky (@langchain4j) about: discussion on recent developments in Java and LLM integration, new features in langchain4j including Easy RAG for simplified setup, SQL database retrieval with LLM-generated queries, integration with graph databases like Neo4j, Neo4j and graphrag, metadata filtering for improved search capabilities, observability improvements with listeners and potential integration with opentelemetry, increased configurability for AI services enabling state machine-like behavior, the trend towards CPU inference and smaller, more focused models, langchain4j integration with quarkus and MicroProfile, parallels between AI integration and microservices architecture, the importance of decomposing complex AI tasks into smaller, more manageable pieces, potential cost optimization strategies for AI applications, the excitement around creating smooth APIs that integrate well with the Java ecosystem, the potential future of CPU inference and its parallels with the evolution of server infrastructure, the upcoming Devoxx conference, Dmytro Liubarsky on twitter: @langchain4j
An airhacks.fm conversation with Georgios Andrianakis (@geoand86) about: discussion on integrating langchain4j with quarkus for enterprise AI applications, similarities between LLM integration and microservice architecture, benefits of using Java and MicroProfile for AI development, explanation of AI services, chat memory, and tools in LangChain4J, importance of session management and fault tolerance in LLM applications, vector databases and embeddings for efficient information retrieval, RAG (Retrieve Augmented Generation) implementation in enterprise settings, Quarkus dev mode features for LLM experimentation, native image support with GraalVM, local inference possibilities with Java 21's Vector API and quantized models, challenges in prompt engineering and model selection, upcoming features in LangChain4J including Ollama tool support and improved result streaming, future developments in Java for AI and GPU support with Project Babylon, importance of enterprise-grade features like CI/CD, testing, and cloud deployment for LLM applications Georgios Andrianakis on twitter: @geoand86
An airhacks.fm conversation with Jonathan Ellis (@spyced) about: discussion of JVector 3 features and improvements, compression techniques for vector indexes, binary quantization vs product quantization, anisotropic product quantization for improved accuracy, indexing Wikipedia example, Cassandra integration, SIMD acceleration with Fused ADC, optimization with Chronicle Map, E5 embedding models, comparison of CPU vs GPU for vector search, implementation details and low-level optimizations in Java, use of Java Panama API and foreign function interface, JVector's performance advantages, memory footprint reduction, integration with Cassandra and Astra DB, challenges of vector search at scale, trade-offs between RAM usage and CPU performance, Eventual Consistency in distributed vector search, comparison of different embedding models and their accuracy, importance of re-ranking in vector search, advantages of JVector over other vector search implementations Jonathan Ellis on twitter: @spyced
An airhacks.fm conversation with Stephan Janssen (@Stephan007) about: Stephan previously appeared on "#254 How JavaPolis and Devoxx Happened", discussion on the AI revolution in programming, development of an AI-assisted photo sharing application, creation of the Devoxx Genie IntelliJ plugin for AI-augmented programming, advantages of Claude 3.5 from Anthropic, use of local AI models in development environments, integration of AI in Java development, langchain4j and its adoption by Red Hat, development of Java-based AI tools like Lama3.java, jlama and JVector, potential for specialized AI models in software development, challenges and opportunities for junior and senior developers in AI-augmented programming, importance of understanding cloud services and cost structures when using AI, potential future of prompt-based programming and code generation, discussion on maintaining and improving AI-generated code, exciting developments in Java for AI including project valhalla and tornadovm, potential for running AI models directly on Java without external dependencies, considerations for enterprise AI adoption and integration, the need for promoting Java's capabilities in AI development, potential for Visual Studio Code port of Devoxx Genie, the challenge of maintaining AI-generated code versus keeping prompts, the concept of "prompt ops" for software development, the use of AI for code review and improvement, the potential for AI to lower the barrier to entry for new developers, and the exciting future of AI in software development Stephan Janssen on twitter: @Stephan007
An airhacks.fm conversation with Jake Luciani (@tjake) about: from Commodore 64 to cloud databases, early programming experiences with Basic and Excel macros, studying cognitive science and its influence on his career, transition to computer science, working at Bell Labs on R language, developing open-source projects like Night Rider MP3 player, creating a NoSQL database that led to involvement with Cassandra, building search API on top of Cassandra, joining datastax as an early employee, working on various aspects of Cassandra including compaction and streaming, challenges of byte buffer implementation, development of CQL (Cassandra Query Language), transition from NoSQL to SQL-like interfaces, separation of compute and storage in cloud databases, using S3 as the source of truth for Astra DB, implementing a Java file system abstraction for S3 integration, using etcd as a transactional cache for metadata, offering multiple APIs including REST and CQL drivers for astra DB, implementing JSON document storage and querying capabilities, cross-AZ cost considerations in cloud deployments, Java as a language for database development, future plans for jlama (Java-based LLM inference engine), the importance of open-source in cloud technologies, cost-driven architectures in cloud deployments, serverless vs. traditional deployments trade-offs, integration of AstraDB with cloud marketplaces and security considerations Jake Luciani on twitter: @tjake
An airhacks.fm conversation with Alfonso Peterssen (@TheMukel) about: Alfonso previously appeared on "#294 LLama2.java: LLM integration with A 100% Pure Java file", discussion of llama2.java and llama3.java projects for running LLMs in Java, performance comparison between Java and C implementations, use of Vector API in Java for matrix multiplication, challenges and potential improvements in Vector API implementation, integration of various LLM models like Mistral, phi, qwen or gemma, differences in model sizes and capabilities, tokenization and chat format challenges across different models, potential for Java Community Process (JCP) standardization of gguf parsing, quantization techniques and their impact on performance, plans for integrating with langchain4j, advantages of pure Java implementations for AI models, potential for GraalVM and native image optimizations, discussion on the future of specialized AI models for specific tasks, challenges in training models with language capabilities but limited world knowledge, importance of SIMD instructions and vector operations for performance optimization, potential improvements in Java's handling of different float formats like float16 and bfloat16, discussion on the role of smaller, specialized AI models in enterprise applications and development tools Alfonso Peterssen on twitter: @TheMukel
An airhacks.fm conversation with Georgios Andrianakis (@geoand86) about: discussion on JAX-RS and reactive programming in quarkus, comparison of blocking vs non-blocking approaches, performance considerations for different use cases, Quarkus underlying architecture using Vert.x, handling of HTTP requests and responses, thread management in Quarkus, reactive vs traditional programming models, integration with databases using Hibernate and Hibernate Reactive, JSON serialization options (Jackson, JSON-B), balancing act between supporting standards and providing modern features, documentation challenges for a large project like Quarkus, detecting blocked event loop threads, CPU-intensive tasks in reactive programming, non-blocking database drivers for reactive programming, historical perspective on messaging systems and their challenges, use cases for reactive programming, performance characteristics of blocking vs non-blocking systems under high load, brief mention of LangChain for Java and its similarity to JPA for LLMs Georgios Andrianakis on twitter: @geoand86
An airhacks.fm conversation with Gerald Venzl (@GeraldVenzl) about: from a 386 computer with SimCity to Oracle's database evangelist, early interest in computer hardware and software, apprenticeship as a programmer in Austria, work experience with Oracle database and PLSQL, Steven Feuerstein, PLSQL expert, career moves to New York, London, and San Francisco, role as product manager and team leader at Oracle, efforts to attract developers to Oracle technologies, involvement in Oracle ACE Program, work on docker files for Oracle Database, challenges with ARM port for Mac, popular JavaOne talk on optimizing Java code for database performance, discussion of Oracle's various database technologies including NoSQL and TimesTen, importance of educating developers on database best practices, evolution of database performance techniques, future topics for discussion including Oracle architecture, Java integration, and business logic in databases, Gerald's team of evangelists across Europe, ways to contact Gerald and his team for speaking engagements or information Gerald Venzl on twitter: @GeraldVenzl
An airhacks.fm conversation with Nicolai Parlog (@nipafx) about: Java 22 and 23 new features overview, including unnamed variables with underscore, multi-source file launching, G1 region pinning, Foreign Function & Memory API finalization, Markdown Javadoc support, ZGC generational collector by default, discussion on Java installation and beginner-friendliness, debate on proper use of LTS terminology for Java releases, potential for Java in AI/ML space with new vector APIs and native performance, comparison of Java to python for AI workloads, challenges and opportunities for Java adoption in data science and machine learning domains, importance of specialized AI models vs general models for enterprise use cases, trade-offs between developer experience and operational efficiency for different languages and runtimes, potential future directions for Java in high-performance computing and AI acceleration, previously, Nicolai appeared on "#300 Object-Oriented Programming (OOP) vs. Data-Oriented Programming (DOP) in Java" Nicolai Parlog on twitter: @nipafx
An airhacks.fm conversation with Georgios Andrianakis (@geoand86) about: early experiences with computers and programming, transition from Pascal and C to Java in university, early career working with WebLogic and EJB, move to Spring development, joining Red Hat and discovering quarkus, developing Spring compatibility layer for Quarkus, Vodafone Greece case study showing benefits of migrating from Spring to Quarkus, current work on RESTEasy Reactive and langchain4j, exploration of future AI integration in Java with projects like Llama3.java, comparison of Spring, Quarkus, and Micronaut, discussion on the evolution of Spring and its perceived bloat, potential for Quarkus and LangChain4j to revolutionize enterprise AI integration, importance of pure Java solutions for AI inference and integration with existing enterprise applications Georgios Andrianakis on twitter: @geoand86
An airhacks.fm conversation with Jonathan Schneider (@jon_k_schneider) about: Spinnaker's role in continuous delivery and multi-cloud deployments, multi-cloud architectures, Micrometer's origin and design as a vendor-neutral metrics abstraction library, comparison of micrometer to other metrics solutions like opentelemetry and MicroProfile Metrics, exploration of Micrometer's architecture including registries and meter types, debate on static vs dependency-injected registries, explanation of distribution summaries and their use cases, consideration of unit testing metrics, examination of Micrometer's support for multiple monitoring systems simultaneously, discussion of meter filters for customizing metric output, reflection on the trade-offs between language support and monitoring system support in metrics libraries, insights into the separation of application and runtime metrics, Jonathan's experience developing Micrometer at Netflix and Pivotal, current usage of Micrometer and prometheus in Modern's multi-tenant SaaS architecture, comparison of serverless and EC2-based deployments for different use cases, OpenRewrite's growing popularity in Europe Jonathan Schneider on twitter: @jon_k_schneider
An airhacks.fm conversation with Gil Tene (@giltene) about: discussion of Azul Systems' Vega chip, a custom-designed processor optimized for Java workloads, Vega's architecture and features including multiple generations (Vega 1, 2, and 3), high core count (up to 54 cores per chip), custom instruction set, hardware-managed register windows, type-aware pointers for efficient method calls, fully symmetric multiprocessing with up to 16 chips (864 cores total), memory striping across controllers for even distribution, Hardware Transactional Memory support for concurrent Java operations, custom coherency and memory ordering instructions, comparison with contemporary processors from Intel and Sun, challenges in chip design and manufacturing, impact on Java performance and concurrency, evolution of the technology and its influence on modern processor designs, Gil Tene's role in developing the Vega chip and related software technologies at Azul Systems, Gil's blog: Stuff Gil Says Gil Tene on twitter: @giltene
An airhacks.fm conversation with Cliff Click (@cliff_click) about: Cliff Click's early computer experiences with xerox mainframe and punch cards, learning fortran at a young age, programming on TRS-80 and other early microcomputers, developing a passion for compilers and optimization, pursuing a PhD in Computer Science at Rice University, inventing the sea of nodes compiler architecture, working at motorola and discovering Intel's benchmark cheating, joining Sun Microsystems to develop the Java HotSpot compiler, presenting groundbreaking Java performance improvements at JavaOne 2002, frustrations with Sun's management and development processes, moving to Azul Systems for custom Java hardware development, reflections on compiler research, the challenges of being a highly productive programmer in a team environment, analyzing bug rates and productivity metrics, the importance of writing new code for feature development, enjoying Java's "write once, run anywhere" philosophy, current involvement in compiler communities on Discord and Cliff Click on YouTube Cliff Click on twitter: @cliff_click
An airhacks.fm conversation with Christian Stein (@sormuras) about: early computing experiences with C64, learning Basic and Pascal, transition to Java programming, developing a commercial Java game using lwjgl, involvement with JUnit testing framework as a committer, work on openJDK and Java tools at Oracle, discussion about Java build tools and dependency management, vision for a simpler Java build process using only JDK tools, multi-file source code feature in Java 22, pluggable dependency resolution, tool provider interface introduced in Java 9, potential for a new ecosystem of Java tools, Bach - Java Shell Builder, Adam's YouTube channel with Java programming shorts, misconceptions about Java's verbosity, future plans for Java build tools Christian Stein on twitter: @sormuras
An airhacks.fm conversation with Bruce Hopkins about: transition from Basic to Java, work on Bluetooth technology and writing a book on Bluetooth for Java, involvement with Sun Microsystems and Java ME, becoming a Java Champion, shift to AI and natural language processing research, development of speech recognition and hands-free web navigation systems using pure Java, use of Hugging Face libraries for NLP in 2016, writing for Linux Magazine about mesh VPNs, discovery and exploration of ChatGPT, writing a book on integrating ChatGPT with Java, shared experiences and parallel paths in Java development, discussion about Sun Microsystems vs Oracle's approach to Java, mention of various Java-related technologies like JXTA, Sphinx, FreeTTS, and Dalvik, brief explanation of mesh VPNs and Tailscale, plans for a future podcast episode focused on Bruce's JavaChatGPT book
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
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
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
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
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
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