API Enrichment in Event Processing

December 2nd, 2024

Creating an Apache Flink job using IBM Event Processing that identifies customer retention opportunities

This is a demo of IBM Event Processing that I gave today. The focus was meant to be how API Enrichment (enriching a stream of events with reference data from external sources) can inform the processing of your Flink job, but it ended up being a useful example of filtering and transforming, too.


narrated demo at youtu.be/mzlQZBVg6HA

Read the rest of this entry »

Using Kafka Streams for a Kafka Event Projection

December 2nd, 2024

In this post, I’ll walk through a sample implementation of Kafka Streams to maintain an Event Projection. I’ll use this to illustrate when this is a suitable approach to use.

I’ve written similar Event Projection posts about sample implementations that use an in-memory lookup table, and a PostgreSQL database.

The objective for this demo

I introduced the pattern of Event Projections in Comparing approaches to maintaining an Event Projection from Kafka topics.

I also explained the scenario that I’ve been using for each of my Event Projections demos. If you haven’t seen my other posts, it may help to go back and see the scenario detail and motivation first.

In short, I’m showing how to maintain a projection of two Kafka topics (one based on the event key, the other based on an attribute in the event payload). And I’m showing how an application could make an HTTP/REST call to retrieve the data from the most recent event that matches some query.

At a high-level, the goal for this demo is to:

  • use Kafka Streams to maintain a projection of the Kafka topics
  • provide an HTTP/REST API for querying the projection

Read the rest of this entry »

Stuff I got this year (and loved)

November 30th, 2024

It’s Thanksgiving, so time to reflect on what I’m thankful for.

Okay, I’m not American… but I work for an American company and have a lot of American colleagues, so this week has been quieter than usual – that helped put me in a thankful mood! I thought I’d share some of the stuff I got this year that I have loved more than I expected.

Read the rest of this entry »

Using a database for a Kafka Event Projection

November 29th, 2024

In this post, I’ll walk through a sample implementation of using a database to maintain an Event Projection. I’ll use this to illustrate when this is a suitable approach to use.

The objective for this demo

In Comparing approaches to maintaining an Event Projection from Kafka topics, I introduced the pattern of Event Projections.

I also introduced the scenario that I’ll be using in these demos. Please see that post for the detail and motivation, but to recap, I want to maintain a projection of two Kafka topics (one based on the event key, the other based on an attribute in the event payload).

In both cases, I want to be able to make an HTTP/REST call to retrieve the data from the most recent event that matches my query.

At a high-level, the goal was to:

  • use Kafka Connect JDBC sink connectors to maintain a database projection of the Kafka topics
  • provide an HTTP/REST API for querying the projection

Read the rest of this entry »

Using an in-memory lookup table for a Kafka Event Projection

November 28th, 2024

In this post, I’ll walk through a sample implementation of the simplest way to maintain an Event Projection: an in-memory lookup table. I’ll use this sample to illustrate when this is a suitable approach to use.

The objective for this demo

In Comparing approaches to maintaining an Event Projection from Kafka topics, I introduced the pattern of Event Projections.

I also introduced the scenario that I’ll be using in these demos. Please see that post for the detail and motivation, but to recap: I will maintain a projection of the data from two Kafka topics (one based on the event key, the other based on an attribute in the event payload).

In both cases, I want to be able to make an HTTP/REST call to retrieve the data that was in the most recent event to match my query.

At a high-level, the goal was to create a single server that will:

  • subscribe to my Kafka topics
  • maintain an in-memory lookup of the relevant data
  • provide an HTTP/REST API for querying the projection

For demo purposes, my “application” will be curl, so I can illustrate being able to query the projection like this.

Read the rest of this entry »

Comparing approaches to maintaining an Event Projection from Kafka topics

November 28th, 2024

This is the first in a series of posts exploring different approaches to implementing the Event Projections pattern with Apache Kafka.

In this first post, I’ll introduce what Event Projections are, and outline some of the benefits of the Event Projections pattern.

Finally, I’ll introduce the scenario that I’ll be using to illustrate the pros and cons of different approaches in later posts.

Read the rest of this entry »

Using MobileNet in Scratch

November 25th, 2024


Screen recording at youtu.be/cpCeaR9KTF8

MobileNet is a light-weight machine learning model for performing image classification.

In this Machine Learning for Kids project, students can try MobileNet for themselves using the familiar educational low-code programming language Scratch.

Read the rest of this entry »

Focusing on my health

November 23rd, 2024

TLDR: I’ve been getting healthier this year. It’s gone well, and I’m pleased… so pleased that I feel the need to look back at what I’ve done.

Read the rest of this entry »