
airhacks.fm podcast with adam bien
Java, Serverless, Clouds, Architecture and Web conversations with Adam Bien
Latest episodes

Nov 24, 2019 • 1h 1min
NodeJS, MicroProfile and Java Cloud Native Starter
Subscribe to airhacks.fm podcast via:
spotify|
iTunes|
RSS
An airhacks.fm conversation with Niklas Heidloff (@nheidloff) about:
Changing the font color with Basic on C64, playing Frogger,
serious programming with Turbo Pascal on PC 80286,
developing a shooter UFO game, writing a school magazine with MS Word, Graphical User Interfaces with Turbo Pascal, studying Computer Science in Paderborn,
25 years ago everything was already developed, Thomas J. Watson: 'I think there is a world market for about five computers',
collaboration technologies at the university, IBM Notes, productive development with IBM Notes Domino,
working with a startup and the Lotus Workflow product, the very first Java User Interface for the Workflow tool, startup was acquired by IBM, the 60% more paycheque,
Lotus Notes was one of the first NoSQL databases, CouchDB is based on Lotus Notes ideas, the out-of-the-box experience of Lotus Domino was great,
also OpenShift comes with great user experience, Lotus Notes had good replication capabilities,
Java is is a lightweight and clean programming language, Applets were too buggy,
ProcessWare became Lotus Workflow, growing without a reason, leading the frontend team for WebSphere Workflow, the interesting Visual Age for Java IDE,
IBM Alphaworks and DeveloperWorks,
Jikes - the fast Java Compiler, drawing boxes is not a exciting as developing software, growing the Lotus Notes community, openntf.org,
learning from Eclipse and Apache, Lotus Notes business was sold to HCL, the RedHat opensource model, moving from Lotus Notes to Cloud Architectures,
joining the IBM Emerging Technologies Organization and the Developer Outreach "Cloud Native" Team, building samples and traveling to international conferences, the Java Cloud Native Starter,
the one end-to-end enterprise Java Cloud Native application, Kubernetes, OpenShift, Docker, Maven, MicroProfile, Kiali, Quarkus, installation scripts, vue.js and traffic routing with istio,
the overlap between MicroProfile and Istio, the article by Emily Jiang,
MicroProfile, NodeJS vs. MicroProfile, the NodeJS innovation,
Niklas Heidloff on twitter: @nheidloff, Niklas' blog: heidloff.net, Niklas on github: https://github.com/nheidloff

Nov 17, 2019 • 1h 12min
Modules, Interfaces and Microservices
An airhacks.fm conversation with Mark Struberg (@struberg) about:
Mark loves microservices, "if all you have is a hammer, everything looks like a nail", by Abraham Maslow,
Hype Driven Development, the right size of a Microservice, splitting an application with Apache Maven, interfaces and DTOs, structuring a monolith, the killer argument against modules,
interfaces with a single implementation, what if all the modules have the same version, testing against interfaces, pure unit tests are problematic in microservice world, avoid testing mocks,
most problems and errors are in the database, System Tests in production-near environment over CDI Unit,
Arquillian and Delta Spike, the overhead of Kubernetes,
there are projects which require scaling others do not have such requirements,
KVM over Kubernetes, testing locally vs. in production-like environment, Kubernetes is not only about load and scaling,
Kubernetes is about management and sysadmins productivity, the main problem in business projects is overengineering,
"Anything that can go wrong will go wrong": Murphy's Law,
200 errors per second, coursing about EJB and Java Enterprise, back to synchronous programming, transaction optimizations could be problematic, generating superfluous code with lombok, the "open session in view" pattern,
transactions on JSF actions, in many use cases transactions are started on a too deep level, SOA and transaction boundaries, the fallacies of distributed computing, even larger projects have 10 microservices at most,
there is no big company with a single, big monolith, staying local comes with the comfort of transactions, large amount of microservices is problematic, in 5 years we are going to reeingineer microservices into something different,
everyone hates SOA now, everyone loved SOA back then, the saga pattern and compensating transactions,
Jeff Bezos note on microservices from 2002, the benefits of microservices, the big bang Jakarta EE migration,
the automatic package transformation with classloader, runnning old JARs on new namespaces, MicroProfile moves and iterates faster, Jakarta EE's release cadence is less frequent, the definition of "done" and micro frontends:
Mark Struberg on twitter: @struberg and github: https://github.com/struberg. Mark's blog: https://struberg.wordpress.com/.

