<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pieter Humphrey on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/pieter-humphrey/</link><description>Articles written by Pieter Humphrey on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 23 Jan 2024 13:03:18 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/pieter-humphrey/index.xml" rel="self" type="application/rss+xml"/><item><title>MariaDB Java Connector, Benchmark, and Java 21 virtual threads</title><link>https://foojayio.github.io/website/today/benchmark-jdbc-connectors-and-java-21-virtual-threads/</link><pubDate>Tue, 23 Jan 2024 13:03:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/benchmark-jdbc-connectors-and-java-21-virtual-threads/</guid><description>&lt;p&gt;Why should Java and database developers care about Virtual Threads? Developers can write faster and more resource efficient applications without having to refactor synchronous code a.k.a. &amp;ldquo;imperative&amp;rdquo;) JDBC code into asynchronous (a.k.a &amp;ldquo;reactive&amp;rdquo;) code that is hard to create, debug and maintain.&lt;/p&gt;
&lt;p&gt;Writing scalable network code is always difficult. Synchronous APIs can&amp;rsquo;t be scaled beyond a certain point because they can block when performing I/O operations, which in turn block the thread until the operation is ready. For example, if you try to read data from a socket when no data is available, the thread will freeze until data becomes available. Threads are also an expensive resource on the Java platform, so we don&amp;rsquo;t want to force them to wait for I/O operations to complete. To avoid these limitations, we typically use asynchronous or reactive I/O frameworks such as Project Reactor, RxJava, or Vert.x and connectors like R2DBC. These frameworks allow us to write code that doesn&amp;rsquo;t block a thread during an I/O operation, but instead uses a callback or event notification to notify the code when the I/O operation is complete or ready.&lt;/p&gt;</description></item><item><title>Available Now - gRPC for Apache Cassandra</title><link>https://foojayio.github.io/website/today/available-now-grpc-for-apache-cassandra/</link><pubDate>Thu, 07 Jul 2022 07:38:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/available-now-grpc-for-apache-cassandra/</guid><description>&lt;p&gt;&lt;strong&gt;Build microservices easily with the NoSQL standard database&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are like most developers, you are embracing applications built using microservices and a NoSQL database. There are many good reasons: faster time to market, lower total cost of ownership, better performance, less downtime, and easy scalability.&lt;/p&gt;
&lt;p&gt;Creating cloud-native applications is hard because microservices are often written in different languages, database drivers have a maintenance burden, or familiar HTTP APIs lack the performance needed.&lt;/p&gt;</description></item><item><title>Why a Serverless Data API Might be Your Next Database</title><link>https://foojayio.github.io/website/today/why-a-serverless-data-api-might-be-your-next-database/</link><pubDate>Wed, 01 Dec 2021 14:53:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-a-serverless-data-api-might-be-your-next-database/</guid><description>&lt;p&gt;App development stacks have been improving so rapidly and effectively that today there are a number of easy, straightforward paths to push code to production, on the cloud platform of your choice. But what use are applications without the data that users interact with? Persistent data is such an indispensable piece of the IT puzzle that it&amp;rsquo;s perhaps the reason the other pieces even exist.&lt;/p&gt;
&lt;p&gt;Enter cloud and internet scale requirements, essentially mandating that back-end services must be independently scalable / modular subsystems to succeed. Traditionally, this requirement has been difficult in the extreme for stateful systems. No doubt, database as-a-service (DBaaS) has made provisioning, operations, and security easier. But as anyone who has tried to run databases on Kubernetes will tell you: auto scaling databases, especially ones that are easy for developers to use, remain out of reach for mere mortals.&lt;/p&gt;</description></item><item><title>K8ssandra: Production-Ready Platform for Cassandra on Kubernetes</title><link>https://foojayio.github.io/website/today/k8ssandra-production-ready-platform-for-running-apache-cassandra-on-kubernetes/</link><pubDate>Wed, 24 Nov 2021 09:45:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/k8ssandra-production-ready-platform-for-running-apache-cassandra-on-kubernetes/</guid><description>&lt;p&gt;&lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
, an open-source distribution of Apache Cassandra for Kubernetes, aims to provide a &amp;ldquo;production-ready platform&amp;rdquo;, and this includes automation for operational tasks such as repairs, backups, and monitoring. Cassandra is a distributed NoSQL database designed for global scale and fault tolerance for the most demanding applications on the planet, written in Java.&lt;/p&gt;
&lt;p&gt;K8ssandra is deployed using Helm and supports stateful workloads out of the box, which enables database administrators (DBAs) and site reliability engineers (SREs) to set up and operate Cassandra clusters using best practices in a Kubernetes environment.&lt;/p&gt;</description></item><item><title>Best Practices for Data Pipeline Error Handling in Apache NiFi</title><link>https://foojayio.github.io/website/today/best-practices-for-data-pipeline-error-handling-in-apache-nifi/</link><pubDate>Thu, 15 Jul 2021 05:25:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/best-practices-for-data-pipeline-error-handling-in-apache-nifi/</guid><description>&lt;p&gt;&lt;strong&gt;Learn actionable strategies for error management modeling in Apache NiFi data pipelines, and understand the benefits of planning for error handling.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;According to a &lt;a href="https://www.mckinsey.com/business-functions/mckinsey-analytics/our-insights/achieving-business-impact-with-data" target="_blank" rel="noopener noreferrer"&gt;McKinsey&lt;/a&gt;
 report, &amp;ldquo;the best analytics are worth nothing with bad data&amp;rdquo;. We as data engineers and developers know this simply as &amp;ldquo;garbage in, garbage out&amp;rdquo;. Today, with the success of the cloud, data sources are many and varied. Data pipelines help us to consolidate data from these different sources and work on it. However, we must ensure that the data used is of good quality. As data engineers, we mold data into the right shape, size, and type with high attention to detail.&lt;/p&gt;</description></item></channel></rss>