Patterns for structuring and scaling Absinthe in large Elixir applications.
2024
2023
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.
2022
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.
2021
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.
2020
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.
2019
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.
2018
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.
2017
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.
2016
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.
How to mask an iOS view into a hexagon with CALayer.
2015
How to use Unity StreamingAssets for files that must remain on the device filesystem.
A pattern for refreshing OAuth access tokens automatically with RestKit.
How to add GIF playback to an EBPhotoPages gallery on iOS.
How to play GIF images stored in Parse from an iOS app.
A technique for choosing an iOS storyboard’s initial view controller at runtime.
How to add Google Play expansion files to an Android app.
A guide to building a simple iOS music player with a focused interface.
How to implement item click handling in an Android RecyclerView.
How to add pull-to-refresh to an Android RecyclerView or scrolling view.
2014
How to switch audio tracks while an iOS music app runs in the background.
A pattern for adding localized attributes dynamically to Ember Data models.
How to simplify asynchronous iOS code with PromiseKit.
An overview of push-notification registration and actions in iOS 8.
How to enforce uniqueness constraints in Parse with Cloud Code.
How to store Parse image dimensions with Cloud Code before downloading files.
How to display nested sections in a UITableView.
How to stream YouTube videos and load thumbnails in an Android app.
How to evaluate JavaScript in a Chrome packaged app within its security constraints.
An overview of securely transferring files with the makesends.com service.
Practical guidance for keeping iOS table view data sources small and maintainable.
Lets try to create a simple parallax effect when changing pages in a horizontally set up iCarousel.
How to monitor iBeacons without an iOS device.
iBeacon is a new technology that extends Location Services in iOS.
How to implement endless pagination for data lists on Android.
A practical account of moving a WordPress blog to Ghost.
How to serialize and deserialize ISO 8601 dates with Ember Data.
2013
How to create an AndroidAnnotations project in Android Studio.
How to access RESTful web services from an Android application.
How to resolve a navigation-bar issue with MKMapView in iOS 7.
An overview of Shyahi’s redesigned landing page and product updates.
An introduction to Shyahi, a personal social homepage service.
How to obtain a mobile device’s location in an Android application.
A curated list of useful Android development resources and libraries.
An announcement of HowSoon, an Android app for finding the next departure.
Spinners provide a quick way to select one value from a set.
How to use Subtle Patterns backgrounds in Android applications.
Workarounds for EOFException errors from Spring RestTemplate on Android.
How to build a REST client on Android with AndroidAnnotations and Spring.
How to replace Android fragments dynamically while preserving navigation behavior.
How to add Android view shadows with a 9-patch image.
How to create a blinking or flashing animation in an iOS interface.
How to change the user agent in Google Chrome for browser testing.
2012
An introduction to reducing repetitive Android code with Android Annotations.
A review of TotalFinder, a tabbed file manager extension for macOS Finder.
How to resize images efficiently in an Appcelerator Titanium app.
How to send SOAP requests from an Appcelerator Titanium application.
How to reverse-geocode locations with the Google Maps API in Java.
How to add padding around AQGridView cells on iOS.
An introduction to displaying image grids with AQGridView on iOS.
How to share multiple iOS images on Facebook with ShareKit.
How to track page mouse coordinates when the WordPress admin bar is present.
An introduction to bipartite matching and augmenting-path algorithms.
An introduction to Pig Latin for processing large data sets.
How to embed a MediaWiki site in an iframe.
How to resize images for a Titanium Cover Flow interface.
How to sort table-view rows in an Appcelerator Titanium application.
A comparison of Titanium, PhoneGap, and native iOS and Android development.
How to share WordPress user accounts with a MediaWiki installation.
A balanced reflection on the benefits and limitations of Google Summer of Code.
How to use geotagged tweets to identify local interest groups and places.
An exploration of predicting future Twitter mentions from network similarity data.
An analysis of fast modularity clustering for Twitter users.
How to handle clicks on images inside dynamically replaced jQuery slideshow elements.
A practical list of Eclipse keyboard shortcuts for Java development.
2011
How to restart a Maven application automatically after it exits.
A quick start for building networked C++ applications with POCO.
A reflection on Diwali, the Hindu festival of lights.
A beginner’s guide to organizing code and projects with Git and GitHub.
An overview of the author’s first master’s semester and coursework at EPFL.
A tutorial for building custom media player controls in an Android application.
Through this post, I will demonstrate the basic process of developing an android application.
An introduction to serializing Java POJOs to and from JSON with Jackson.
How to build an image-tagging interface with the HTML5 canvas element.
How to center text horizontally and vertically in a dynamically created div.
Answers to common questions about building web applications with MyBatis, Spring, Ext JS, and Eclipse.
A tutorial for building a Java web application with MyBatis, Spring MVC, Ext JS, and Tomcat.
A travelogue about settling into an internship at TU Dortmund.
2010
A roundup of Firefox add-ons for web development and daily browsing.
A tribute to Sachin Tendulkar’s enduring cricket career.
A recollection of joining a local cricket tournament during college.
A travelogue about a DAAD internship journey from India to Germany.