Nov 10, 2019 • 1h 9min
Forever Young and Java on an iPad
An airhacks.fm conversation with Anton Epple (@monacotoni) about:
CPC 464 Schneider, gerontology,
the Hello World in hospital with 12 in Basic, the amazing experience of teaching machine to do something, the great War Games movie,
typing a skiing game with ASCII graphics from a magazine in a hospital, listening and generating a computer sound,
how to make a piano teacher cry, piano is too direct for a programmer, sending a listing to Schneider Magazine with 14 years without any success,
writing the F... and Die game with 14-15, Payara is to slow for CPC, driving in a car through Poland during NetBeans WorldTour,
how to become really old, drawing cartoons of a teacher can be dangerous, math teacher's hate, a short deviation of becoming a programmer by studying biology,
the 600 theories of aging, DNA analysis with Perl, Computer Science over biology, the Netbeans User Group Munich,
Java EE causes attendee's overflow, working with Microsoft Java, Visual J++, working on Bibliosphere
to visualize connections between genes in 3D, loving Java from the beginning, the fights between Perl and Java,
discovering Forte4j, using NetBeans platform for building desktop applications,
NetBeans is productivity without the need of plugin installation, the consultant for biology-related and genetic applications without clients, profanities in comments,
the 1h consulting job, NetBeans Platform was used heavily in traffic control, defence and military applications,
Java FX on Android and iOS, JavaFX runs on an iPad on JavaONE's 2011 keynote,
Mobile Application Framework (MAF) from Oracle was preferred over Java FX,
Johan Vos and Co.took over JavaFX and continue the development, Jaroslav Tulach wanted to run Java in Browser -- and how Bck2Brwsr happened,
Bck2Brwsr is a Java to JavaScript transpiler, Jaroslav's MVVM pattern separated the View from the presentation logic written in Java,
you never had to interact with the widgets in Java code, DOM properties are listening to Java-based model - the Model View-ViewModel pattern,
with Dukescript you can write presentation logic in Java and bind it to web standards like e.g. WebComponents, Onsen UI provides the widgets,
Java based models are JSON-serializable, client Java models are reusable on the server, there is no duplication,
Dukescript allows the execution in browser as transpiled JavaScript and on the server as Java running in the VM,
Dukescript was started in 2013, Dukescript won the Duke Innovation Awards, the Smart Access Solutions startup,
Dukescript could provide bindings to native UIs - similar to React Native, NetBeans comes with native Dukescript support, either you have time,
or you have money, buying support prevents forks and might be cheaper over time,
Anton Epple on twitter: @monacotoni, Toni's newstartup and the award-winning dukescript.com

