An Introduction to Absinthe

Absinthe is a toolkit for building a GraphQL API with Elixir. It has a declarative syntax that fits really well with Elixir’s idiomatic style.

Keep reading

Under the Hood of Ecto

Ecto is a toolkit for mapping database objects to Elixir structs and provides a unified interface to manipulate that data.

Keep reading

Authorization and Policy Scopes with Elixir/Phoenix

Authorization is usually an important part of any application, but it is also something that is not very often talked about. This post discusses authorization techniques and also an opinionated way of organizing your authorization code within Phoenix Contexts and Ecto Schemas.

Keep reading

STOMP over a WebSocket client in Elixir

STOMP is the Simple (or Streaming) Text Orientated Messaging Protocol. While there are some libraries that allow communication with STOMP servers over HTTP, I couldn't find anything that does this over a WebSocket. As it turns out it was really easy to roll out my own WebSocket client implementation that communicated using STOMP.

Keep reading

Interfacing Elixir with Other Languages

ExPort which is a wrapper around the popular ErlPort allows to open ports to programs running in Ruby or Python and communicate with the processes as easily as if you are writing plain Elixir Code.

Keep reading

Rails like console for Node JS (and Node TS)

If you have ever used Rails and then gone over to a Node.js app, one thing that you will surely find missing is the ability to evaluate arbitrary code in the rails console. It's great to run one-off tasks like creating some rows or debugging issues etc.

Keep reading

Runtime validation with react-hook-form

React Hook Form is quickly gaining popularity as the goto form library for React. And with good reason. The API is really well thought, the validation is amazingly easy and the re-renders very efficient.

Keep reading

[How to] Reduce Heroku Slug Size

Once a slug size reaches 300 MB, Heroku will warn about larger slug sizes having the potential to cause longer boot times. The best practice is to keep slug sizes as small as possible for fast deploys and other operations.

Keep reading

Eager Load Rails classes during development

Rails 6 comes with Zeitwerk as the new default loader. For most users, when upgrading from the previous version of Rails, not much would change (except some inflections because of the way zeitwerk infers file names based on the constant).

Keep reading

Mocking with Jest

Jest provides several different ways to mock out things. Here's an effort to list out the most useful ones in a short post.

Keep reading

Multiple html pages with create-react-app app

create-react-app provides a great starting point to start a new react app fully configured with webpack, live reloading, etc. But, sadly, it doesn't provide a way to provide different index files with a different set of entry points.

Keep reading

Historical Live Data for Android

LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services. This awareness ensures LiveData only updates app component observers that are in an active lifecycle state.

Keep reading

Garden

This post talks about my affection towards gardens. Since my childhood, I had a huge garden at my house. My grandma was fond of taking care of our garden. She generally used to spend a couple of hours every day taking care of the garden. I became a great admirer of her work and developed an affection towards gardening.

Keep reading

Something about Nature

There is something about nature. Is it fresh wind touching your chin, or looking at clear blue skies with your eyes, soothing sounds of rivers flowing through your ears, never-ending long old trees, or bucolic smell. Maybe it's a combination of these things or maybe it is all those things.

Keep reading

Life of Hari

"At last, this is the day I have been waiting for." these were the first few words that you heard when you were born, Hari. Your father took off his shirt out and laid you down on his chest and wept. I can still see the emotions in your father's eyes when he was taking you for the first time from the midwife when you were born. As if, he was announcing to the world about your arrival.

Keep reading

A Tale of Two Sisters

"Are you ready for it?" Ava asked Emma for the last time. Emma shut her eyes, nodding to Ava. Emma was always the audacious sister between the twins. Ava took her cigarette lighter out of her pocket. They were in the basement of the house. It was their place, a place where they felt safe, a recluse from their aggressive parents.

Keep reading

A review of mobile development frameworks

The frameworks/approaches in question that we would be evaluating are React Native, Flutter and Kotlin. Now, if you haven't heard about one of these before, I request you to think very seriously before choosing it because it probably might not be a good fit for you. I think I have put plenty of disclaimers, so let's dive in.

Keep reading

Custom WebSocket extension for Rails ActionCable

In the previous post, we saw how to support compression with permessage-deflate extension for Rails ActionCable connections. Now that we are there, let's go one step further and see how we can create a custom extension for WS frame compression.

Keep reading

Stimulus: A modest JS framework

When I first came across Stimulus, I was excited. The premise is great, especially when coupling with a rails app. Convention over configuration, right? No more jQuery code sprinkled around throughout the page and watching for load/change events to perform changes. Not to mention the quirks that come with integrating Turbolinks to your app.

Keep reading

Update Localization on Android at Runtime

Android will run on many devices in many regions. To reach the most users, your application should handle text, audio files, numbers, currency, and graphics in ways appropriate to the locales where your application will be used. The resource framework automatically selects the resources that best match the device.

Keep reading

Fast track iOS app deployments with fastlane

If you have overseen the development for a relatively active iOS app, you might already know how often an app needs to be updated. Apple has tried to improve this process for the developer with continuous updates to XCode, but it is still a gross underestimation to even call the process *tedious*.

Keep reading

Handling Local Music Playlists

Last post of the series. Adding playlist support is going to be pretty simple. Let's start by creating a Realm model for saving our playlists locally.

Keep reading

To top