Reading and Writing a Private Google Sheet Programmatically

Google Sheets is amazing — a free, publicly accessible spreadsheet available to anyone with an Internet connection. With its expressive (if a bit obtuse) formula programming language and its ease of distribution, it’s not surprising that Google Sheets is a favorite component of many cloud automations. Even here at Atomic, where we have easy access […]

Handling Audio Sessions with Bluetooth in Swift for iOS

When creating an iOS app that deals with audio, it’s important to configure and handle audio sessions properly. Along with setting up an audio session, there are some extra steps required to properly support Bluetooth audio. 1. Configuring Audio Sessions By default, audio sessions support audio playback but not audio recording. If your app supports […]

Improve Performance Using SQL Functions in Postgres

We’ve all hit that point on a project: features are working, and you’re starting to really expand the application’s capabilities, but the expansion is steadily leading to slower performance. It’s time for some refactoring around your database interactions Maybe the queries run by the application have become more and more complex. Maybe there are things […]

Want Absolute Imports in React Native? Just Add a Little JSON

If you’ve spent any time working with React Native, you’ve probably run into a peculiar quirk where you’re seemingly forced to use relative imports in all of your source files. Things start to look a bit like this: import {Thing} from "../../../../core/thing"; import {Foo} from "../../foo"; It all quickly becomes unwieldy because it requires you […]

A Simple Approach to Complicated Database Defaults

Database tables rarely stay the same over the course of a project. We often need to add tables, add or rename columns, or break up a table to support evolving project demands or updated domain modeling. Migrating existing data correctly is not always trivial. Here are two scenarios I ran into recently on a project […]