Nov 3, 2019 • 1h 9min
Java EE, Jakarta EE, MicroProfile and the Big Bang
An airhacks.fm conversation with Kevin Sutter (@kwsutter) about:
C64 for gaming - Datasette included with 16,
how to break in and modify the code,
the high school teletype course in Basic on serious machines in Austin Minnesota,
applied math in high school, compute science degree in Pascal at the University of Wisconsin,
working for Sperry and the merger with Burroughs,
information and systems and Unisys,
writing code in Pascal-like language, writing chip-design simulators in Alabama, the best software engineering project award, SOM and DSOM,
(not ISAM) IBM buys Transarc, from Transarc to WebSphere,
the "bring up lab" - the early CI / CD, the performance boost of JDK 1.1.8, the Java Connector Architecture (JCA) for JDBC and JMS around 2000,
working on caching, data grid, object grid, and eXtreme Scale with Billy Newport, WebSphere eXtreme Scale
and "Eventual Consistency", leading the JPA spec and the first opensource interaction around 2005,
BEA donates kodo to apache which became openJPA,
the convenient way to become a committer, Java is nicer than C++, IBM buys Gluecode - the company which provides commercial support for the Geronimo Application Server,
David Blevins worked on openEJB at the same time, becoming a Java EE architect for WebSphere product in 2013,
the development with OpenLiberty is more fun, IBM moves to EclipseLink but still supports openJPA, Microprofile involvement,
Microprofile became immediately popular, Ian Robinson and Mark Little met at Devoxx UK and started the initial conversation about MicroProfile in 2016,
MicroProfile 1.0 started with JSON-P, CDI and JAX-RS APIs from Java EE, Oracle proposes the opensourcing of Java EE, the meeting with Oracle in London to talk about opensourcing Java EE,
behind the scenes of the Big Bang "javax" migration to "jakarta", the relation between the steering committee and the platform group, the relation between Jakarta EE and MicroProfile,
the advantages of keeping Jakarta EE and MicroProfile separate, opentracing.io became opentelemetry which affects MicroProfile distributed tracing,
MicroProfile iterates faster than Jakarta EE, from opentracing.io to opentelemetry.io,
SOAP deprecation, openJPA started from a project named KODO, the openliberty guides, microprofile.io and jakarta.ee, start.microprofile.io,
Jakarta EE Blogs
Kevin Sutter on twitter: @kwsutter and github: https://github.com/kwsutter

Oct 28, 2019 • 1h 6min
Blockchain, Heavy Metal and Testcontainers
An airhacks.fm conversation with Kevin Wittek (@kiview) about:
typing with 3 on a terminal, 486 for playing DOS games,
radio controlled cars for fathers, RC car races with transponders,
worldcup in beijing, hawaii, las vegas, tamiya,
kyosho, professional competition RC cars by Mugen Seiki,
playing civilization-like game, switching from PCs to console gaming,
starting with Quick Basic programming at highschool,
writing text adventures with Quick Basic and huge if-else blocks,
advent calendar with Quick Basic, switching from Quick Basic to Java 1.4,
a coffee lover without aeropress,
aeropress and aerospace technology, aerobie frizbies,
teaching polymorphic dispatches at highschool, who cares about object orientation,
bluej programming learning environment, the great scratch IDE,
manipulating the ASCII characters might not be the future, sometimes it is better to manipulate the
Abstract Syntax Tree (AST) directly, writing a ZIP-compressor in Java, studying in Gelsenkirchen-the Java-focussed university,
writing Android software for Museums, Museums don't have money,
writing fraud detection services for GData, banking trojan detection was really successful,
leading the blockchain research group, having a dream job, lazy loading the PhD topic,
assessing the non-functional aspects of a blockchain system,
why Groovy is a pragmatic language,
Groovy started as an ergonomic version of Java, playing e-guitar at a heavy metal band "Iron Kobra",
Rush, Deep Purple, Led Zeppelin, and a bit Metallica, one of the best guitar players is Uli Jon Roth from the German Scorpions band,
starting to play guitar with 16, starting with TNT from AC/DC,
software engineering is like playing blues, the SoCraTes Conference, the JUnit 5 extension for Docker,
the beginnings as TestContainers committer, Richard North was the initiator of the TestContainers project,
TestContainers started in a blockchain-related project, TestContainers project was written
in Java from the beginning, TestContainers started with JUnit 4 integration, the TestContainers project has actually
nothing todo with testing, ephemeral container concept is built-in into the testcontainers, the docker container
is going to be removed after the JVM exits, ryuk is a side container which watches the actual container,
when the JVM stops sending the heartbeat - ryuk will remove the container, GraalVM might replace Go in the sidecontainer, testcontainers gives strong guarantees about readiness,
testcontainer ships with multiple probes / wait strategies: log-based wait strategy, port-based wait strategy, docker health-check strategy,
testcontainers ships with container communication API, in the case of a database testcontainer will provide a JDBC-URL,
testcontainer can is able to start DB on demand by using the JDBC driver, testcontainer also works with remote Docker daemons,
testcontainer is using the REST interface to communicate with Docker, the switch from Netty to OkHTTP,
testcontainers relies on Docker Java,
hardcoding functionality in a project is the right choice at the beginning, testcontainers has to be refactored into two parts,
testcontainer's 2.0 goal are distinct APIs for testing and container orchestration, windows support was a challenge, testcontainers supports windows, linux and MacOS,
the testcontainers team is using Macs for local development, azure pipelines is used to test windows,
Kevin Wittek on twitter: @kiview, on github https://github.com/kiview and Kevin's blog.

