Matt Rickard

Share this post

Programming to the Interface

blog.matt-rickard.com

Discover more from Matt Rickard

Thoughts on engineering, startups, and AI.
Continue reading
Sign in

Programming to the Interface

May 31, 2022
Share this post

Programming to the Interface

blog.matt-rickard.com
Share

Interfaces are the building blocks of software. Interfaces explain what software can do but not how. They can be an API, a wire protocol (think HTTPS), or ABI (application binary interface). How you implement these interfaces is up to you. And if done correctly, the software should be a drop-in compatible replacement for anything else that shares the same interface.

Sometimes the implementation is wildly different than the original intention. Compatibility means that it's easier for existing users to switch over. New products can start with a large addressable install base (technical wedge). New implementations can deliver stepwise increases in performance and efficiency with only incremental work from the user.

Here's how you can get creative with programming to the interface.

Make the interface embeddable

  • SQLite (SQL)

  • rBPF (BPF)

  • QuickJS (JavaScript)

  • Deno (NodeJS)

Make the interface available in a different environment

  • Pyodide (Python in the browser)

  • gVisor, netstack (kernel emulation in userspace)

  • MinGW, Windows Subsystem for Linux (Linux on Windows)

  • WINE (Windows on Linux)

  • Electron (Browser applications on Desktop)

Reimplement the interface with a permissive license (or avoid copyright infringement)

  • musl (glibc)

  • AWS OpenSearch (ElasticSearch), AWS MemoryDB (Redis), AWS DocumentDB (MongoDB)

  • Phoenix (IBM BIOS)

Specialize an implementation

  • Yugabyte, ScyllaDB (Cassandra-compatible)

  • AWS Aurora, Google Alloy DB (Postgres-compatible)

Optimize the interface

  • Deno (NodeJS)

  • esbuild (Webpack)

  • Redpanda (Kafka)

Virtualize an interface

  • Virtual machines (Hardware)

  • Containers (OS)

Share this post

Programming to the Interface

blog.matt-rickard.com
Share
Previous
Next
Comments
Top
New
Community

No posts

Ready for more?

© 2023 Matt Rickard
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing