Tuesday, September 08, 2026

Apache Arrow vs Apache Iceberg

Many folks get confused between these two similar open standards; as both of them are used for columnar data. 

Apache Arrow defines how data should be arranged inside your computer's RAM while a program is actively running.Because it organizes data by column instead of by row in memory, modern computer processors can use hardware acceleration (like SIMD) to calculate millions of rows simultaneously. Arrow doesn't care about hard drives, cloud buckets, or transactions; its only job is to make sure your CPU or GPU can read and process active data as fast as physically possible.

Apache Iceberg does not define how data looks in RAM, nor does it define the raw file format. Instead, it sits on top of your storage (like Amazon S3 or Google Cloud Storage) and acts as a brilliant organizer for your files.When you save billions of rows of data, they get broken up into thousands of individual files (usually Apache Parquet files). Iceberg maintains a highly efficient "manifest" (a catalog) of exactly which files belong to which table. This allows engines to perform complex database operations like ACID transactions (ensuring data isn't corrupted during writes), time travel (querying what the data looked like last Tuesday), and schema evolution (renaming a column without rewriting the whole dataset).

In a modern data pipeline, Arrow and Iceberg complement each other. 

A typical workflow looks like this:

  • Storage: Your massive dataset sits permanently on cloud storage as a collection of Parquet files, tracked and managed by Apache Iceberg.
  • Loading: A query engine (like Dremio, DuckDB, or Snowflake) wants to read the data. It asks Iceberg which files it needs.
  • Processing: As those files are read from the disk into the computer's RAM, the engine converts the data into the Apache Arrow format.
  • Execution: Your Python script or analytical engine manipulates, filters, and analyzes the data instantly at the speed of RAM using Arrow's zero-copy mechanics.

Apache Arrow Zero Copy is a clever way for different software programs to share data instantly without wasting time moving it around. Normally, when one tool wants to send data to another, it has to convert that data into a special stream of code, send it over, and then the receiving tool has to translate it back before using it, which slows everything down. Arrow fixes this by setting up a universal, shared blueprint for how data is arranged inside a computer's memory. Because every program agrees on this exact layout, they don't need to copy, move, or translate anything; instead, one program simply points the other to the exact spot in the computer's RAM where the data is already sitting, allowing the second program to read it immediately at the speed of hardware.

This approach is highly utilized in modern data engineering tools (like Apache Spark, pandas, and Ray) to pass massive datasets between different libraries and languages at the speed of hardware RAM.

Tuesday, September 01, 2026

Ruminating on Mutuals

If you have ever opened a savings account, taken out a mortgage, or looked into health insurance in the UK, you have likely come across names like Nationwide or The Exeter. While they look like standard banks or insurance providers, they operate on a completely different business model: they are mutuals.

Most large businesses are owned by external shareholders. Their primary goal is to generate profit and pay out dividends to the shareholders. A mutual flips this model on its head. A mutual is an organization owned entirely by its customers (who are called members).

Because a mutual has no external shareholders to satisfy:

  • Surplus profits are kept inside the business. 
  • Money is funneled back to members through better interest rates, lower fees, expanded coverage, or direct cash payouts. 
  • Members hold voting rights on how the organization is run.

"Mutual" is the umbrella term. In the UK, there are 2 prominent types of mutuals - i.e. building societies and friendly societies. 

A building society is a member-owned mutual financial institution that provides everyday banking, savings accounts, and mortgage lending. Its main purpose (in the past) was to help local communities pool their savings so members can borrow money to buy or build homes. Profits are usually reinvested to benefit members rather than paid to outside shareholders. The largest building society in the world is Nationwide, with other well-known examples including Yorkshire Building Society and Coventry Building Society.

A friendly society is a member-owned mutual insurer that provides cover for health, income protection, and long-term care. Long before the NHS or modern state welfare, workers would pay small weekly amounts into a shared fund so that if a member became sick, injured, or died, the society would pay their lost income or funeral costs. Today, examples include The Exeter, which specialises in health and income insurance, as well as other mutual providers such as Royal London and Liverpool Victoria.