The Squaring the Circle Problem

Kwindla Hultman Kramer
2 min readApr 14, 2023

--

Yesterday I talked about technical writing and a blog post my colleague Marcus wrote that gave some tips for designing Kotlin APIs to work well for both Kotlin and Java programmers.

We think a lot about developer ergonomics at Daily. And, zooming out, Java and Kotlin are just the tip of the iceberg of that for us.

We support a lot of platforms and programming languages. JavaScript running inside web browsers, Electron, React Native, Swift on iOS, Kotlin and Java on Android, Flutter. And we have internal builds of our SDKs that expose some C++ and Rust APIs. Plus we maintain several fun integrations with tools like GStreamer.

All of these SDKs and libraries cover mostly the same ground. And we think of ourselves as having just a single product at Daily.

Our customers use our APIs to build applications that send, receive, and record video and audio no matter what platforms they’re running on.

But the platforms we support often have really different conceptions of very fundamental things like how a run loop is structured and how to write asynchronous code.

We want our SDKs to be as similar as possible cross platform because they’re enabling you to do the same things, whether you’re writing JavaScript code for the web or Swift code for iOS. But we also want each SDK to feel native and natural to a developer that specializes in that platform.

This is an age-old challenge for cross-platform libraries, and it’s an example I think of a general challenge that comes up in all design work: trying to do multiple things well that are fundamentally in tension.

I think of this in my own brain as the “squaring the circle” problem. It’s both frustrating and also super fulfilling to try to come up with elegant solutions that square the circle.

The team that is responsible for our SDKs at Daily is called daily-x, because we have daily-js and daily-ios and daily-android, et cetera. The daily-x team spends a lot of time talking about how to square the circle of cross-platform ergonomics and API consistency.

If you have ideas for us, let us know. We’d love to hear.

Today’s music is “The Meetin’” from the 1961 Oliver Nelson Sextet album, “Screamin’ the Blues.” Eric Dolphy and Richard Williams.

--

--