rmoff's random ramblings
Materialized Tables in Apache Flink
Kicking the Tyres on Harbor for Agent Evals
Look Ma, I made a JAR! (Building a connector for Kafka Connect without knowing Java)
Interesting links - March 2026
Evaluating Claude's dbt Skills: Building an Eval from Scratch
How I do, and don't, use AI on this blog
Claude Code isn't going to replace data engineers (yet)
Claude Code in action with dbt
AI will fuck you up if you’re not on board
Interesting links - February 2026
Claude the Instructor
Ten years late to the dbt party (DuckDB edition)
Writing to Apache Iceberg on S3 using Kafka Connect with Glue catalog
Interesting links - June 2025
Writing to Apache Iceberg on S3 using Flink SQL with Glue catalog
Digging into Ducklake
Interesting links - May 2025
Exploring Joins and Changelogs in Flink SQL
🏃🚶 The unofficial Current London 2025 Run/Walk 🏃🚶
It's Time We Talked About Time: Exploring Watermarks (And More) In Flink SQL
Interesting links - April 2025
Confluent Cloud for Apache Flink - Exploring the API
Interesting links - March 2025
How to create Carousel posts in LinkedIn…without the bullshit
Building a data pipeline with DuckDB
Exporting Notebooks from DuckDB UI
Kicking the tyres on the new DuckDB UI
Creating an HTTP Source connector on Confluent Cloud from the CLI
Why is kcat showing the wrong topics?
Write more blog articles, not fewer (Don't leave the scraps on the cutting floor)
Data Wrangling with Flink SQL
Joining two streams of data with Flink SQL
How to explode nested arrays with Flink SQL
Exploring UK Environment Agency data in DuckDB and Rill
DuckDB tricks - renaming fields in a SELECT * across tables
Interesting links - February 2025
Checkpoint Chronicle - December 2024
Disabling Vale Linting Selectively in Asciidoc
Exploring Flink CDC
Streaming Data from Postgres to Snowflake with CDC and Decodable
Checkpoint Chronicle - October 2024
Why Do I Need CDC?
Checkpoint Chronicle - September 2024
Current 2024 Recap
Current 2024 - 5k Fun Run (or Walk)
Adventures with Apache Flink and Delta Lake
Declarative Resource Management for Real-time ETL with Decodable
Troubleshooting Flink SQL S3 problems
How to Migrate from Amazon MSF
Sending Data to Apache Iceberg from Apache Kafka with Apache Flink
Decodable vs. Amazon MSF: Getting Started with Flink SQL
How to get data from Apache Kafka to Apache Iceberg on S3 with Decodable
Checkpoint Chronicle - May 2024
How I Try To Keep Up With The Data Tech World (A List of Data Blogs)
ngrok DNS headaches
How to stop AWS CLI clearing the screen
Flink SQL—Misconfiguration, Misunderstanding, and Mishaps
Checkpoint Chronicle - March 2024
🏃🚶 The unofficial Kafka Summit London 2024 Run/Walk 🏃🚶
Apache Flink talks at Kafka Summit London 2024
Exploring the Flink SQL Gateway REST API
Flink SQL and the Joy of JARs
Checkpoint Chronicle - February 2024
Catalogs in Flink SQL—Hands On
Catalogs in Flink SQL—A Primer
Antora Deployment to Cloudflare Across Private Repositories with GitHub Actions
Hosting on GitHub Pages? Watch out for Subdomain Hijacking
1️⃣🐝🏎️🦆 (1BRC in SQL with DuckDB)
Deploying Antora with GitHub Actions and a private GitHub repo
Checkpoint Chronicle - December 2023
Productivity tools: AI Image Generators
Hugo not detecting changed pages on Mac
Learning Apache Flink S01E06: The Flink JDBC Driver
Checkpoint Chronicle - November 2023
Using Apache Kafka with ngrok
Learning Apache Flink S01E05: Installing PyFlink (with some bumps along the way…)
Learning Apache Flink S01E04: A [Partial] Exploration of the Flink SQL Client
Learning Apache Flink S01E03: Running my First Flink Cluster and Application
cd: string not in pwd
Learning Apache Flink S01E02: What *is* Flink?
Learning Apache Flink S01E01: Where Do I Start?
An Itch That Just Has to Be Scratched… (Or, Why Am I Joining Decodable?)
Blog Writing for Developers
What Does This DevEx Engineer Do?
Authoring Wordpress blogs in Markdown (with Google Docs for review)
Building Better Docs - Automating Jekyll Builds and Link Checking for PRs
Using Delta from pySpark - `java.lang.ClassNotFoundException: delta.DefaultSource`
Quickly Convert CSV to Parquet with DuckDB
Making the move from Alfred to Raycast
Aligning mismatched Parquet schemas in DuckDB
Looking Forwards, and Looking Backwards
Data Engineering in 2022: ELT tools
Data Engineering in 2022: Wrangling the feedback data from Current 22 with dbt
Data Engineering in 2022: Exploring dbt with DuckDB
Current 22 - Session Analysis with DuckDB and Jupyter Notebook
Data Engineering in 2022: Architectures & Terminology
Current 2022 - 5k Fun Run
Data Engineering in 2022: Exploring LakeFS with Jupyter and PySpark
Data Engineering: Resources
Data Engineering in 2022: Storage and Access
Stretching my Legs in the Data Engineering Ecosystem in 2022
Customising the fields shown in Airtable's Calendar .ics export
Inside the Sausage Factory: How we Built the Program for Current 2022
⚡️ Writing an abstract for a lightning talk ⚡️
How to Write a Good Tech Conference Abstract - Learn from the Mistakes of Others
Remote-First Developer Advocacy
Hanging up my Boarding Passes and Jetlag…for now
Using GitHub Actions to build automagic Hugo previews of draft articles
🏃🚶 The unofficial Kafka Summit London 2022 Run/Walk 🏃🚶
My Favourite Tools on the Mac (Setting up a new Mac)
Why I use Alfred App (and maybe you should too)
A bash script to deploy ksqlDB queries automagically
Loading CSV data into Confluent Cloud using the FilePulse connector
Connecting to managed ksqlDB in Confluent Cloud with REST and ksqlDB CLI
Using ksqlDB to process data ingested from ActiveMQ with Kafka Connect
Kafka Connect JDBC Sink deep-dive: Working with Primary Keys
Kafka Connect - SQLSyntaxErrorException: BLOB/TEXT column … used in key specification without a key length
Quick profiling of data in Apache Kafka using kafkacat and visidata
Using Open Sea Map data in Kibana maps
Loading delimited data into Kafka - quick & dirty (but effective)
📼 ksqlDB HOWTO - A mini video series 📼
Performing a GROUP BY on data in bash
Running as root on Docker images that don't use root
Running a self-managed Kafka Connect worker for Confluent Cloud
Creating topics with Kafka Connect
Kafka Connect - Deep Dive into Single Message Transforms
🎄 Twelve Days of SMT 🎄 - Day 12: Community Transformations
🎄 Twelve Days of SMT 🎄 - Day 11: Predicate and Filter
🎄 Twelve Days of SMT 🎄 - Day 10: ReplaceField
Scheduling Hugo Builds on GitHub pages with GitHub Actions
🎄 Twelve Days of SMT 🎄 - Day 9: Cast
🎄 Twelve Days of SMT 🎄 - Day 8: TimestampConverter
🎄 Twelve Days of SMT 🎄 - Day 7: TimestampRouter
🎄 Twelve Days of SMT 🎄 - Day 6: InsertField II
🎄 Twelve Days of SMT 🎄 - Day 5: MaskField
🎄 Twelve Days of SMT 🎄 - Day 4: RegExRouter
🎄 Twelve Days of SMT 🎄 - Day 3: Flatten
🎄 Twelve Days of SMT 🎄 - Day 2: ValueToKey and ExtractField
🎄 Twelve Days of SMT 🎄 - Day 1: InsertField (timestamp)
Life as a Developer Advocate, nine months into a pandemic
My Workstation - 2020
Keynote - Why is Replace Fonts greyed out?
Kafka Connect, ksqlDB, and Kafka Tombstone messages
Streaming Geopoint data from Kafka to Elasticsearch
ksqlDB - How to model a variable number of fields in a nested value (`STRUCT`)
Streaming XML messages from IBM MQ into Kafka into MongoDB
Ingesting XML data into Kafka - Option 3: Kafka Connect FilePulse connector
Ingesting XML data into Kafka - Option 2: Kafka Connect plus Single Message Transform
Ingesting XML data into Kafka - Option 1: The Dirty Hack
Ingesting XML data into Kafka - Introduction
`abcde` - Error trying to calculate disc ids without lead-out information
IBM MQ on Docker - Channel was blocked
Setting key value when piping from jq to kafkacat
Some of my favourite public data sets
📌 🎁 A collection of Kafka-related talks 💝
Using the Debezium MS SQL connector with ksqlDB embedded Kafka Connect
Including content from external links with Asciidoc in Hugo
What is Kafka Connect?
Counting the number of messages in a Kafka topic
Poking around the search engines in Google Chrome
🤖Building a Telegram bot with Apache Kafka, Go, and ksqlDB
Telegram bot - BOT_COMMAND_INVALID
Learning Golang (some rough notes) - S02E09 - Processing chunked responses before EOF is reached
Learning Golang (some rough notes) - S02E08 - Checking Kafka advertised.listeners with Go
Learning Golang (some rough notes) - S02E07 - Splitting Go code into separate source files and building a binary executable
Learning Golang (some rough notes) - S02E06 - Putting the Producer in a function and handling errors in a Go routine
Learning Golang (some rough notes) - S02E05 - Kafka Go AdminClient
Learning Golang (some rough notes) - S02E04 - Kafka Go Consumer (Function-based)
Learning Golang (some rough notes) - S02E03 - Kafka Go Consumer (Channel-based)
Learning Golang (some rough notes) - S02E02 - Adding error handling to the Producer
Learning Golang (some rough notes) - S02E01 - My First Kafka Go Producer
Learning Golang (some rough notes) - S02E00 - Kafka and Go
Learning Golang (some rough notes) - S01E10 - Concurrency (Web Crawler)
Why JSON isn't the same as JSON Schema in Kafka Connect converters and ksqlDB (Viewing Kafka messages bytes as hex)
Learning Golang (some rough notes) - S01E09 - Concurrency (Channels, Goroutines)
Learning Golang (some rough notes) - S01E08 - Images
Learning Golang (some rough notes) - S01E07 - Readers
Learning Golang (some rough notes) - S01E06 - Errors
Learning Golang (some rough notes) - S01E05 - Interfaces
Learning Golang (some rough notes) - S01E04 - Function Closures
Learning Golang (some rough notes) - S01E03 - Maps
Learning Golang (some rough notes) - S01E02 - Slices
Learning Golang (some rough notes) - S01E01 - Pointers
Learning Golang (some rough notes) - S01E00
How to install connector plugins in Kafka Connect
Loading CSV data into Kafka
How to list and create Kafka topics using the REST Proxy API
Working with JSON nested arrays in ksqlDB - example
Searching Alfred's Clipboard history programatically
Building a Telegram bot with Apache Kafka and ksqlDB
Add Markers list from Screenflow to Youtube Table of Contents
Using Confluent Cloud when there is no Cloud (or internet)
How to install kafkacat on Fedora
Converting from AsciiDoc to Google Docs and MS Word
A quick and dirty way to monitor data arriving on Kafka
Are Tech Conferences Dead?
Streaming Wi-Fi trace data from Raspberry Pi to Apache Kafka with Confluent Cloud
Kafka Connect JDBC Sink - setting the key field name
Adventures in the Cloud, Part 94: ECS
Primitive Keys in ksqlDB
Fantastical / Mac Calendar not showing Google Shared Calendar
Notes on getting data into InfluxDB from Kafka with Kafka Connect
Kafka Connect and Schemas
Monitoring Sonos with ksqlDB, InfluxDB, and Grafana
UnsupportedClassVersionError: `<x>` has been compiled by a more recent version of the Java Runtime
Changing the Logging Level for Kafka Connect Dynamically
How to win [or at least not suck] at the conference abstract submission game
Exploring ksqlDB window start time
Streaming messages from RabbitMQ into Kafka with Kafka Connect
Analysing network behaviour with ksqlDB and MongoDB
Detecting and Analysing SSH Attacks with ksqlDB
Copy MongoDB collections from remote to local instance
Kafka Connect - Request timed out
Using tcpdump With Docker
Common mistakes made when configuring multiple Kafka Connect workers
Streaming data from SQL Server to Kafka to Snowflake ❄️ with Kafka Connect
Running Dockerised Kafka Connect worker on GCP
Debezium & MySQL v8 : Public Key Retrieval Is Not Allowed
Using Kafka Connect and Debezium with Confluent Cloud
Skipping bad records with the Kafka Connect JDBC sink connector
Kafka Connect and Elasticsearch
Copying data between Kafka clusters with Kafkacat
Kafka Summit GoldenGate bridge run/walk
Staying sane on the road as a Developer Advocate
Where I'll be on the road for the remainder of 2019
Reset Kafka Connect Source Connector Offsets
Starting a Kafka Connect sink connector at the end of a topic
Resetting a Consumer Group in Kafka
Migrating Alfred Clipboard to New Laptop
So how DO you make those cool diagrams? July 2019 update
Taking the Vienna-Munich sleeper train
Manually delete a connector from Kafka Connect
Automatically restarting failed Kafka Connect tasks
Putting Kafka Connect passwords in a separate file / externalising secrets
Deleting a Connector in Kafka Connect without the REST API
A poor man's KSQL EXPLODE/UNNEST technique
When a Kafka Connect converter is not a _converter_
Reading Kafka Connect Offsets via the REST Proxy
Pivoting Aggregates in Ksql
Connecting KSQL to a Secured Schema Registry
Exploring KSQL Stream-Stream Joins
Terminate All KSQL Queries
Quick Thoughts on Not Making a Crap Slide Deck
Using httpie with the Kafka REST Proxy
Preparing a New Talk
Travelling for Work, with Kids at Home
Kafka Connect Change Log Level and Write Log to File
Replacing UTF8 non-breaking-space with bash/sed on the Mac
How KSQL handles case
KSQL REST API cheatsheet
Confluent Schema Registry REST API cheatsheet
What to Do When Docker on the Mac Runs Out of Space
Quick Thoughts on Not Writing a Crap Abstract
Moving from Ghost to Hugo
Pull new version of multiple Docker images
Docker Tips and Tricks with Kafka Connect, ksqlDB, and Kafka
Streaming data from Oracle into Kafka
Tools I Use: iPad Pro
So how DO you make those cool diagrams?
Get mtr working on the Mac
Kafka Connect CLI tricks
ERROR: Invalid interpolation format for "command" option in service…
Flatten CDC records in KSQL
Exploring JMX with jmxterm
Accessing Kafka Docker containers' JMX from host
Sending multiline messages to Kafka
Window Timestamps in KSQL / Integration with Elasticsearch
Where I'm speaking in the rest of 2018
Kafka Listeners - Explained
Syntax highlighting code for presentation slides
Analysing Network Data with Apache Kafka, KSQL, and Elasticsearch
Compare and apply a diff / patch recursively
Kafka Connect and Oracle data types
Stream-Table Joins in KSQL: Stream events must be timestamped after the Table messages
Quick 'n Easy Population of Realistic Test Data into Kafka
Blogging v2
Streaming Data from MongoDB into Kafka with Kafka Connect and Debezium
Cloning Ubiquiti's MongoDB instance to a separate server
Streaming Data from MySQL into Kafka with Kafka Connect and Debezium
KSQL: Topic … does not conform to the requirements
Streaming data from Kafka into Elasticsearch
Installing the Python Kafka library from Confluent - troubleshooting some silly errors…
Why Do We Need Streaming ETL?
HOWTO: Oracle GoldenGate + Apache Kafka + Schema Registry + Swingbench
Kafka - AdminClient - Connection to node -1 could not be established. Broker may not be available
Installing Oracle GoldenGate for Big Data 12.3.1 with Kafka Connect and Confluent Platform
Where will I be at OpenWorld / Oak Table World?
Apache Kafka™ talks at Oracle OpenWorld, JavaOne, and Oak Table World 2017
Oracle GoldenGate / Kafka Connect Handler troubleshooting
What is Markdown, and Why is it Awesome?
Conferences & Meetups at which I'll be speaking - 2017
Kafka Connect - JsonDeserializer with schemas.enable requires "schema" and "payload" fields
Simple export/import of Data Sources in Grafana
Linux - USB disk connection problems - uas: probe failed with error -12
Configuring Kafka Connect to log REST HTTP messages to a separate file
kafka.common.KafkaException: No key found on line 1
Keeping Up with the Deluge
Install qemu on AWS EC2 Amazon Linux
Mount VMDK/OVF/OVA on Amazon Web Services (AWS) EC2
Little Technology Wins
Time For a Change
Property Graph in Oracle 12.2
Rittman Mead at BIWA Summit 2017
HBase crash after resuming suspended VM
Kibana Timelion - Anomaly Detection
Streaming / Unbounded Data - Resources
Data Processing and Enrichment in Spark Streaming with Python and Kafka
Getting Started with Spark Streaming, Python, and Kafka
ETL Offload with Spark and Amazon EMR - Part 4 - Analysing the Data
ETL Offload with Spark and Amazon EMR - Part 5 - Summary
ETL Offload with Spark and Amazon EMR - Part 3 - Running pySpark on EMR
ETL Offload with Spark and Amazon EMR - Part 2 - Code development with Notebooks and Docker
ETL Offload with Spark and Amazon EMR - Part 1 - Introduction
Source Control and Automated Code Deployment Options for OBIEE
Enhanced Usage Tracking for OBIEE - Now Available as Open Source!
The Rittman Mead Open Source Project
kafka-avro-console-producer - Error registering Avro schema / io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException
Oracle GoldenGate -> Kafka Connect - "Failed to serialize Avro data"
Kafka Connect - java.lang.IncompatibleClassChangeError
Connecting Oracle Data Visualization Desktop to Google Analytics and Google Drive
Using SQL to Query JSON Files with Apache Drill
OBIEE, Big Data Discovery, and ODI security updates - October 2016
boto / S3 errors
Streaming data from Oracle using Oracle GoldenGate and Kafka Connect
OTN Appreciation Day : OBIEE's BI Server
POUG
All You Ever Wanted to Know About OBIEE Performance…but were too afraid to ask
Using logdump to Troubleshoot the Oracle GoldenGate for Big Data Kafka Handler
How To Poke Around OBIEE on Linux with strace (Working with Unsupported ODBC Sources in OBIEE 12c)
An Introduction to Apache Drill
Using Apache Drill with OBIEE 12c
OGG-15051 oracle.goldengate.util.GGException: Class not found: "kafkahandler"
OGG - Class not found: "com.company.kafka.CustomProducerRecord"
Kafka Connect JDBC - Oracle - Number of groups must be positive
Stream Analytics and Processing with Kafka and Oracle Stream Analytics
An Introduction to Oracle Stream Analytics
Kafka Connect - HDFS with Hive Integration - SchemaProjectorException - Schema version required
Configuring UPS/apcupsd
Using R with Jupyter Notebooks and Oracle Big Data Discovery
Spark sqlContext.read.json - java.io.IOException: No input paths specified in job
Using SparkSQL and Pandas to Import Data into Hive and Big Data Discovery
Proxmox 4 Containers - ssh - ssh_exchange_identification: read: Connection reset by peer
Reset Hue password
Apache Drill - conflicting jar problem - "No current connection"
ClassNotFoundException with MongoDB-Hadoop in Hive
Erroneous SwapFree on LXC causes problems with CDH install
Using Jupyter Notebooks with Big Data Discovery 1.2
Running Big Data Discovery Shell and Jupyter Notebook on Big Data Lite VM 4.5
Reviving a bricked EdgeRouter Lite (ERL) from a Mac
Running a Docker Container on Proxmox for BitTorrent Sync
Importing VMWare and VirtualBox VMs to Proxmox
Commissioning my Proxmox Server - OS and filesystems
A New Arrival
New version of BigDataLite VM from Oracle
OBIEE 12c blog posts
Presentation Services Logsources in OBIEE 12c
OBIEE 12c – Extended Subject Areas (XSA) and the Data Set Service
Changes in BI Server Cache Behaviour in OBIEE 12c : OBIS_REFRESH_CACHE
Lifting the Lid on OBIEE 12c Web Services - Part 2
Dynamic Naming of OBIEE 12c Service Instance Exports
OBIEE 12c - "Add Data Source" in Answers
York Fry Ups
Lifting the Lid on OBIEE 12c Web Services - Part 1
Kibana Timelion - Series Calculations - Difference from One Week Ago
OBIEE 12c hangs at startup - Starting AdminServer ...
oracle.bi.bar.exceptions.UnSupportedBarException: The Bar file provided as input is not supported in this BI Platfrom release.
OBIEE Baseline Validation Tool - Parameter 'directory' is not a directory
Under the Covers of OBIEE 12c Configuration with sysdig
Monitoring Logstash Ingest Rates with Elasticsearch, Kibana, and Timelion
Monitoring Logstash Ingest Rates with InfluxDB and Grafana
Collection of Articles on How to Write a Good Conference Abstract
Experiments with Elastic’s Graph Tool
Using R to Denormalise Data for Analysis in Kibana
OBIEE security patches, and FINAL 11.1.1.7 patchset release
Streaming Data through Oracle GoldenGate to Elasticsearch
Decoupling the Data Pipeline with Kafka - A (Very) Simple Real Life Example
Food Pr0n 02 - Devon & Dorset
New OTN Article - OBIEE Performance Analytics: Analysing the Impact of Suboptimal Design
Experiments with Kibana Timelion
Connecting to OBIEE via JDBC - with jisql
My latest IRC client : Kibana
Food Pr0n - 01
OBIEE 11.1.1.9 installation - JPS-06514: Opening of file based keystore failed
Fun and Games with Oracle GoldenGate, Kafka, and Logstash on BigDataLite 4.4
Presentation Slides… bye-bye Slideshare, hello Speakerdeck
obihackers IRC channel
Streaming data to InfluxDB from any bash command
What makes a good Full English?
Visualising OBIEE DMS Metrics over the years
OBIEE Performance - Why Metrics Matter (and…Announcing obi-metrics-agent v2!)
OBIEE 12c - Repository Password Corruption Issue
Using Linux Control Groups to Constrain Process Memory
Driving OBIEE User Engagement with Enhanced Usage Tracking for OBIEE
Forays into Kafka - Enabling Flexible Data Pipelines
Introducing the Rittman Mead OBIEE Performance Analytics Service
Forays into Kafka - Logstash transport / centralisation
Using the BI Server Metadata Web Service for Automated RPD Modifications
Managing the OBIEE BI Server Cache from ODI 12c
OBIEE BI Server Cache Management Strategies
Security patches released for OBIEE 11.1.1.7/11.1.1.9, and ODI DQ 11.1.1.3
What's New in OBIEE 11.1.1.9 for Systems Administrators and Developers
Using the ELK Stack to Analyse Donor's Choose Data
BI Forum 2015 Preview -- OBIEE Regression Testing, and Data Discovery with the ELK stack
Analysing ODI performance with Flame Graphs
Lifting the Lid on OBIEE Internals with Linux Diagnostics Tools
OBIEE nqcmd Tidbits
Instrumenting OBIEE Database Connections For Improved Performance Diagnostics
An Introduction to Analysing ODI Runtime Data Through Elasticsearch and Kibana 4
OBIEE Monitoring and Diagnostics with InfluxDB and Grafana
Concurrent RPD Development in OBIEE
Linux cluster sysadmin -- OS metric monitoring with colmux
Linux cluster sysadmin -- Parallel command execution with PDSH
Linux cluster sysadmin -- SSH keys
OBIEE SampleApp v406 Amazon EC2 AMI - available for public use
Auditing OBIEE Presentation Catalog Activity with Custom Log Filters
Analytics with Kibana and Elasticsearch through Hadoop - part 2 - Getting data into Elasticsearch
Analytics with Kibana and Elasticsearch through Hadoop - part 3 - Visualising the data in Kibana
Analytics with Kibana and Elasticsearch through Hadoop - part 1 - Introduction
Monitoring OBIEE with Elasticsearch, Logstash, and Kibana
Using rlwrap with Apache Hive beeline for improved readline functionality
First-timer tips for Oracle Open World
OBIEE SampleApp in The Cloud: Importing VirtualBox Machines to AWS EC2
SampleApp v406 - Automatic startup of OBIEE
Visual Regression Testing of OBIEE with PhantomCSS
Mobile App Designer mis-configuration error
Extended Visualisation of OBIEE Performance Data with Grafana
BI Forum 2014 preview - No Silver Bullets : OBIEE Performance in the Real World
Visualising OBIEE DMS metrics with Graphite
Built-In OBIEE Load Testing with nqcmd
Installing obi-metrics-agent, Graphite, and collectl
Introducing obi-metrics-agent - an Open-Source OBIEE Metrics Collector
Date formatting in OBIEE 11g - setting the default Locale for users
Exploring OBIEE Web Services through Python
Automated Regression Testing for OBIEE
OBIEE Regression Testing - An Introduction
Make Use of OBIEE's Command Line Tools with Reduced Exposure of Plain Text Passwords
Monitoring OBIEE Performance for the End User with JMeter from EM12c
Collecting Usage Tracking Data with Metric Extensions in EM12c
Building alerts in EM12c with OBIEE Usage Tracking data
OBIEE "Act As" (ActAs) vs "Impersonate"
Tips and Tricks for the OBIEE linux sysadmin
TimesTen and OBIEE port conflicts on Exalytics
The Rittman Mead scripts github repository
Learn OBIEE 11.1.1.7 from the experts!
Patch OBIEE the quicker way - with OPatch napply
Using OBIEE SampleApp 305 in VM Fusion
Testing aggregate navigation on OBIEE and Exalytics
Incremental refresh of Exalytics aggregates using native BI Server capabilities
Upgrading OBIEE to 11.1.1.7
Performance and OBIEE - part I - Introduction
Performance and OBIEE - part II - Test - Define
Performance and OBIEE - part III - Test - Design
Performance and OBIEE - part IV - Test - Build
Performance and OBIEE - part V - Execute and Measure
Performance and OBIEE - part VI - Analysing results
Performance and OBIEE - part VII - Optimising OBIEE performance ("Tuning")
Performance and OBIEE - Summary and FAQ
Incremental refresh of Exalytics Aggregates using TimesTen
Alternatives to the Summary Advisor for Refreshing Exalytics Aggregates
Advanced monitoring of OBIEE with Nagios
An introduction to monitoring OBIEE with Nagios
Automated Monitoring of OBIEE in the Enterprise - an overview
OBIEE / AD integration - [OBI-SEC-00022] Identity found ... but could not be authenticated
Advanced Presentation Services settings for OBIEE testing & development
OBIEE / FMW and networking on DHCP hosts
Exalytics - TimesTen and OBIEE connectivity
OBIEE 11.1.1.6.2 BP1 - Logical SQL Diagnostic view
Applying patches to OBIEE : 11.1.1.6.2 BP1
Downloading OBIEE patches from Oracle with wget
Running the RCU from the commandline
OBIEE Administration Tool - Import Metadata shows no schemas
OBIEE performance tuning myth : BI Server logging
Public training schedule for 2012-H2 announced
screen and OBIEE
RittmanMead Webinar Series 2012
New Training Courses and Seminars from Rittman Mead
Configuring OBI 11g to use port 80
Scripted OBI 11g Linux startup/shutdown
Event Triggers in BI Publisher 11g
Blogging
Accessing BI Publisher 11g Web Services through a JDeveloper Web Service Proxy
Calling BI Publisher 11g Web Services from BPEL
Web Services in BI Publisher 11g
Instrumenting OBIEE - the final chapter
OBI 11g : UPGAST-00055: error reading the Oracle Universal Installer inventory
Oracle - tnsping - Message 3513 not found; product=NETWORK; facility=TNS
Sourcecode markup tweaks in Wordpress
Friday miscellany
DBMS_STATS - GATHER AUTO
Using preupgrade to upgrade Fedora 14 to Fedora 15 - proxy errors
Labelling Time axes in Excel
A quotation to print out and stick on your wall
New blog from Oracle - OBI Product Assurance
Did you hear that thunk? That was me falling off my chair in shock
Have you defined CLIENT_ID in OBIEE yet?
OBIEE 10.1.3.4.2 released
OBIEE 10.1.3.4.2 released
ODI 10g connectivity problem with OCI
Security issue on OBIEE 10.1.3.4.1, 11.1.1.3
Security issue on OBIEE 10.1.3.4.1, 11.1.1.3
Undocumented nqcmd parameters
Oracle 11g - How to force a sql_id to use a plan_hash_value using SQL Baselines
Global statistics high/low values when using DBMS_STATS.COPY_TABLE_STATS
Global statistics high/low values when using DBMS_STATS.COPY_TABLE_STATS
Data Warehousing and Statistics in Oracle 11g - Automatic Optimizer Statistics Collection
OBIEE performance - get your database sweating
Entertaining Exadata FUD from HP
Oracle documentation - available on Kindle and iPad
Oracle XE 11gR2 installation - "OracleXEService should not be installed already"
Getting good quality I/O throughput data
Getting good quality I/O throughput data
Comparing methods for recording I/O - V$SYSSTAT vs HP Measureware
Comparing methods for recording I/O - V$SYSSTAT vs HP Measureware
OBIEE Systems Management - dodgy counter behaviour
Shiny new geek toys -- rrdtool and screen
Shiny new geek toys -- rrdtool and screen
Changing LDAP settings in an OBIEE RPD with UDML
Instrumenting OBIEE for tracing Oracle DB calls
Materialised Views - PCT Partition Truncation
Oracle Whitepaper - "Best Practices for a Data Warehouse on Oracle Database 11g"
Data Warehousing and Statistics in Oracle 11g - incremental global statistics
Adding OBIEE monitoring graphs into OAS
Charting OBIEE performance data with gnuplot
Collecting OBIEE systems management data with jmx
OBIEE monitoring
OBIEE 10g - javahost hang
Troubleshooting OBIEE - LDAP (ADSI) authentication
A Poor Man's OBIEE EM/BI Management Pack
A Poor Man's OBIEE EM/BI Management Pack
Analysing ODI batch performance
Does this summarise your system development & support ethos?
Two excellent OBI presentations from Jeff McQuigg
Does this summarise your system development & support ethos?
Graphing I/O data using gnuplot and Oracle V$SYSSTAT
Graphing I/O data using gnuplot and Oracle V$SYSSTAT
awk - split a fixed width file into separate files named on content
When is a bug not a bug? When it's a "design decision"
A good maxim to bear in mind when designing reports
Better safe than sorry...sanitising DB input
Better safe than sorry...sanitising DB input
TortoiseSVN doesn't prompt for authentication
The danger of averages - Measuring I/O throughput
The danger of averages - Measuring I/O throughput
RTFM? But where TF is the FM? >> Offline searchable OBIEE 11g documentation
RTFM? But where TF is the FM? >> Offline searchable OBIEE 11g documentation
A fair bite of the CPU pie? Monitoring & Testing Oracle Resource Manager
A fair bite of the CPU pie? Monitoring & Testing Oracle Resource Manager
Misbehaving Informatica kills Oracle
BI Publisher - error creating Quartz tables
Measuring real user response times for OBIEE
Scripts to extract information from OBIEE NQQuery.log
Scripts to extract information from OBIEE NQQuery.log
OBIEE 11g launch date - 7th July 2010
Performance Testing and OBIEE
My first presentation - afterthoughts
RittmanMead BI Forum 2010
Validating EBS-BI authentication, without BI
What am I missing here??? ORA-01017: invalid username/password; logon denied
What am I missing here??? ORA-01017: invalid username/password; logon denied
RTFAL!
Opera + Oracle EM = true love
Opera + Oracle EM = true love
My first presentation - help!
OBIEE 11g tidbit - XUDML support
ORA-13757: "SQL Tuning Set" "string" owned by user "string" is active.
ORA-13757: "SQL Tuning Set" "string" owned by user "string" is active.
Securing OBIEE Systems Management JMX for remote access
Who's been at the cookie jar? EBS-BI authentication and Load Balancers
OBIA 7.9.6 Performance Recommendations
OBIA 7.9.6 Performance Recommendations
Oracle Support Blog back online, kinda.
Oracle Support Blog back online, kinda.
Oracle Support blog no more
Exadata V2 POC numbers
Illustrating data
Illustrating data
Brilliant performance articles by Cary Millsap
Identify your OBIEE users by setting Client ID in Oracle connection
Identify your OBIEE users by setting Client ID in Oracle connection
How to resolve "[nQSError: 12002] Socket communication error at call=: (Number=-1) Unknown"
Hardening OAS
libnnz10.so: cannot restore segment prot after reloc: Permission denied
libnnz10.so: cannot restore segment prot after reloc: Permission denied
Running the OBIEE admin tool on Unix
CAF
Troubleshooting Presentation Services / analytics connectivity
Troubleshooting Presentation Services / analytics connectivity
UKOUG TEBS 2009
I think this summarises everything.
I think this summarises everything.
OBIEE application servers, now and future
SoOotW and sweep
Resolved: sawserver : Error loading security privilege /system/privs/catalog/ChangePermissionsPrivilege
Resolved: sawserver : Error loading security privilege /system/privs/catalog/ChangePermissionsPrivilege
Deploying Oracle Business Intelligence Enterprise Edition on Sun Systems
#Fail: My Oracle Support
#Fail: My Oracle Support
OBIEE clustering - specifying multiple Presentation Services from Presentation Services Plug-in
OBIEE clustering - specifying multiple Presentation Services from Presentation Services Plug-in
Advanced Googling for OBIEE information
CAF installation video
Experts
The state of OBIEE on the web
The mind boggles...
The mind boggles...
Troubleshooting OBIEE and ORA-12154: TNS:could not resolve the connect identifier
Critical Patch Update - OBIEE vuln CVE-2009-1990
OTN forum - "Pro"
Critical Patch Update - OBIEE vuln CVE-2009-1990
New OBIEE blogs
BI Server hung - nQSError 14054 / 15001 / 23005
Heads up - Critical Patch Update affecting OBIEE
BI Server hung - nQSError 14054 / 15001 / 23005
Heads up - Critical Patch Update affecting OBIEE
New OBIEE benchmark - 50,000 users
OBIA 7.9.6.1 released
OBIA 7.9.6.1 released
Usage Tracking - only half the story ...
Usage Tracking - only half the story ...
OBIEE and HP Performance Center (a.k.a. LoadRunner) - Notes
Performance testing OBIEE using HP Performance Center (a.k.a. LoadRunner)
OBIEE and HP Performance Center (a.k.a. LoadRunner) - Notes
Performance testing OBIEE using HP Performance Center (a.k.a. LoadRunner)
James Morle : Spotting the Red Flags (Part 1 of n)
SQL Developer v2.1 Early Adopter released
SQL Developer v2.1 Early Adopter released
Changing password on Oracle 11g from 10g clients (ORA-28001 -> ORA-01017)
Changing password on Oracle 11g from 10g clients (ORA-28001 -> ORA-01017)
Collated OBIEE benchmarks
OBIEE benchmarks
OBIEE cluster controller failover in action
OBIEE on Opera 10 / IE 7 / FF 3.5 / Chrome 4
OBIEE on Opera 10 / IE 7 / FF 3.5 / Chrome 4
Syntax for AdminTool.exe command line script
Syntax for AdminTool.exe command line script
AdminTool.exe /command
AdminTool.exe /command
Metalink 3 followup
RSS feeds for OBIEE, including del.icio.us obiee tags
RSS feeds for OBIEE, including del.icio.us obiee tags
CAF troubles
Metalink 3 RIP
Multiple RPDs on one server - Part 1 - the BI Server
Multiple RPDs on one server - Part 2 - Presentation Services
OBIEE error/message code reference
Tech Support Cheat Sheet [xkcd.com]
OBIEE error/message code reference
Tech Support Cheat Sheet [xkcd.com]
OBIEE and Load Runner - part 2
Querying SQL Server from OBIEE running on Unix
Do you mean (pt II)
Logging specific types of sawserver activity
OBIEE and Load Runner - part 1
sawserver log - short format
OTN forums - different URL to get prompted to login less often
Unix script to report on OBIEE and OBIA processes state
OBIA upgrade 7.9.5 to 7.9.6 - first thoughts
OBIA upgrade 7.9.5 to 7.9.6 - first thoughts
Repository Error ([REP_51821] Failed to connect from Integration Service (pmserver) to repository Oracle_BI_DW_Base running in exclusive mode.)
Repository Error ([REP_51821] Failed to connect from Integration Service (pmserver) to repository Oracle_BI_DW_Base running in exclusive mode.)
Clean install of OAS - Enterprise Manager not available
Google vs Bing
OBIA grumble
What is OBIA...
What is OBIA...
OBIEE performance monitoring and alerting with jManage
OBIEE performance monitoring and alerting with jManage
How to find out what web application server is in use
Maker's Schedule, Manager's Schedule
ORA-00922: missing or invalid option
Metalink 3 - Do You Mean ... ?
OBIEE Windows PerfMon counters
Metalink 3 - Do You Mean ... ?
Mark Rittman's OBIEE repository for DAC
psservice - Windows command line goodness!
sawserver charts crash
sawserver logging configuration - logconfig.xml
sawserver logging configuration - logconfig.xml
Oracle BI Management / Systems Management MBeans
Oracle BI Management / Systems Management MBeans
JConsole / JMX - followup
OBIEE admin tools & hacks
OTN forum rant
OBIEE admin tools & hacks
JConsole / JMX - followup
JConsole / JMX
JConsole / JMX
nqcmd and [nQSError: 27005] Unresolved column
Custom HTTP error page in OBIEE / OAS
Custom HTTP error page in OBIEE / OAS
New releases
OBIEE and F5 BIG-IP
Google and Korean OTN forums
OAS bug 7132128 - Send notification: oracle.ons.Notification
OAS makes you log in twice
OAS bug 7132128 - Send notification: oracle.ons.Notification
sawserver won't start up - resolved
Troubleshooting an HPUX program
Bug in Clustered Publisher Scheduler - ClusterManager: detected 1 failed or restarted instances
sawserver won't start (analytics: Servlet error java.net.ConnectException: Connection refused (errno:239))
sawserver won't start (analytics: Servlet error java.net.ConnectException: Connection refused (errno:239))
ODI Server install - missing odiparams.sh file
Remove windows line feed characters in vi
ODI Server install - missing odiparams.sh file
ORA-12537 / ORA-12518 [Informatica DAC error CMN_1022]
ORA-12537 / ORA-12518 [Informatica DAC error CMN_1022]
Clustering Publisher - Scheduler and Report Repository
Firefox add-ins - ones I find useful
Metalink Metalink Metalink
Which jdbc driver to use
Finding config files in unix
OBIEE Publisher - configuring connection to clustered BI Server
About Me
Search
Talks
Talks
Interesting links - September 2025
Stumbling into AI: Part 4—Terminology Tidy-up (and a little rant)
Stumbling into AI: Part 3—RAG
Stumbling into AI: Part 2—Models
Stumbling into AI: Part 1—MCP
Interesting links - August 2025
Kafka to Iceberg - Exploring the Options
Connecting Apache Flink SQL to Confluent Cloud Kafka broker
Interesting links - July 2025
Keeping your Data Lakehouse in Order: Table Maintenance in Apache Iceberg
Stumbling into AI: Part 5—Agents
Blog Writing for Developers - slides
Interesting links - October 2025
Tech Radar (Nov 2025) - data blips
How we built the demo for the Current NOLA Day 2 keynote using Flink and AI
I've been thinking about Agents and MCP all wrong
Stumbling into AI: Part 6—I've been thinking about Agents and MCP all wrong
(AI) Smells on Medium
Interesting links - November 2025
Using Graph Analysis with Neo4j to Spot Astroturfing on Reddit
Interesting links - December 2025
A love letter to Raycast ❤️
Alternatives to MinIO for single-node local S3
Interesting links - January 2026
Interacting with Developers on Reddit
Reflections of a Developer on LLMs in January 2026
Cosplaying as a webdev with Claude Code in January 2026