Absinthe for Large Elixir Applications
Patterns for structuring and scaling Absinthe in large Elixir applications.
Notes on software engineering by Sapan Diwakar — Elixir, Rails, mobile development, and the occasional adventure.
Patterns for structuring and scaling Absinthe in large Elixir applications.
An introduction to building GraphQL APIs in Elixir with Absinthe.
Ecto is a toolkit for mapping database objects to Elixir structs and provides a unified interface to manipulate that data.
Strategies for scaling Ruby on Rails applications to larger workloads.
How to add Hotwire interactivity to a Ruby on Rails application.
A guide to designing responsive, decoupled event-driven systems in Elixir.
A comparison of Delayed Job and Sidekiq for Ruby background processing.
A pattern for authorization and policy scopes in Phoenix contexts and Ecto schemas.
How to implement a STOMP-over-WebSocket client in Elixir.
How to connect infrastructure securely with a WireGuard VPN.
How to call Ruby and Python processes from Elixir with ExPort.
How to configure ActiveJob retries dynamically across Rails job backends.
How to build a Rails-like interactive console for Node.js and TypeScript.
How to add runtime validation to React Hook Form fields.
How to run a GraphQL-WS WebSocket server on Android.
Practical ways to reduce a Heroku slug’s size and improve deployment performance.
How to eager-load Rails classes during development with Zeitwerk.
Jest provides several different ways to mock out things. Here's an effort to list out the most useful ones in a short post.
A comparison of popular React component libraries for product interfaces.
How to configure multiple HTML entry points in a Create React App project.
How to retain and restore historical LiveData values in an Android app.
A personal remembrance of gardening with the author’s grandmother.
A personal reflection on the sensory appeal of nature.
How to access Android ViewModel state from custom views.
A reflective short story addressed to Hari at the beginning of his life.
A short story about twin sisters Ava and Emma facing a dangerous secret.
A comparison of React Native, Flutter, and Kotlin for mobile development.
A custom ActionCable WebSocket client for Electron and Node with MessagePack compression.
How to add a custom WebSocket compression extension to Rails ActionCable.
How to compress Rails ActionCable WebSocket frames with permessage-deflate.
An introduction to Stimulus for adding focused JavaScript behavior to Rails views.
How TypeScript declaration merging adds static methods to existing modules.
An introduction to TypeScript 3.0’s safer unknown type.
How to decode and display an encoded polyline on Google Maps.
How to update an Android app’s locale at runtime.
An introduction to audio processing on Android with TarsosDSP.
How to automate Android builds and Google Play releases with Fastlane.
How to automate iOS builds, signing, and App Store releases with Fastlane.
A travelogue about a long Easter weekend exploring Prague.
How to store and manage local music playlists with Realm on Android.
How to add a persistent mini-player toolbar to an Android app.
How to build an Android music-player interface.
How to show Android media controls on the lock screen and in notifications.
How to keep Android audio playback running with a Service and MediaPlayer.
An introduction to Android MediaPlayer setup and basic playback.
An Android music-player tutorial covering project setup and playback.
Kotlin is a statically typed language developed by JetBrains that targets the JVM.
How to refresh OAuth access tokens after 401 responses with Retrofit and RxJava.
How to refresh OAuth tokens after 401 responses with Moya and RxSwift.
Realm is a mobile database: a replacement for SQLite & Core Data that works for both iOS and Android.