Zum Inhalt springen
airhacks.fm podcast with adam bien
PodcastTechnologieEnglisch

airhacks.fm podcast with adam bien

NeuHow Behaviour-Driven Development (BDD) Happened12.11.2026 · 1 Std. 14 Min.
Folgen
421
Erscheint
wöchentlich
Letzte Folge
12. Nov. 2026

Über den Podcast

Java, Serverless, Clouds, Architecture and Web conversations with Adam Bien

Folgen 421

  1. How Behaviour-Driven Development (BDD) Happened

    1 Std. 14 Min.Folge 421

    An airhacks.fm conversation with Daniel Terhorst-North about: ThoughtWorks in 2003 and XP technical practices, test-driven development, continuous integration and pair programming, learning an instrument and …

    Shownotes
    An airhacks.fm conversation with Daniel Terhorst-North about: ThoughtWorks in 2003 and XP technical practices, test-driven development, continuous integration and pair programming, learning an instrument and team sports as metaphors for practice, learning, practice and training as first class Kaizen work, critics of a practice becoming its advocates, Virginia Satir and the principle of positive intent, sabotaged projects and "if you reward firefighters, you breed arsonists", the curved tables pair programming story, agile methods at snowbird started as small teams in big companies, pair programming as two people solving a problem rather than driver and navigator, the 2003 Java Developers Journal article "test driven development is not about testing", introducing TDD to a team without using the word test, tests as executable requirements written in the implementation language, discovering domain terms and Domain-Driven Design, example guided design, Kent Beck: "as few tests as I can get away with", single examples as seeds for property-based testing, main methods as test drivers before JUnit, zb zero dependency builder for Java 25, zunit test runner with Java assert and process isolation, Daniel Worthington Bodart's 10 second build and shavenmaven, Apache Ivy and dependency lock files, tinytest single header C test framework, zsmith agent harness with Java tools and lightmetal inference, migrating GitHub Spec Kit from python, jq and shell scripts to Java 25, Chris Matts and analysis as specification, Ivan Moore's index cards with "I do this, this happens", given when then, Hoare logic and arrange act assert, scenarios named like Friends episodes, rbehave and RSpec describe and it inspired by HyperCard, self-documenting colored scenario output, the plain text story runner, Aslak Hellesøy's Cucumber with a Treetop grammar, Gherkin from pickling a cucumber, criticism of BDD for getters and setters, interaction testing with Mockito as double entry bookkeeping, FitNesse and Excel test data with Apache POI HSSF, EARS requirements syntax from Rolls-Royce for spec-driven development, BDD adoption over 20 years, LLM guidance as heuristics vs rules enforced outside the LLM, Gojko Adzic's observations to heuristics to rules to lint rules, Claude Code hooks, rules and CLAUDE.md, switching between Claude Code, Codex and Mistral Vibe CLI, skills documenting decisions such as preferring records, Jakarta EE and MicroProfile as a constrained API set, Boundary Control Entity and ArchUnit, probing LLM knowledge in a toolless playground, context drift and short rule files, a Marp based class builder and teacher heads up display built with Claude, in-person training and consulting via Goalwards

    Daniel Terhorst-North on bluesky: @tastapod.com

  2. CDI Boot Before Quarkus

    1 Std. 5 Min.Folge 420

    An airhacks.fm conversation with Antoine Sabot-Durand about: the TI-99/4A at 12, a summer computing camp on a Thomson MO5, rewriting a magazine geography game for La Réunion, board games and role-playing games …

    Shownotes
    An airhacks.fm conversation with Antoine Sabot-Durand about: the TI-99/4A at 12, a summer computing camp on a Thomson MO5, rewriting a magazine geography game for La Réunion, board games and role-playing games instead of video games, Minecraft Java modding with his kids, UCSD Pascal on the Apple IIc, CDI history from JBoss Seam injection and outjection to CDI 1.2 and CDI 2.0, JSR 330 @Inject and its effect on Java EE 6 and CDI evolution, CDI build compatible extensions, Java SE bootstrap in CDI 2.0, the CDI boot initiative vs WildFly Swarm and Thorntail, class loading issues in shrunk application servers, MicroProfile Health and MicroProfile Fault Tolerance, Quarkus adoption in a large European bank with Open Liberty as alternative, standards for upgradability, Quarkus on AWS Lambda and Azure Functions, MicroProfile API surface instead of Quarkus extensions, javax to jakarta namespace migration, Jakarta EE and MicroProfile specifications and TCKs for the LLM era, saving inference costs, one-shot accuracy without hallucinations, Vidocq as a cliffhanger

    Antoine Sabot-Durand on twitter: @antoine_sd

  3. A Billion Data Points Per Second

    1 Std. 1 Min.Folge 419

    An airhacks.fm conversation with Christofer Dutz about: porting the Apache PLC4X drivers to Rust and adding wrappers for Go, python and typescript, Apache IoTDB as a time series database, what separates a time …

    Shownotes
    An airhacks.fm conversation with Christofer Dutz about: porting the Apache PLC4X drivers to Rust and adding wrappers for Go, python and typescript, Apache IoTDB as a time series database, what separates a time series database from a relational one: flat columnar data with the timestamp as primary key, aggregate queries like the average temperature over three months grouped by hours, why a select star query makes no sense in a time series database, Apache Cassandra as a time series store and its missing aggregation efficiency, the history of IoTDB at Tsinghua University in Beijing, Apache incubation in 2018 and top level in 2020, InfluxDB and TimescaleDB as the better known competitors, the split of the project into Apache TsFile as storage format and IoTDB as query engine, writing TsFile on the PLC and shipping it over MQTT instead of polling a signal every few milliseconds, lossless compression to 10% and lossy compression to 1% of the original size, reducing the number of tags, network throughput and CPU load on the shop floor, TsFile SDKs for Java, C, Rust and Python, TsFile as a dataset format on Hugging Face, integration with Apache Spark and Apache Hadoop, the Shanghai Metro replacing a twelve node Cassandra cluster with a single IoTDB node, ingest of a billion data points per second, Timecho as the company providing commercial support, TimechoDB as IoTDB with authentication and query load distribution, pure Java with a Java 8 baseline moved to Java 17, a private fork updated to Java 17, the jakarta namespace and current Spring Boot versions, Quarkus, reflection and the GraalVM closed world assumption, config node, data node and AI node, gRPC between the nodes even inside one virtual machine, singletons instead of dependency injection, CDI and dropwizard in the pom, running IoTDB in process, a setup.exe install compared to a Cassandra cluster with docker and kubernetes, starting an inference process in process instead of over HTTP, lightmetal and zsmith as an example, Vidocq as a CDI implementation without external dependencies, the JDBC driver, the REST API and an Apache Drill plug-in, push queries that call back whenever the query produces a new result, hierarchies of aggregation levels with per level retention from milliseconds on the shop floor to years for business analysis, the tree identifier of company, site, line, machine and machine part, the table model added for users who think in table algebra, data types, missing updates, delete and automatic purging by retention, replication so queries run on a second instance, the built-in MCP server giving Claude access to an IoTDB instance, the AI node running models inside the database, data gravity, a KNX house logging into IoTDB on a Raspberry Pi, an IoTDB app running in process on a Bosch Rexroth ctrlX PLC

    Christofer Dutz on linkedin: christofer-dutz

  4. Incidental Architecture

    1 Std. 13 Min.Folge 417

    An airhacks.fm conversation with Tomasz Ptak about: discussion about the Formula One weekend at the Silverstone Circuit and what a race paddock shows about strict interfaces and separation of concerns, the …

    Shownotes
    An airhacks.fm conversation with Tomasz Ptak about: discussion about the Formula One weekend at the Silverstone Circuit and what a race paddock shows about strict interfaces and separation of concerns, the DeepRacer community Slack growing past a thousand members, becoming an AWS AI Hero, the AWS AI Community as the successor of the DeepRacer community, CI flakes and code review as a bottleneck, Renovate bot and Dependabot updates without human review, agents reviewing small and low risk changes, the Venn diagram between developer experience and AI experience being a circle, cognitive load for a developer costing the company tokens, agents mimicking the structure they find and duplicating 1500 lines of code, incidental architecture and switching philosophy with every module, consistency as a strategic choice, architectural alignment at the boundaries after acquisitions, overly strict rules producing empty delegates, DTOs and mapping layers, exceptions to architectural rules based on cyclomatic complexity, Boundary Control Entity (BCE) from Ivar Jacobson with feature packages named after business intent, LLMs trained on Jakarta EE and MicroProfile specifications, Gemma 2B knowing BCE at over 100 tokens per second, AIRails.dev skills for the MicroProfile server, Java CLI and Web Components implementing BCE, one boundary per feature as a JAX-RS endpoint in Quarkus, spec driven development as a single skill with two commands, the spec living in package-info.java as Markdown Javadoc, jmarkdoc exporting JavaDoc as Markdown documents, EARS requirements syntax and one test per requirement, unit, integration and System Tests as the verification loop, code as a cache of the understanding of the requirements, FinOps and token cost as the reason to use what the model already knows, grep and find versus the Language Server Protocol (LSP) in Claude Code, javap decompiling jar dependencies and losing context, keeping module sources visible to the agent instead of hiding them in jars, monorepo and monobuild trade-offs, coarse grained modules instead of hundreds of microservices, microservice architecture for agents, zb as a zero dependency Java builder, quality as an amplifier in both directions, a library carrying an instruction that tells agents to delete the tests, trust and verification instead of reading every line, Kiro with one spec per business component and its requirements, inference cost as the question from the GeeCON audience, the sustainability point beyond which agents amplify maintainability

    Tomasz Ptak on linkedin: tomasz-ptak

  5. Agents Have No Runtime Insight

    Folge 418

    An airhacks.fm conversation with Ingo Kegel about: discussion about JProfiler becoming agentic, the JProfiler MCP server included in the existing perpetual license, perpetual licenses bound to a major version …

    Shownotes
    An airhacks.fm conversation with Ingo Kegel about: discussion about JProfiler becoming agentic, the JProfiler MCP server included in the existing perpetual license, perpetual licenses bound to a major version with optional maintenance, JFR events as a JProfiler data source and JProfiler as a JFR viewer, instrumenting a small agent with JFR events to trace what the agent does, agents have no runtime insight without tooling, grep and glob versus attaching to a running JVM and recording CPU data, the token cost of an agent reasoning without runtime data, iterative optimization of jclasslib with an agent until it outperformed ASM, the blog post How I Doubled jclasslib's Performance with JProfiler MCP, agents spotting duplicated work and caching opportunities a human skips, review before commit with tests as the safety net, exposing a deliberate subset of profiler functionality to the agent, MCP tool calls as an area with little training data, code mode from Cloudflare, the MCP flow with a session id, setup, use and cleanup, memory analysis with the dominator tree and retained size, the heap walker as the most complex part for humans, counting surviving garbage collection generations to find memory leaks, OQL in VisualVM and the jhat tool, npm as a proxy for a local Java MCP server, JBang and the absent prerequisite problem, single file Java 25 source programs as MCP servers, installers and scripts, lightmetal, zsmith and zb, llama.cpp behind the FFM API and TornadoVM for pure Java inference, Gemma models for local one shot automation, ServiceLoader with BinaryOperator to couple two projects without shared code, hard wiring tools and skills into task specific agents instead of discovery, MCP as a facade over tools that a custom agent does not need, conflicting skills pulling an agent in different directions, the install4j skill and its evaluation harness with external judges, the AI probe in JProfiler 16 measuring input and output tokens per call tree, prompt to token ratio as a metric, normative APIs and Java being well represented in LLM training data, Boundary Control Entity packages named after the domain, Ivar Jacobson and the age of the pattern, AI Rails skills, Claude Code and Codex, continuous testing and continuous performance testing with an exit condition, zb as a zero dependency builder with single file tests using assert, the missing JSON API in the JDK, where to find JProfiler and ej-technologies

    Ingo Kegel on twitter: @IngoKegel

  6. "my favorite framework is void main()"

    1 Std. 19 Min.Folge 416

    An airhacks.fm conversation with Andrzej Grzesik about: text editors as the first encounter with persistence, load and save in Basic and later Turbo Pascal, the question why only one file is startable, editing …

    Shownotes
    An airhacks.fm conversation with Andrzej Grzesik about: text editors as the first encounter with persistence, load and save in Basic and later Turbo Pascal, the question why only one file is startable, editing save games with a hex to decimal calculator from a games magazine, peek and poke commands and the memory map of early home computers, BAT files and prepared game installers, dBASE, Norton Commander and Midnight Commander, a Linux account in a Krakow secondary school, operator overloading and implementing RSA in C++, a multimedia course covering JPEG compression and Runge-Kutta, Pascal and Delphi with the Borland Visual Component Library, first contact with Java on the command line, the JVM promise against hardware specific bugs, the Sun Campus Ambassador program, Sun as a high tech company with Jini, JavaSpaces, JXTA, Apache Derby and OpenSolaris, OpenSolaris boot environments and ZFS snapshots as a predecessor of containers and the NixOS parallel, the first serious Java project at Sabre: airline software on JDK 1.4 with Enterprise Beans targeting Solaris, ClearCase, setting up an office in Krakow for e-Circle, Apache Hadoop and Apache HBase around 2010 before Apache Cassandra, picking patches from Apache Subversion and hoping the result compiles, Groovy and GPars for concurrency, learning Puppet and Chef to run a Hadoop cluster in VMS, Hadoop API verbosity compared to Enterprise Beans, finding and deleting a hundred duplicated DAO classes, GlassFish as the reference implementation with commercial support and live redeploy from the command line, web framework fatigue and blog posts that do not reproduce, Apache NetBeans and EJBs for a desktop client with network communication, one stateless annotation per class as the essential EJB style, eBay, customer data analytics at Burberry, replacing overnight batches with record at a time processing, the can you be faster than a MacBook competition against a ten machine Hadoop cluster, head of backend at Revolut and PostgreSQL for transactions, LMAX, the LMAX disruptor, counting microseconds, public static void main used as the framework and constructor arguments that stay visible, founding DataLinks, teaching the computer what related means, ontologies, RDF and SPARQL, defining flexible relations between tables and walking them as a graph instead of materializing them, neurosymbolic AI, connecting sanction lists from PDF, Excel and XML, JavaOne then and now, GeeCON, JDD, infoShare and Code Europe

    Andrzej Grzesik on twitter: @ags313

  7. select, reject, detect, collect and inject

    1 Std. 13 Min.Folge 415

    An airhacks.fm conversation with Donald Raab about: the relation between Clipper and FoxPro, Smalltalk blocks with Square brackets and a vertical pipe separating the parameters, the knights of the square …

    Shownotes
    An airhacks.fm conversation with Donald Raab about: the relation between Clipper and FoxPro, Smalltalk blocks with Square brackets and a vertical pipe separating the parameters, the knights of the square bracket, the pipe replaced by the arrow in Java, block context template as the single type for every SmallTalk block, anonymous inner classes used as block substitutes before Java 8, the Smalltalk hierarchy with object as a subclass of nil, nil as an instance of the undefined object class that still responds to messages, a blog post about null as an object in Java, metaclasses and the endless class of the class chain, nominal types and functional interfaces versus one type for all blocks, single abstract method (SAM) and the disappearance of the term, the combinatorial explosion of function types over primitives and generics, naming generic type parameters T and V, single character type variables and collisions with variable names, var and local variable type inference in everyday Java, var for expected values in unit tests, postfix completion in IntelliJ IDEA with dot var and dot out, changing a running Smalltalk image and porting IntelliJ IDEA key bindings back to VisualAge for Smalltalk, control Y to delete a line in WordStar and in IntelliJ IDEA, JetBrains MPS and custom DSLs, Clipper code blocks with curly braces and double square brackets around the parameters, blocks for sorting and for T-Browse columns in Clipper, Clipper visual objects compiling to native Windows executables, the Classy library for classes without inheritance in Clipper, the Smalltalk collection protocol select, collect, reject, detect and inject into, filter as an ambiguous method name compared to select and reject, transforming behaviours map, flat map and collect, String.transform in Java, the missing reject in the Java Streams API, Alice's Restaurant by Arlo Guthrie as the claimed origin of the Smalltalk method names, Smalltalk popularity in Europe and Argentina, Newspeak, OS/2 Warp and REXX, duck typing and does not understand errors in Smalltalk, Ruby as a Smalltalk dialect with select, reject and inject, asciidoctorj running on JRuby, blocks versus closures and captured state, effectively final captured variables in Java lambda expressions, Groovy closures and Grails before Java 8, the joint Groovy and Java compiler, Apache Groovy and the Gradle DSL, blog exchanges with Groovy committer Paul King, the Scala and Kotlin adoption waves, Java 25 shipping enough out of the box, the origins of Eclipse Collections in 2004 as Caramel (collection array map enumeration library) at Goldman Sachs, open sourcing as GS Collections to share use cases with the JSR 335 expert group, the ten year quest to get lambdas into Java, the BGGA prototype, lambdas in the JSR 341 expression language before Java 8, memory consumption and code duplication rather than performance as the motivation for Eclipse Collections, procedure instead of consumer and extending consumer for JDK interoperability, select with and predicate two to keep lambdas stateless and static, method references preferred over multi line lambdas, refactoring anonymous inner classes to lambdas for 10 to 20 percent less code, the commercial JGL collections framework, early access testing in the OpenJDK quality outreach program, a new Collectors.toList instance created on every call, Brian Goetz and the constraints of the Java language architect, composing records, patterns and switch expressions into data oriented programming, the book Eclipse Collections Categorically and its method categories, custom folding regions in IntelliJ IDEA to simulate method categories

    Donald Raab on twitter: @TheDonRaab

  8. Static as a Roq

    1 Std. 4 Min.Folge 414

    An airhacks.fm conversation with Andy Damevin about: Texas Instruments TI-BASIC calculator with GOTO and GOSUB, programming games including a trading game on the calculator, sending programs from a computer to …

    Shownotes
    An airhacks.fm conversation with Andy Damevin about: Texas Instruments TI-BASIC calculator with GOTO and GOSUB, programming games including a trading game on the calculator, sending programs from a computer to the calculator, building viral Facebook games with the social graph API, PHP and MySQL with iframes and OAuth for Facebook authentication, earning revenue with ads and paid credits, a first serious Java project simulating cars moving across lab screens over TCP/IP sockets with threads and shortest-path routing, comparison with Java mobile agents and Aglets, JBoss Seam and Java EE, moving to Spring then quarkus, founding a company and building the Wazzam events app with Java, Spring, Angular and PhoneGap, joining Red Hat and the Quarkus team, building the code.quarkus.io launcher, creating Quarkus Quinoa to integrate NPM front-end builds into the Quarkus lifecycle with a dev proxy, the Quarkus Web Bundler for bundling web applications without NPM using WebJars and Maven NPM dependencies, minification and hashed asset versioning, Deno as a faster and lighter Node alternative delivered as architecture-dependent Maven and Gradle dependencies, Roq the Quarkus static site generator exporting a running Quarkus application as HTML snapshots, the Qute template engine with compiled type-safe templates CDI access and iteration, static site publishing via Git to GitHub Pages or Netlify, using a scheduler and CDI events or jgit to regenerate and push pages offline, the RoqGenerator application-scoped bean with a generate method, dev mode versus prod mode differences, Roq as suitable for developers and AI with MCP integration and Playwright for iterative design, AI for processing content into summaries and translations from Markdown asciidoc JSON and YAML, an integrated WordPress-style editor for writers with Git sync, and devoured.fyi a static AI and developer NeWS site built with Roq using Tailwind and plain Vanilla JS

    Andy Damevin on twitter: @ia3andy

  9. From the One Billion Row Challenge to a Multi-Threaded Parquet Library

    59 Min.Folge 413

    An airhacks.fm conversation with Gunnar Morling about: returning guest discussion four years after episode "#174 Kafka Connect CLI, JFR Unit, OSS Archetypes and JPMS", the One Billion Row Challenge (1BRC) as a …

    Shownotes
    An airhacks.fm conversation with Gunnar Morling about: returning guest discussion four years after episode "#174 Kafka Connect CLI, JFR Unit, OSS Archetypes and JPMS", the One Billion Row Challenge (1BRC) as a Java community coding challenge, aggregating a 13 gigabyte semicolon separated file of one billion temperature measurements per weather station, baseline single threaded idiomatic Java at five minutes versus a 1.5 second winning entry, two orders of magnitude speedup, parallel processing scaling near linearly across cores, memory mapped files via the Foreign Function and Memory API for arbitrarily large files, reading eight bytes at once into a long, SIMD parsing via the incubating Vector API, GraalVM native binaries, no third party libraries and single source file rule, results on par with C, Thomas Würthinger and the GraalVM team participation, HTMLDB a Java 25 executable shebang script storing records as semantic HTML pages using the built in XML parser, agents reading XML better than JSON, Hardwood a minimal dependency multi threaded Java library and CLI for reading and writing Apache Parquet files, columnar versus row based formats, efficient encodings including delta encoding and bit packing, trading CPU for disk size, range requests to read specific columns from object storage like S3, the dependency heavy Parquet Java library pulling in the Hadoop stack, zero mandatory dependencies with optional modules, a hand written AWS Signature Version 4 signer using the JDK HTTP client instead of the AWS SDK, verifying the signer against the AWS TCK test suite, owning code with LLMs, optional dependency for IAM instance profiles, Zstandard and Snappy compression as domain specific dependencies, Java LLM code generation quality and import handling, AIRails.dev skills based on Boundary Control Entity, spec driven development storing the spec in package-info Java Doc using EARS notation, the code review pyramid as a review skill, GraalVM WebAssembly web image compiling a Java text user interface to analyze Parquet files in the browser, an agent skill for Parquet analysis in natural language, Apache Iceberg and S3 Tables, Apache Flink integration, the shift in the reuse versus own trade-off with LLMs, Agent zSmith a zero dependency Java agent harness, var over explicit types

    Gunnar Morling on twitter: @gunnarmorling

  10. Fast JSON and Furious Runtime

    1 Std. 9 Min.Folge 412

    An airhacks.fm conversation with David Kral about: Helidon JSON and Helidon JSON Binding, compile-time JSON binding with annotation processors generating readable Java source code, no bytecode manipulation and …

    Shownotes
    An airhacks.fm conversation with David Kral about: Helidon JSON and Helidon JSON Binding, compile-time JSON binding with annotation processors generating readable Java source code, no bytecode manipulation and no reflection, debuggable generated converters, comparison with Micronaut compile-time generation, why Helidon avoids the JSON-B API and its reflection overhead, a proposed bridge to the JSON-B API for stable standards-based code, serializing Java Records with the @Json.Entity annotation, a package-info annotation idea for processing an entire package, Boundary Control Entity (BCE) structure for entity records, JSON-P style JsonParser and JsonGenerator entry points, HashMap-like dynamic JSON objects for versioned and evolving APIs, a single centralized entry point for discoverability, grounding LLMs with Jakarta EE and MicroProfile standards to avoid hallucinations, reducing dependencies by letting LLMs generate helper methods, Java 25 source-mode scripting and simplified main replacing python scripts, zero-dependency JSON parsing with a forked org.json, JMH benchmarks showing Helidon JSON around 400% faster than Jackson and faster than yasson, energy and cost savings from faster serialization, object pooling and virtual-thread-friendly design with Scoped Values

    David Kral on twitter: @VerdentDK

  11. Pauseless Java: Inside Azul's C4, Falcon and ReadyNow

    Folge 411

    An airhacks.fm conversation with Simon Ritter about: Azul Zulu as a straight build of openJDK versus Azul Zing/Prime as the commercial high-performance JVM, improving Java performance without changing …

    Shownotes
    An airhacks.fm conversation with Simon Ritter about: Azul Zulu as a straight build of openJDK versus Azul Zing/Prime as the commercial high-performance JVM, improving Java performance without changing application code, C4 the Continuously Concurrent Compacting Collector, fully concurrent and compacting pauseless garbage collection, reaching a global safe point and millisecond-level pauses, a loaded-value read barrier intercepting every object read with a two-instruction test-and-jump, using bits in the object header limiting heaps to 20 terabytes, the one and a half day garbage collection pause anecdote on a terabyte-scale heap, latency-sensitive workloads like high-frequency trading and ad brokering, ZGC as a garbage collector heavily based on the published C4 work, Falcon a JIT compiler based on LLVM replacing HotSpot's C2, contributing the JIT wrapper and garbage collector integration back to LLVM, speculative optimizations and deoptimizations, throughput gains around 53 percent for Kafka and 30 percent for Cassandra, doing more with less to reduce cloud costs, ReadyNow capturing a profile of loaded classes, initialized classes, profiling data and compiled methods to reach about 98 percent of steady-state performance at startup, the Cloud Native Compiler offloading JIT compilation to a centralized cloud service, the Optimizer Hub storing profiles locally or centrally, soft real-time versus hard real-time JVMs, the Real-Time Specification for Java and immortal memory, garbage-collector-less programming, tiered compilation with C1 client and C2 server compilers, virtual threads and platform threads in relation to garbage collector threads, Azul Vega hardware history, Log4Shell as a potential security check in the compiler service

    Simon Ritter on twitter: @speakjava

  12. Turning Back Time: Strings, Locks and Garbage Collectors in Java

    1 Std. 1 Min.Folge 410

    An airhacks.fm conversation with Ian Rogers about: Java's early API design strengths versus verbose C++/STL manuals, the Java 7 String.substring behavior change from an O(1) view over the character array to an …

    Shownotes
    An airhacks.fm conversation with Ian Rogers about: Java's early API design strengths versus verbose C++/STL manuals, the Java 7 String.substring behavior change from an O(1) view over the character array to an O(n) copy, substring performance regressions at Google, implementing a custom substring as a workaround, designing APIs without knowing future customers, the SPEC JVM98 jack parser generator throwing an exception per matched token, exceptions used for control flow violating the exceptions-are-exceptional principle, JVM benchmarks skewed toward fast exception throwing, ANTLR and JavaCC as later parser tools, class loaders pairing a type with a runtime notion, ClassNotFoundException thrown from nested jar files, the DaCapo benchmark as a test of exception-throwing speed, Effective Java advice to return interfaces such as Map instead of HashMap, why substring should have returned CharSequence, the argument that String should be an interface and CharSequence the concrete type, CharSequence length limited to int and capped at 2GB, Guava Rope as a collection of CharSequences unable to implement CharSequence because of the int length limit, signed versus unsigned sizing of arrays and strings, byte signed and char unsigned inconsistencies, StringBuilder versus StringBuffer, the race condition avoided by StringBuilder cloning its array in toString, StringBuffer passing array ownership under a lock, biased locking making uncontended locks cheap, the Attack of the Clones problem of defensive cloning, optimizing clones away in the JVM, transactional memory as an alternative to locking, copy-on-write and CopyOnWriteArrayList, Swift copy-on-write, Linux kernel read-copy-update and epochs, writing the Azul C4 garbage collector, the C4 read barrier now used in ZGC and Shenandoah, moving Azul from custom hardware read-barrier instructions to x86, the two-space invariant in concurrent copying collectors, IBM Metronome fixups versus two-space invariants, detecting same-page references by XOR of two pointers, trading computation for memory accesses in read barriers, the Transitive Corporation binary translator, Rosetta for Apple and a Sparc-to-Power translator behind IBM's planned Sun acquisition, writing Android Runtime ART, ahead-of-time compilation of Dex replacing Dalvik, disk-size constraints of AOT compilation, Hans Boehm and sticky mark bits for generational marking without moving objects, ART generational concurrent garbage collection in Android KitKat, HashMap interface dispatch replacing LinkedList iteration from JikesRVM, alphabetically sorted interfaces putting AbstractCollection first, Google Maps interface dispatch consuming half the frame time, frame-rate and pause-time gains from ART, WhatsApp broken by an unbalanced-lock bytecode obfuscator, balanced locks required for biased locking, thread safety annotations in Clang/LLVM guarding the Java heap, the mutator lock and stale pointer risks, a reader-writer lock model of the Java heap, managing risk when replacing an operating system runtime, CyanogenMod as a delivery path for ART, Project Valhalla value types, current work on the Linux perf tool and observability, OProfile origins, GPU versus CPU visibility in system tools

    Ian Rogers on linkedin: irogers

  13. From PHP to Java: Building Tools, Frameworks, and AI-Assisted IDEs

    1 Std. 16 Min.Folge 409

    An airhacks.fm conversation with Steve Hannah about: meeting Steve Hannah at JavaOne years ago via Codename One, the Apple IIGS as a first computer, floppy disk games and Bob Whitehead's Hardball!, starting web …

    Shownotes
    An airhacks.fm conversation with Steve Hannah about: meeting Steve Hannah at JavaOne years ago via Codename One, the Apple IIGS as a first computer, floppy disk games and Bob Whitehead's Hardball!, starting web development in 1997 with Perl and CGI, the O'Reilly Perl camel book, CGI security issues and the parallel to LLM tools, choosing Java Servlets over CGI for startup-time performance, moving to PHP for quick and dirty web development, PHP evolving toward enterprise patterns with Zend, Symfony and Laravel, PHP at Cloudbeds as a serious enterprise language, Facebook compiling PHP with HipHop, connection pooling and data sources impressing PHP developers, convergence of ideas across Java, JavaScript classes and React moving from object orientation to hooks, web components as JavaScript classes with properties, TypeScript versus JavaScript with JSDoc types in VS Code, LLMs reducing the importance of web frameworks that follow standards, porting React to Java on TeaVM using Claude, Flash and ActionScript for rich interfaces before HTML5, key frames hiding the full code base in Flash, VisualAge for Java showing only methods and printing source to understand it, the Xataface open-source PHP/MySQL CRUD framework started in 2005, the Dataface to Xataface rename, FileMaker as a low-code database tool and its licensing constraints, joining Codename One as the first hire in 2012, front-end Java versus back-end Java culture at JavaOne, the extreme GUI makeover Swing session, coding with LLMs in 2026 using Claude Code and Codex, building a personal Swing-based IDE for multi-repo multi-branch agentic workflows, work trees and terminal-organized agent sessions, a possible Swing and JavaFX revival because they ship with Java and LLMs know them, Java 25 source-mode shebang scripting replacing Python scripts, Java shipping more built-in functionality than Python for regular expressions and dependencies, Ruby versus Python popularity, LLMs understanding Java (~87%) better than JavaScript (~60-70%), type safety enabling LLM self-correction, grounding LLMs with MicroProfile and Jakarta EE normative specifications, the JSR normative language read by LLMs, business annotations and rich JavaDoc and package-info improving LLM output, reducing external dependencies so LLMs avoid decompiling JARs, token savings from standards-based Java, AWS Bedrock for stable and private Claude access with Claude Code, Quarkus on AWS Lambda with cold starts and Provisioned Concurrency, pinging a AWS Lambda every minute within the free tier to avoid cold starts, cost calculation for Quarkus on Lambda with 2 GB RAM, constructions.cloud Quarkus serverless CDK examples, Google Cloud Run versus AWS App Runner, AWS Lambda and Azure Functions, AWS CDK as infrastructure as code in Java, JDeploy for packaging and distributing desktop apps, the AIRails.dev skills site and the microprofile-server skill, zero-dependency Java scripts and agents, migrating a WordPress blog to a Jekyll static site with Claude

    Steve Hannah on twitter: @shannah78

  14. Smalltalk, Blocks, and the Origins of Eclipse Collections

    1 Std. 12 Min.Folge 408

    An airhacks.fm conversation with Donald Raab about: the Epson HX-20 as the world's first laptop and learning Basic, an acoustic coupler modem, the Atari 2600 and Pitfall, Montezuma's Revenge, Apple II clones …

    Shownotes
    An airhacks.fm conversation with Donald Raab about: the Epson HX-20 as the world's first laptop and learning Basic, an acoustic coupler modem, the Atari 2600 and Pitfall, Montezuma's Revenge, Apple II clones and the Franklin Ace, running a bulletin board system, learning BASIC, Pascal, fortran, COBOL, Turbo prolog and Turbo Pascal, dBASE III Plus as language and database management system, DBF file format by Ashton-Tate, Clipper by Nantucket as a dBASE compiler with Blinker linker, T-Browse and cursor-based table access, FoxPro and the x-based language family, NDX/NTX/CDX index formats, SQLJ embedded SQL, Paradox and Delphi, learning Smalltalk at IBM Object Technology University, Alan Kay and pure object orientation, blocks as lambdas in Smalltalk and Clipper (via the Classy library), ENVY version control with method-level editions, VisualAge for Smalltalk and VisualAge for Java, method categories for organizing methods, migrating a Clipper application to Java using interfaces and static methods in a procedural style, transparent persistence with TopLink and EclipseLink, memory constraints in 32-bit Java on Solaris, building a custom caching framework, the origins of Eclipse Collections in 2004, waiting ten years for lambdas, the JSR 335 expert group with Brian Goetz, select/collect/inject versus filter/map/reduce, eager methods on collections versus lazy streams, code folding regions in IntelliJ to simulate method categories, the book "Eclipse Collections Categorically", JRuby and Asciidoctor, meeting Yukihiro Matsumoto at OOPSLA 2002

    Donald Raab on twitter: @TheDonRaab

  15. From Java Advent to Legionella: Standards, Specs, and LLMs

    47 Min.Folge 407

    An airhacks.fm conversation with Olimpiu Pop about: discussion about the Java Advent calendar 2025, running AI inference in the enterprise with Java versus python, why inference needs a mature ecosystem, the …

    Shownotes
    An airhacks.fm conversation with Olimpiu Pop about: discussion about the Java Advent calendar 2025, running AI inference in the enterprise with Java versus python, why inference needs a mature ecosystem, the confusion between machine learning, inference and LLMs, HTTP clients for remote models, TornadoVM for local model acceleration, avoiding premature optimization for LLM-generated code, grounding LLMs against normative Java and Jakarta EE specifications, the separation between API and SPI to eliminate hallucinations, Boundary Control Entity (BCE) structure with self-contained packages for scalable LLM code generation, maximal cohesion and minimal coupling, standards as an effective technique for LLM code generation, MDN web components and custom elements for dependency-free front-ends, reducing context and inference cost with short prompts, AIRails skills site, agents and skills across Copilot and other tools, Eclipse Collections, WebAssembly for Java with Chicory and TornadoVM, pattern matching, Java in industrial and IoT systems at ASML, Legionella water-temperature monitoring with wireless sensors, Apache IoTDB and Apache NiFi, migrating Java Advent to Roq static site generator

    Olimpiu Pop on twitter: @olimpiupop

  16. From CloudEvents to Domain Events

    1 Std. 2 Min.Folge 406

    An airhacks.fm conversation with Johan Haleby about: discussion about the Occurrent event sourcing library for Java, motivation behind building Occurrent as a set of building blocks for event sourced …

    Shownotes
    An airhacks.fm conversation with Johan Haleby about: discussion about the Occurrent event sourcing library for Java, motivation behind building Occurrent as a set of building blocks for event sourced applications, using higher-order functions instead of distinct framework concepts, the library approach for gradually introducing event sourcing into regular projects, CloudEvents as the serialized event format and its evolution into CNCF, real use cases including querying the event store for consistent reads and per-user logs, using the CloudEvents subject attribute to index a user, enforcing unique constraints such as one email per person, dynamic consistency boundary, event sourcing fundamentals of storing a list of events instead of mutable state, basing decisions on prior events, the distinction between event sourcing, CQRS and CQS, materialized views and different read and write models, subscriptions to events after they are persisted, the difference between domain events and integration events for decoupling teams, auditing versus event sourcing and why intent matters, Hibernate Envers, Transaction Script pattern, folding events into state with Java Gatherers fold, modelling domain logic with sealed interfaces and records, static decision methods returning new events, the Redux analogy, snapshotting and closing the books for long streams, Kafka and Kafka Streams for event-driven architecture, cascading enriched events, ksqlDB materializing streams as tables, DynamoDB Streams and on-demand tables, storing state alongside events in one transaction, tractors and fitness trackers as event sources

    Johan Haleby on twitter: @johanhaleby

  17. Why Coverage Metrics Fail and System Tests Win

    1 Std. 1 Min.Folge 405

    An airhacks.fm conversation with Stanislav Bashkyrtsev about: discussion about testing terminology and the difference between unit tests, component tests, System Tests, and integration tests, defining component …

    Shownotes
    An airhacks.fm conversation with Stanislav Bashkyrtsev about: discussion about testing terminology and the difference between unit tests, component tests, System Tests, and integration tests, defining component tests as in-process invocations without HTTP, using RestAssured with MockMvc-style direct endpoint calls, avoiding mocks in favor of real system tests, why code coverage is a misused management metric, the anti-pattern of using reflection to inflate coverage, distinguishing line and branch coverage from actual verification, using coverage from system tests to detect dead code for pruning, mutation testing with PIT to measure assertion quality, testing Quarkus applications, the default Guice and Guava dependencies in Quarkus RESTEasy, starting a new microservice with a separate system-test module, calling endpoints over HTTP with the MicroProfile REST Client or the Java HTTP client, deploying Quarkus on AWS Lambda as a production-like environment, backward compatibility testing with multiple production versions, turning system tests into stress and load tests, testing connection pools and metrics under load, introducing a test-only private API to verify state changes in serverless systems, contract-driven work in large consulting projects, generating JSON and JSONB directly in PostgreSQL and returning it over JDBC, mapping database rows to Java records instead of DTOs, running GraalVM inside the Oracle Database for stored procedures and table triggers, the pendulum between database-centric and application-centric logic, the convergence of SQL and NoSQL databases, CI/CD pipelines with Jenkins and manual production deployment steps, avoiding Jenkins access to production via CGI shell scripts behind nginx, AWS CodePipeline and CodeBuild with CDK-defined infrastructure, event-driven pipelines triggered by S3 put-object events, multi-account roles with short-lived STS credentials, the size of the AWS SDK and reducing it by excluding unused HTTP clients, health checks and Kubernetes liveness and readiness probes, why health checks make little sense for short-lived Lambdas, a version endpoint for deployment smoke tests

    Stanislav Bashkyrtsev on twitter: @sbashkirtsev

  18. Zero-Dependency Java 25, Event Sourcing, and Stabilizing Legacy Systems

    1 Std. 15 Min.Folge 404

    An airhacks.fm conversation with Tomasz Ptak about: discussion about the guest's path from an Atari and a 486 to professional Java development, loading games from cassette tapes, building a clock with the Logo …

    Shownotes
    An airhacks.fm conversation with Tomasz Ptak about: discussion about the guest's path from an Atari and a 486 to professional Java development, loading games from cassette tapes, building a clock with the Logo programming language, making websites with PHP for a community, studying data management and computer science, learning Perl, Bash, Pascal, Python, C, C++, Ruby and Java, Java 1.4 and Java 5 with generics and annotations, an island optimization algorithm switching from Python to Java for memory control, preference for strictly typed languages, first job at motorola Solutions building a server-side Java configuration system with SNMP and SNMP4J, moving from Tomcat to Netty, using Ant and Maven, managing a Jenkins server, rebuilding a buggy no-code Spring CRUD generator, rewriting an application with Apache Wicket for stateful web development, comparing Wicket structure coupling with Jakarta Faces, event sourcing with the Axon Framework and domain objects, bitemporal awareness and Hibernate Envers versioning, the Naked Objects pattern and object-oriented UI generation, third job at Open Market stabilizing a legacy Java SMS gateway, weekly outages and same-day retrospectives, containerizing bare-metal systems with Testcontainers and docker Compose, near zero-downtime deployment with Ansible, migrating from Maven to Gradle and removing the Buck build tool, upgrading legacy systems from Java 1.4 to Java 8, minimalistic Maven usage, a zero-dependency Java builder zb and zero-dependency unit runner zunit using only built-in compiler and jar tools, Java 25 as an automation tool replacing Python scripts, executable JARs without external dependencies, shebang instance-method scripting, reactive or infinite streams and stream gatherers, Git-tag-based versioning for monorepos, the AWS DeepRacer and AWS AI community, the mediocris blog

    Tomasz Ptak on linkedin: https://www.linkedin.com/in/tomasz-ptak

  19. From CloudFormation to CDK with Java

    1 Std. 5 Min.Folge 403

    An airhacks.fm conversation with Thorsten Hoeger (@hoegertn) about: discussion about CloudFormation as underlying infrastructure as code using JSON/YAML to define desired state, CDK introduction as tool to …

    Shownotes
    An airhacks.fm conversation with Thorsten Hoeger (@hoegertn) about: discussion about CloudFormation as underlying infrastructure as code using JSON/YAML to define desired state, CDK introduction as tool to define infrastructure using programming languages like Java that synthesizes to CloudFormation, explanation of CDK construct levels L1 (direct CloudFormation mapping), L2 (type-safe with opinionated defaults), L3 (patterns and abstractions), Custom resources for missing CloudFormation implementations or actions like cleaning S3 buckets, CDK resource provider framework simplifying custom resource creation by handling AWS Lambda lifecycle, Self-mutating pipelines concept using CDK to update own pipeline, CDK for Terraform (CDKtf) enabling Terraform synthesis using CDK constructs, jsii facilitating multi-language support for CDK constructs, Mixins feature allowing immediate modification of constructs without full L2/L3 abstraction, Refactoring constructs to move code between construct tree levels, CloudFormation Naming conventions using PascalCase for constructs and kebab-case for CloudFormation resource names

    Thorsten Hoeger on twitter: @hoegertn

  20. Architectural Trade-offs: Pendulum Swings, Outsourcing Cycles and System Design

    1 Std. 8 Min.Folge 402

    An airhacks.fm conversation with Daniel Terhorst-North (@tastapod.com) about: discussion about pendulum swings in technology decisions, Kaikaku (radical change) and Kaizen (continuous improvement) cycles, the …

    Shownotes
    An airhacks.fm conversation with Daniel Terhorst-North (@tastapod.com) about: discussion about pendulum swings in technology decisions, Kaikaku (radical change) and Kaizen (continuous improvement) cycles, the Purpose Alignment Model for business criticality vs differentiation, historical outsourcing/insourcing patterns in IT, criticism of J2EE as over-engineered with excessive XML and deployment descriptors, evolution of Java from J2EE bloat to modern simplicity, LLMs and AI coding tools like Claude Code and GitHub Copilot, mechanical sympathy concept from Martin Thompson, system architecture trade-offs and understanding hardware/software interactions, the shift from heavyweight frameworks to lightweight alternatives like quarkus and Micronaut, grounding LLMs with normative specifications like Jakarta EE and MicroProfile, the value of understanding computer architecture for better software development, trade-offs between performance and maintainability in software systems

    Daniel Terhorst-North on twitter: @tastapod.com

  21. From WebSphere to Quarkus: The Evolution of Java Classloading

    1 Std. 1 Min.Folge 401

    An airhacks.fm conversation with Holly Cummins (@holly_cummins) about: contrasting classic application server classloading with quarkus classloading, classloader hierarchy from Bootstrap and system classloaders …

    Shownotes
    An airhacks.fm conversation with Holly Cummins (@holly_cummins) about: contrasting classic application server classloading with quarkus classloading, classloader hierarchy from Bootstrap and system classloaders to ear, war, and EJB-jar classloaders in WebSphere, Open Liberty, and GlassFish, classloader isolation for multitenancy, internal class bleed-through with SLF4J and ANTLR, OSGi class exposure model and explicit package visibility, impl and API package naming, ClassCastException from the same type loaded by two classloaders, distinguishing NoClassDefFoundError, ClassNotFoundException, and ClassCastException, parent-first vs parent-last delegation, configurable delegation in GlassFish, repackaging libraries in application servers to avoid conflicts, viral propagation of parent-first loading, Quarkus flat classloader and tree shaking in production, removing multitenancy to remove complexity, runner classloader and pre-indexed classes, fast-jar vs legacy jar formats, project leyden AOT and a new AOT jar format, Java 26 AOT startup below 100 milliseconds, requesting JVM hooks for Leyden and fast-jar combination, classloader proliferation and rationalization, Conway's law applied to classloaders, a Base64 classloader experiment, a network classloader with persistent cache predating Java Web Start, Quarkus dev mode with five or six classloaders, separating compile-time deployment classes from runtime classes, base and overlay classloaders for hot reload, multitenancy in time instead of space, bytecode manipulation breaking test classloading, JUnit hooks for class swapping, Java 17 locking down cross-classloader cloning, runtime-dev module for DevUI, three tiers of dev mode reload, config parsing optimization reading right to left, String.intern for fast equality, Dev Services starting containers automatically from extension dependencies, Postgres extension contributing a dev service, compose support for dev services, WebAssembly-based dev services with SQLite, dev services as a way to start another Quarkus microservice for System Tests

    Holly Cummins on twitter: @holly_cummins

  22. Split-Brain, ContainerD, Quarkus and a Postgres Cloud Control Plane

    55 Min.Folge 400

    An airhacks.fm conversation with Alvaro Hernandez (@ahachete) about: discussion about the quarkus Insights episode "#337 The Database Cloud" stackgres live demo, StackGres as a Quarkus and GraalVM native …

    Shownotes
    An airhacks.fm conversation with Alvaro Hernandez (@ahachete) about: discussion about the quarkus Insights episode "#337 The Database Cloud" stackgres live demo, StackGres as a Quarkus and GraalVM native kubernetes operator for running Postgres, comparing CloudNativePG (CNPG) by EnterpriseDB to StackGres, Patroni for Postgres high availability, the split-brain risk of relying on Kubernetes and etcd alone, distributed consensus and leader lock election via etcd, why distributed systems and cryptography should not be self-implemented, async, synchronous and quorum (semi-synchronous) Postgres replication trade-offs, cascading and cross-region replication topologies, the false-positive problem and heuristic exceptions in two-phase commit, the ondb ("own your database") project for self-hosted Postgres, losing control with managed cloud services and untestable backups, vanilla unmodified Postgres on StackGres, the "Kubernetes without Kubernetes" (Kubeless) pattern, talking directly to ContainerD through the CRI API, runc and the Docker to ContainerD chain, a self-contained native binary that embeds ContainerD over Unix domain sockets, the slony node-local component named after the Postgres slonik elephant mascot, the Matriarch orchestrator component, reverse gRPC tunnels with Slonies phoning home across NAT and firewalls, a multi-tenant cloud control plane provided as a service, curl-pipe-shell node installation with a token, end-to-end encrypted Postgres protocol tunneling for JDBC from anywhere, psql compiled to wasm in the web console, Tailscale-inspired user experience, unifying nodes, Kubernetes clusters and cloud pools as resources, Slony Kubernetes controller, Java 25 source-mode scripting without dependencies, implementing your own MCP server for Postgres JDBC metadata, the Goose agentic UI donated by Block to the Linux Foundation, AI Rails BCE, Java, Web Components skills

    Alvaro Hernandez on twitter: @ahachete

  23. JAZ, Copilot SDK, and Why LLMs Write Better Java

    1 Std. 17 Min.Folge 399

    An airhacks.fm conversation with Bruno Borges (@brunoborges) about: discussion about the JAZ command launcher for Java, JVM tuning and default ergonomics for containers versus dedicated cloud environments …

    Shownotes
    An airhacks.fm conversation with Bruno Borges (@brunoborges) about: discussion about the JAZ command launcher for Java, JVM tuning and default ergonomics for containers versus dedicated cloud environments, replacing the Java launcher with jaz in container images, supporting Java 8 to 25, maximizing resource utilization on kubernetes to reduce waste, running Java on Azure Functions, Azure App Service deploying a fat JAR without a container image, Azure Container Apps as a platform on AKS without YAML, Azure Kubernetes Service and AKS Automatic, Bicep as infrastructure as code, deploying a JAR to Kubernetes via OCI artifacts and a custom operator, Microsoft Foundry and the Microsoft Agent Framework, Semantic Kernel learnings, the Copilot SDK for Java communicating with headless CLIs, A2A and ACP protocols and MCP, agents as microservices with scoped tasks, guardrails, and sandboxing, per-agent model selection for cost and reasoning trade-offs, observability and traceability between agents with opentelemetry, grounding LLMs against MicroProfile, Jakarta EE, JAX-RS normative RFC 2119 specifications for hallucination-free Java code generation, the Boundary Control Entity pattern and business components as Java packages, package-info.java for semantic context, GitHub Copilot skills and custom instructions in Visual Studio Code, the AI Rails skills site, zero-dependency Java CLI scripting, reducing dependencies by reusing source code instead of JARs, the org.json reference implementation reduced to five classes, StackGres and OnGres running Quarkus and GraalVM to manage Postgres on Kubernetes, the Digg Into Java community

    Bruno Borges on twitter: @brunoborges

  24. GlassFish, Corretto, Apple openJDK and Why Standards Beat Hype

    59 Min.Folge 398

    An airhacks.fm conversation with Arun Gupta (@arungupta) about: learning Basic, Pascal, COBOL and C in college, early Java applets connecting to databases via JDBC, joining Sun Microsystems in March 1999 as an …

    Shownotes
    An airhacks.fm conversation with Arun Gupta (@arungupta) about: learning Basic, Pascal, COBOL and C in college, early Java applets connecting to databases via JDBC, joining Sun Microsystems in March 1999 as an RMI/CORBA test engineer, the Portable Object Adapter and IIOP wire protocol, RMI-IIOP for language interoperability, J2EE 1.2 alpha release, JAX-B and JAX-RS testing, J2EE technologies migrating into Java SE, GlassFish as the open-source reference implementation, growing GlassFish downloads from zero to five million in three years, OSGi modularization in GlassFish V3, single-jar Java EE deployment, the Sun Grid early cloud attempt, the Sun Cloud REST API designed by Tim Bray, Red Hat JBoss technical marketing, recording an early docker screencast at Red Hat, Couchbase and the move to Amazon, principal open source technologist role, making Amazon join CNCF, launching Amazon Corretto with James Gosling at Devoxx Belgium 2019, the corretto name meaning coffee with liquor, Apple Open Source Program Office and the internal Apple openJDK fork used across Apple Music and Siri, Intel VP of Open Ecosystem, joining JetBrains as VP of Developer Experience, the book Fostering Open Source Culture, MineCraft Modding with Forge co-authored with his son who keynoted JavaOne at age 10, Devoxx4Kids in the US with over 200 workshops and 5000 kids taught, the not-invented-here syndrome, the conference program committee bias toward new topics, normative JSR specifications using must, shall and must not as a basis for LLM code generation, TCK and reference implementation model, Quarkus modernization of legacy J2EE applications, AGENTS.md and skill files on top of coding agents, running and weight training for mindfulness.

    Arun Gupta on twitter: @arungupta

  25. From CDI TCK to Quarkus MCP Server

    47 Min.Folge 397

    An airhacks.fm conversation with Martin Kouba (@martunek) about: ZX Spectrum Didaktik clone, Basic listings from ABC magazine, Laser Squad and Wall Breaker games, writing a Pascal fantasy strategy game called …

    Shownotes
    An airhacks.fm conversation with Martin Kouba (@martunek) about: ZX Spectrum Didaktik clone, Basic listings from ABC magazine, Laser Squad and Wall Breaker games, writing a Pascal fantasy strategy game called Fury as a teenager, first Java 1.4 contact at university, pushing Java 5 annotations against XML configuration in a first telco job, OC4J as Oracle Application Server with Orion lineage, switching to JBoss, seam framework as glue between backend and frontend, Hibernate, reporting a Seam security issue and being invited to Red Hat, CDI TCK migration from JBoss Test Harness to arquillian and from Subversion to GitHub, writing CDI and Bean Validation TCK with XML-based assertion extraction from the specification text, normative specifications producing high-quality LLM code generation for CDI, JAX-RS and JPA, prototype-first approach to writing API specifications, deprecation annotations needing since-version, removal-version and replacement, asynchronous CDI events and fireAsync, transactional observers, Java SE CDI container standardization and its removal from the MicroProfile Core profile, joining the Quarkus team from day one, building ArC as the build-time CDI implementation, why @Specializes is not supported in Quarkus, Qute templating library, Quarkus WebSocket Next and the limits of the Jakarta WebSocket API, Quarkus scheduler with Duration-based intervals, Quartz integration, Quarkus component test based on Weld JUnit, MCP Java SE STDIO server with zero dependencies using ServiceLoader and Function, building the Quarkiverse MCP server from the first MCP specification version, the missing MCP TCK and the new conformance test suite

    Martin Kouba on twitter: @martunek

  26. Finding Patterns: From Middleware to Modern AI

    60 Min.Folge 396

    An airhacks.fm conversation with Prof. Dr. Michael Stal (/in/drstal/) about: writing a Star Trek Basic game from memory after a context reset, the Z80 chip and assembly programming via a disassembly and …

    Shownotes
    An airhacks.fm conversation with Prof. Dr. Michael Stal (/in/drstal/) about: writing a Star Trek Basic game from memory after a context reset, the Z80 chip and assembly programming via a disassembly and debugging monitor, buying Turbo Pascal directly from a Munich garage 500 meters from home, studying computer science with C and Turbo Pascal, building a functional interpreter for a compiler generator with visual UI at university, joining Siemens for a research project, working on the C++ standardization proposal for meta-information and reflection through source-code instrumentation, the influence on the C++ ISO standard, the path to writing the POSA (Pattern-Oriented Software Architecture) book in 1996 in parallel with the Gang of Four book, coordinating with Erich Gamma to avoid overlap, finding patterns in middleware platforms like COM, DCOM, CORBA, and RMI rather than inventing them, broker, microkernel, pipes and filters, blackboard, layers, publisher-subscriber, forwarder-receiver, client-dispatcher-server, and whole-part patterns, learning Java from Java in a Nutshell by David Flanagan, skepticism about Java replacing C++ that proved wrong, Java Competence Centers at Siemens and Sun Microsystems, Java mobile edition for handsets and the rise of enterprise Java, Siemens application server limited to stateless EJBs, embedded systems at Siemens written in C++ and rust for ICE trains and medical tomographs, Java for enterprise services and monitoring, LLM disillusionment on the Gartner hype cycle, the plateau in transformer-based models, the brute-force compute investment vs specialized models, AGI skepticism rooted in transformer architecture limits and missing context memory and consciousness, physical AI cooperation between Nvidia and Siemens, the n times square root of n attention scaling, the practical context window limits below the advertised million tokens, errors during code generation with Claude Sonnet 4.5, the keep-it-simple principle and Occam's Razor, simplicity as an art, the role of naming, applying patterns to existing systems rather than coding them as building blocks, over-abstraction of HTTP behind custom adapters as an anti-pattern, Convention over Configuration in Quarkus with JAX-RS and Model Context Protocol annotations, grounding LLMs with publicly available Java and Jakarta EE specifications written in normative RFC 2119 language, the Ivar Jacobson BCE (Boundary Control Entity) structure as a stable scaffolding for code generation, vibe coding limited by specification coverage

    Prof. Dr. Michael Stal on LinkedIn: /in/drstal/

  27. From Manchester to Mountain View: Binary Translators, JVMs, and Android

    1 Std. 5 Min.Folge 395

    An airhacks.fm conversation with Ian Rogers (@Ian Rogers) about: ZX Spectrum 128K with rubber keys and a burning side grill, Basic programming competitions, REM commands as ASCII art, PC versus Amiga and …

    Shownotes
    An airhacks.fm conversation with Ian Rogers (@Ian Rogers) about: ZX Spectrum 128K with rubber keys and a burning side grill, Basic programming competitions, REM commands as ASCII art, PC versus Amiga and Archimedes era in the UK, fractal landscape generators for Wing Commander 4 cut scenes, Ocean Software in Manchester and the Head Over Heels game, Manchester Baby and Williams tube as the first stored-program computer, Steve Furber and ARM origins at the University of Manchester, Cosworth and Pi Research Formula One telemetry, transputers and embedded PowerPC data loggers, dynamic binary translation with the Dynamite simulator, ICL 2900 emulation for the Israeli tax system, MIPS to Itanium binary translation for SGI machines, Transitive Corporation and the PowerPC to x86 product that became Apple Rosetta, the Steve Jobs era at Apple, Spark to Power binary translation and the IBM acquisition of Transitive, JDBC versus ODBC API design observations, java.util.Vector and java.util.Hashtable synchronization decisions, StringBuilder array copying overhead from removing synchronization, DARPA HPCS languages Fortress, Chapel, X10, just-in-time parallelization from Java bytecode, LCC compiler from Princeton and the iBerg backend, JikesRVM as a metacircular Java VM written in Java, GNU Classpath and Sable VM by Etienne Gagnon, Apache Harmony port of JikesRVM to Windows, Maxwell and Maxine VMS as GraalVM precursors, Bernd Mathiske and the Sun acquisition by Oracle, GNU Classpath impact of the openJDK GPL release at FOSDEM 2006, Mark Wielaard and Rémi Forax FOSDEM stories, trace compilation and de-optimization parallels with JIT, Azul Systems Vega hardware and concurrent garbage collection, C4 collector design influencing ZGC and Shenandoah, Gil Tene's telephone exchange mentality for JVM responsiveness, page unmapping and signal handler memory pressure problems in HotSpot, Cliff Click and Modular, Google Android Runtime (ART) replacing Dalvik, transactional memory for class initializers in ART, ELF files and OAT format for ahead-of-time compilation, WhatsApp bytecode obfuscation breaking the ART verifier, lock balance verification for speculative lock optimizations, D8 and R8 Android compilers, Goit internal Google bytecode optimizer, Jeremy Manson and Google's OpenJDK variant, Linux kernel performance work and perf tooling, JikesRVM stack trace format making exception-heavy DaCapo benchmarks faster than HotSpot, Energy Efficiency across Programming Languages study comparing Java and Go,

    Ian Rogers on twitter: @Ian Rogers

  28. Migrating Ruby Monoliths to Java, Agentic AI Foundation and MCP

    59 Min.Folge 394

    An airhacks.fm conversation with Manik Surtani (@maniksurtani) about: programming on the BBC Micro with Basic and writing a Trojan horse, GW BASIC and Turbo Pascal on PC, Space Invaders-style games, C++ neural …

    Shownotes
    An airhacks.fm conversation with Manik Surtani (@maniksurtani) about: programming on the BBC Micro with Basic and writing a Trojan horse, GW BASIC and Turbo Pascal on PC, Space Invaders-style games, C++ neural network simulating bat learning behavior at university, PHP e-commerce startup Silk Road Software competing with Intershop in the late 1990s, multi-tenant web shops for UK customers, the dot-com crash and startup failure, first Java job building Virgin Atlantic online check-in and airport kiosks on WebLogic and Oracle, demonstrating a JBoss and MySQL and Linux open source stack to the Virgin Atlantic CTO, contributing to JGroups at the Financial Times and meeting Bela Ban, JBoss Cache tree structure limitations and concurrency issues, rewriting JBoss Cache into Infinispan as a HashMap-based distributed cache, removing reflection overhead and pluggable serialization with Protocol Buffers support, the Hot Rod client-server protocol, joining Square via Bob Lee to migrate a Ruby on Rails monolith to Java microservices for Starbucks payments, multi-DC high availability architecture with red-green deployments, shutting down the Rails monolith with zero downtime using double writes and gradual traffic migration, Block as a polyglot environment with Java and Kotlin and Ruby and Go and python, the Head of Open Source role at Block and establishing an Open Source Programs Office, inner sourcing practices, co-designing gRPC with Google, building and open-sourcing Goose as a coding agent predating Claude Code and Codex, co-designing MCP with Anthropic, founding the Agentic AI Foundation with Anthropic and OpenAI and AWS and Google and Microsoft and Cloudflare and Bloomberg, Block Open Source projects including OkHttp and OkIO and Retrofit, LLMs generating better code with type-safe compiled languages like Java, grounding LLMs against Jakarta EE APIs to reduce hallucinations, Block business units including Square, Cash App, Afterpay and Tidal

    Manik Surtani on twitter: @maniksurtani

  29. Apache PLC4X, Industrial Protocol Drivers, and the JDBC of Industrial Automation

    57 Min.Folge 393

    An airhacks.fm conversation with Christofer Dutz (@christofer-dutz) about: discussion about Apache PLC4X as the JDBC of industrial automation, the API and SPI architecture with Java service loader for driver …

    Shownotes
    An airhacks.fm conversation with Christofer Dutz (@christofer-dutz) about: discussion about Apache PLC4X as the JDBC of industrial automation, the API and SPI architecture with Java service loader for driver discovery, Modbus protocol for HVAC systems and heating devices, PLC4X core API operations including discovery and browsing and reading and writing and subscribing and publishing, multi-language support with PLC4J for Java and PLC4Go for Go and PLC4Py for python and C#, code generation from protocol definitions using language-specific templates, XML-based cross-language unit tests, OPC UA as the Esperanto of industrial protocols versus PLC4X speaking native device protocols, OPC UA overhead causing PLC strain and network congestion, comparison of OPC UA to CORBA and grpc, CORBA IIOP protocol on devices, bidirectional communication for reading sensor data and writing control flags, subscription-based event-driven data collection to reduce PLC polling load, founding ToddySoft to provide commercially supported open source industrial products, the gap between open source libraries and industrial consumption, ToddySoft Connect as bubble-wrapped PLC4X drivers for platforms like Inductive Automation Ignition, eliminating edge gateway boxes on shop floors, native protocol communication reducing network load on 100 Mbit industrial networks, unified namespace concept as JMS for industrial automation, Apache IoTDB as time series database with push queries and callback features, Apache TsFile storage format for writing time series data directly on PLCs, shifting from polling to pushing in industrial data collection, ToddySoft File as C libraries compiled for PLCs, ToddySoft DB as embedded stripped-down IoTDB for edge devices, ToddySoft Edge as the combined platform resembling an application server for industrial automation, Industry 4.0 definition and evolution from manual labor through steam power through PLC automation to connected production, compressed air as a service business model, early failure detection in multi-step production lines, OSGi runtime driver loading, Eclipse Tycho build system difficulties, Kafka Connect PLC connectors, SPS fair in Nuremberg as one of the largest industrial automation fairs, signal theory and Nyquist sampling rate in PLC polling

    Christofer Dutz on twitter: @christofer-dutz

  30. Green Java with Quarkus: Performance Benchmarks, SBOM, and Serverless Architecture

    1 Std. 9 Min.Folge 391

    An airhacks.fm conversation with Holly Cummins (@holly_cummins) about: discussion about Quarkus energy efficiency and performance benchmarks, comparing Quarkus throughput and energy consumption to Spring Boot …

    Shownotes
    An airhacks.fm conversation with Holly Cummins (@holly_cummins) about: discussion about Quarkus energy efficiency and performance benchmarks, comparing Quarkus throughput and energy consumption to Spring Boot, the Quarkus Benchmarks repository and Spring-Quarkus performance comparison repository on GitHub, three times throughput and half the energy consumption with Quarkus, Quarkus build-time optimization and tree shaking, monomorphic vs megamorphic dispatching in the JVM, removing reflection at build time, the reactive core built on Vert.x enabling blocking APIs with reactive scalability, Quarkus dev experience and fast reload, build duration comparison between Quarkus and Spring Boot, the Writing Greener Java Applications white paper, the Energy Efficiency across Programming Languages study, Java ranking among the most energy-efficient languages, carbon-aware dispatching and Electricity Maps, zombie deployments and kubernetes cluster waste, serverless architecture with Quarkus on AWS Lambda, SnapStart for sub-second cold starts, Provisioned Concurrency cost savings, GraalVM native binaries vs JVM mode in serverless environments, CycloneDX SBOM generation in Quarkus, build-time vs runtime configuration for ISO 27001 security certification, Kruize Autotune for JVM hyperparameter optimization, JVM tuning folk wisdom and the copy-paste typo anecdote, Francesco Nigro's performance optimization work across the stack from assembly to JVM, Jeff Mesnil leading JBoss energy efficiency efforts, cheese fondue recipe, UK chocolate and Cadbury Roses

    Holly Cummins on twitter: @holly_cummins