Oct 20, 2019 • 1h 20min
Helidon: Never Block The Thread
An airhacks.fm conversation with Tomas Langer (@langer_tomas) about:
The first line of code was in Basic on Atari 800 XE in 1989,
computer club for kids in Prague, the programming accident in Java, studying and working for 16h a day, early interests in application servers,
joining BEA Systems in 2003 and starting with version 6, the weblogic.jar and the weblogic "thin client" jar,
the only BEA consultant in eastern Europe, Oracle's acquisition was a big change, leaving Oracle and moving to AVG for building custom application servers,
starting at HomeCredit to develop with WebLogic, service buses and Co.,
joining a JavaONE conference session with Josh Long about SpringBoot, what is the purpose of FatJARs, one application per server, WebLogic became bigger over time, hollow JARs are explainable,
about the costs of running application servers in the cloud, the deconstruction of the application server, how clustering became obsolete, application servers and docker layers, separation of business logic and infrastructure, the superfluous deployment machinery,
the idea of a single application, the complicated application server's classloading, helidon only relies on the system ClassLoader, cloud features without clouds, starting at Oracle again, Airport, Prime, J4C and Helidon,
helidon was fully opensourced in February, 2019, the origin Helidon idea was to be a cloud platform,
Helidon's security is similar to WebLogic 8-9 security model, helidon separates between the user and service accounts, helidon's outbound security is automated,
helidon was designed with docker in mind, helidon supports hollow jars and so directly the Docker layering, FatJARs are not worth the trouble, bare metal is the killer use case for FatJARs,
hardcore classloaders are problematic with GraalVM, Helidon supports MicroProfile 3.0 all parts of it, merging all infrastructural modules in a single JAR is dangerous - beans.xml and class clashes are possible,
helidon comes with JWT support fo outbound communication, in helidon you can provide you own main method, helidon comes with two modes: MicroProfile and Java SE, helidon is just a set of libraries,
one library happens to be the server -- but is optional, helidon started as a Java SE platform only - microprofile came later, helidon was inspired by expressjs, trying to replicate the express experience,
helidon ported the Java 9 flow API to Java 8 (by renaming the package) to backport the user experience, helidon uses the event loop of netty - never block the thread, most of Jakarta EE and Java SE libraries are not reactive,
Java SE and MicroProfile modes can be used at the same time, helidon Java SE application is directly compilable with GraalVM to native image, Helidon 2.0 will come with native compilation support of MicroProfile,
commercial support for Helidon will be probably possible, Helidon team answers questions on slack channel, no-one is interested in providing support of outdated software,
MicroProfile is volatile - backward compatibility can be a challenge,
Tomas Langer on twitter: @langer_tomas and on github: https://github.com/tomas-langer

