# alasdairb.com > The blog of Al Brown. Posts about data, developer experience, and tooling. ## Posts - [is-ai-agent for Rust: detect if your CLI is invoked by an agent](https://alasdairb.com/posts/is-ai-agent-rust-crate): AI agents are the new users of CLIs. I published a new Rust crate is-ai-agent to let CLIs know when they're being used by AI. - [Agent Experience: Building a CLI for ClickHouse](https://alasdairb.com/posts/agent-experience-building-a-cli): AX is the new DX. I've been noodling on an experimental CLI for ClickHouse to improve my life working with agents. - [How to create a Python Processor in Apache NiFi 2](https://alasdairb.com/posts/building-a-nifi-processor-in-python): Apache NiFi 2 added support for Python Processors, here's how to create a NiFi dev environment and install a custom Python Processor - [Conversations with 200+ people at Kafka Summit](https://alasdairb.com/posts/200-conversation-at-kafka-summit): I spent 2 long days at Kafka Summit 2024 and spoke with over 200 practitioners. Here are the four themes that came up most. - [Keeping up with WarpStream](https://alasdairb.com/posts/keeping-up-with-warpstream): WarpStream is an interesting cloud-native Kafka alternative that is challenging the assumptions of the past. Here's why it matters. - [There is no Data Engineering roadmap](https://alasdairb.com/posts/there-is-no-data-engineering-roadmap): Data Engineering is booming and many are looking for a cheat sheet to get started. Do you really need to learn 200 tools before you get your first job? - [The (lacking) future of ETL](https://alasdairb.com/posts/the-lacking-future-of-etl): ETL provides no real value, it's just really expensive glue. So-called 'Zero-ETL' has the potential to free up so much $$$. - [My take on Developer Experience](https://alasdairb.com/posts/my-take-on-developer-experience): Developer Experience does not mean ‘does this look pretty’ or even ‘does this solve a problem’. It means ‘does this help you solve the problem’. - [Mixing it up with Tinybird.co](https://alasdairb.com/posts/mixing-it-up-with-tinybird-co): I've had a brilliant 2-and-a-bit years with Cloudera, but in a surprising turn of events, I've decided it's time for something a little bit different. - [Introducing dbt-impala](https://alasdairb.com/posts/introducing-dbt-impala): dbt has made a splash in the data ecosystem, and at the Cloudera Innovation Accelerator, we're bringing dbt to Apache Impala. - [The Cloudera Innovation Accelerator & me](https://alasdairb.com/posts/the-cloudera-innovation-accelerator-me): I recently took on a new role at Cloudera as a Senior Developer Advocate in the newly formed Cloudera Innocation Accelerator. - [Getting started with NiFi's ScriptedReader](https://alasdairb.com/posts/getting-started-with-nifis-scriptedreader-by-processing-key-value-pairs-part-1): Records have become an integral part of working with NiFi. They allow us to treat our data as more than just a bunch of bytes. - [NiFi Terminology Basics](https://alasdairb.com/posts/nifi-terminology-basics): This post is going to cover all of the basic terminology that you will need to know when working with Apache NiFi. - [Installing NiFi 1.14.0 on Linux (non-production)](https://alasdairb.com/posts/installing-nifi-1-14-0-on-linux-non-production): This post is going to walk through installing version 1.14.0 of NiFi on a Linux host (Fedora), and discuss the new secure-by-default changes. - [S3 Event Notifications in NiFi](https://alasdairb.com/posts/s3-event-notifications-in-nifi): Pulling new files from storage is common, typically using the ListFile -> FetchFile pattern. For S3, we can instead use S3 Event Notifications. - [Importing individual flow definitions in NiFi](https://alasdairb.com/posts/importing-individual-flow-definitions-in-nifi): You can easily import flow definition json files straight from the NiFi GUI. This post will quickly demonstrate how. - [Building a simple REST API in NiFi](https://alasdairb.com/posts/building-a-simple-rest-api-in-nifi): In a previous post I discussed using REST APIs to enrich records. This post will cover building the corresponding REST API that I used in that post. - [Enriching Records with LookupRecord & REST APIs in NiFi](https://alasdairb.com/posts/enriching-records-with-lookuprecord-rest-apis-in-nifi): It's common to want to enrich IoT data with the results of a REST API call . Here's how to build this flow using NiFi. - [Version Control & Deploy flows with NiFi Registry](https://alasdairb.com/posts/nifi-in-production-nifi-registry): Version Control is everyone's favourite subject, so how does it work with NiFi? This post explains how to use NiFi Registry to version control your NiFi flows. - [NiFi Resources For Learning & Improving](https://alasdairb.com/posts/nifi-resources-for-learning-improving): It's always a bit of a learning curve to get started with any new tool. This is a list of my favourite resources for keeping up to date with NiFi. - [Kafka with multiple Listeners and SASL](https://alasdairb.com/posts/kafka-with-multiple-listeners-and-sasl): This post will quickly discuss how to configure Kafka with multiple listeners for client & inter-broker traffic. - [Connecting to a secure Impala via NiFi](https://alasdairb.com/posts/connecting-to-a-secure-impala-via-nifi-with-tls-and-kerberos): In this post, I'll demonstrate one way to connect NiFi to a secured Impala with ExecuteSQL via the JDBC driver. - [Moving the data dir of MariaDB on CentOS7](https://alasdairb.com/posts/moving-the-data-dir-of-mariadb-on-centos7-rhel7): A quick look at how to safely move the existing data directory of MariaDB on a CentOS7 host from the terminal. ## Optional - [RSS feed](https://alasdairb.com/rss.xml) - [Full content (llms-full.txt)](https://alasdairb.com/llms-full.txt)