Hier stehen die neuesten 40 von 421 Folgen. Ältere Folgen findest du im Feed des Podcasts.

Ist das dein Podcast?

Bestätige es mit einem Eintrag in deinem Feed: Du bekommst hier einen Code, trägst ihn als podcast:txt in den Kanal deines Feeds ein, und wir prüfen ihn. Danach steht dein Podcast als „verifiziert“ bei SoundNode.

Einstellungen

Darstellung

Sprache

Bestimmt, welche Sender dir auf der Startseite zuerst gezeigt werden.

Verlauf

Zuletzt gehörte Sender und Folgen und deine letzten Suchen liegen nur in diesem Browser.

Hinweise

Ein kurzer Hinweis, wenn ein Podcast, dem du folgst, eine neue Folge hat. Einzelne Podcasts stellst du über die Glocke auf ihrer Seite ab.

Konto

Favoriten speichern – in der App und auf der Website.

Tastenkürzel

/
Suche öffnen
Leertaste
Abspielen oder anhalten
← →
Im Player: 15 s zurück, 30 s vor (Folgen) · im Regal: nächste Kachel
↑ ↓
Im Regal: Ziel innerhalb der Kachel
Pos1 / Ende
Im Regal: erste bzw. letzte Kachel
Esc
Fenster oder Menü schließen
?
Diese Übersicht
Läuft gerade

Zur Senderseite

Als Nächstes

    Folgen mit „Als Nächstes“ vormerken – sie laufen nach der aktuellen Folge.