Oct 13, 2019 • 1h 11min
DBs-ium, CDC and Streaming
An airhacks.fm conversation with Gunnar Morling (@gunnarmorling) about:
The first Debezium commit, Randal Hauch, DBs-iuim, Java Content Repository JCR / modshape,
exploring the Change Data Capture (CDC), how Debezium started, the MySQL binlog,
the logical decoding in Postgres, Oracle Advanced Queuing,
update triggers, Java Message System (JMS), there is no read detection, switching the current user at JDBC connection for audit purposes, helping Debezium with additional metadata table,
using Kafka Streams to join the metadata and the payload, installing the logical decoding plugins into PostgreSQL,
logical decoding plugin exposes the data from the write ahead log, decoding into protocol buffers with decoderbufs,
in cloud environments like e.g. Amazon RDS you are not allowed to install any plugins, wal2json is verbose but comes preinstalled on RDS,
pgoutput is responsible for the actual decoding of the events, debezium only sees committed transactions, debezium is mainly written in Java,
decoderbufs was written by community and included to debezium, Debezium communicates with Postgres via the JDBC / Postgres API, pgoutput format is converted into Kafka Connector source format,
Kafka Connect is a framework for running connectors, Kafka Connect comes with sink and source connectors,
Kafka Connect comes with connector specific connectors like e.g. StringConverter, Converters are not Serializers,
Debezium ships as Kafka Connect plugin, Kafka Connector runs as standalone process, running Debezium in embedded mode, JPA cache invalidation with Debezium, converting Debezium events into CDI events,
converting database changes to WebSockets events, database polling vs the Debezium approach, DB2 will support Debezium, Oracle support is "on the horizon", Oracle LogmMiner,
Oracle XStream, Debezium supports Microsoft SQL Server (starting with Enterprise license),
Apache Pulsar comes with Debezium out-of-the-box, Pulsar IO, running Debezium as standalone service with outbounds APIs,
MongoDB supports the "Debezium Change Event Format", Kafka Sink connectors are easy to implement, Debezium embedded mode and offsets,
embedded connector has to remember the offset, an offset API is available for embedded Debezium connectors, combining CDC with Kafka Streams, Quarkus supports Kafka Streams and Reactive Messaging,
Quarkus and Kafka Streams, Quarkus supports Kafka Streams in dev mode, replacing Hibernate Envers with Debezium,
Messaging vs. Streaming or JMS vs. Kafka, Kafka is a database, the possible Debezium features, Cassandra support is coming,
Outbox pattern is going to be better supported, transactional event grouping, dedicated topic for transaction demarcations,
commercial support for Debezium, Debezium exposes JMX metrics,
Five Advantages of Log-Based Change Data Capture, Reliable Microservices Data Exchange With the Outbox Pattern,
Automating Cache Invalidation With Change Data Capture
Gunnar Morling on twitter: @gunnarmorling and github: https://github.com/gunnarmorling. Gunnar's blog: https://morling.dev/.

Oct 6, 2019 • 1h 21min
Jason's Binding and Fast, Greek Birds
An airhacks.fm conversation with Dmitry Kornilov (@m0mus) about:
Programming mother and Basic "print", pl 1 on mainframes, enjoying the creativity of programming,
developing Tetris with 12, enjoying one of the first XT PCs in Russia in 1985, using pupil testing applications at school,
enjoying the power of the key to the computer room, using the Russian computer: BK-0010,
using Pascal at high school and Delphi in leisure,
clipper,
Delphi was unbeatable at that time, Delphi is still supported by Embarcadero,
Borland Delphi started in 1995,
Turbo Vision the library for creation of DOS-based UI, studying applied mathematics at the aviation university,
building a F-19 Stealth Fighter simulator at the Aviation University in C/C++,
by solving 9 to 11 differential equations you could simulate an airplane, creating a graphic library to draw primitives in assembler to improve performance,
building automation systems for resorts in Czech Republic in ASP.net and C#, creating a casino application as PoC in J2EE, Linux and WebLogic Server 7,
Tetris as Applets, enjoying JBuilder IDE, starting with EJB 1.0, Bean Managed Persistence (BMP) later Container Manager Persistence (CMP),
working as freelancer in J2EE space, starting at Oracle at EclipseLink team and creating the second version of JPA-RS,
starting with JSON-B and yasson, JSON-B was created by a team of 2 developers,
the JakartaONE livestream, session: "JSON support in Jakarta EE: Present and Future",
the AirPort, Prime and Helidon, Helidon got MicroProfile, Airport started around 2015, Helidon had a great potential what was recognized by management,
Helidon supports Java SE and MicroProfile programming models,
Oracle had no viable strategy for WLS customers which wanted to try something else - Helidon fills the gap, J4C - Java For Clouds was the name of the runtime before Helidon,
Helidon is the name of a small and fast bird: the swallow, the helidon.io website was created by Oracle's webdesigners,
Helidon Java SE is targetted for developers who are bored by Java EE programming model, fat jars don't make any sense, Helidon is a hollow-JAR and so can be deployed as layered Docker image,
Dmitry Kornilov on twitter: @m0mus. Dmitry's blog: https://dmitrykornilov.net

Sep 29, 2019 • 1h 5min
SAP, ODATA, OpenSource and Apache Olingo
An airhacks.fm conversation with Michael Bolz (@onemibo ) about:
The first line of Turbo Pascal in 1992, 286 Compaq with a Turbo button, writing an installer for friends, C64 vs. PC,
Jump and Run without jumping, writing some HTML code with DreamWeaver, What You See is NOT what you get, studying at the University of Applied Sciences in Karlsruhe,
building web based applications with Struts, Java is easier to learn than C/C++, starting with "public static void main",
then managing students with Java, writing UI tools in Swing / AWT for applying patches in CMS, JSF vs. Struts, the steinbeis foundation
system migration from EJB 2.1 to EJB 3.1 in 2008, EJB 2.1 required code generation with xdoclet - and EJB 3.1 was nice, Heidelberg is nicer than Karlsruhe,
the JAX 2012 meeting with JMS expert Ruediger zu Dohna, simplifications with JMS 2.X, copying museum code from the internet, copy and paste oriented programming, working for SAP, opensource at SAP,
starting Apache Olingo, the ODATA specification for accessing backends, backend for frontends, ODATA is queryable database,
ODATA exposes CRUD+ operations as standardised REST interface, Olingo is ODATA implementation for Java, Olingo is a raccoon, Olingo team started with 4 developers,
ODATA v4 is an OASIS standard, ODATA v4 is mostly based on JSON, 2 developers are currently maintaining Olingo, JPA extension only exists for the Olingo v2 and not v4,
most SAP services are available as ODATA endpoints, SAP's UI5 components can be also bound to ODATA, SAP UI5 widgets are also available as SAP ui5 WebComponents,
MaxDB, teaching ABAP developers Java, nightly conversations about the R3 VM,
in ThinWARs there is nothing to scan,
removing unwanted dependencies is a good idea, Vulnerability Assessment Tool (Vulas) by SAP research,
Vulas is going to be donated to Eclipse Foundation, Vulas scans transitive dependencies as well as the source code of the dependencies,
SAP runs a lot of Java apps internally, Olingo comprises two parts - the metadata and the execution part,
Olingo v2 comes with JPA extension and a Servlet as entry point, Microsoft contributed the Olingo client, Java Annotation extension for Apache Olingo V2,
Olingo is open for contributions, it is a good idea to discuss new features on the mailing list first, new Olingo features must be backward compatible,
this podcast episode was triggered by 66th airhacks.tv Q&A,
Michael Bolz on twitter: @onemibo

Sep 23, 2019 • 31min
JavaONE vs. CodeONE 2019
An airhacks.fm conversation with Sebastian Daschner (@sdaschner) about:
CodeONE 2019, "Thoughts on efficient enterprise testing" blog series,
project valhalla, multiline string / text block (JEP 355),
kubernetes telepresence, Jessica Pointing on Quantum Computing,
Oracle's New Supercomputer with 1060 Raspberry Pis,
Developing Open Cloud Native Microservices free book
Sebastian Daschner on twitter: @sdaschner, and Sebastian's blog: blog.sebastian-daschner.com
Remember Everything You Learn from Podcasts
Save insights instantly, chat with episodes, and build lasting knowledge - all powered by AI.