Categories
React Tutorial

React Tutorial: Learn from Scratch – Part 1

react

In 2019, ReactJS (or simply just React) continues to be at the helm of the most popular frontend Javascript libraries and frameworks. It has a powerful array of features and a much shorter learning curve compared to its competitors (see Angular). In this tutorial series, I aim to create a React “manual” to learn it quickly from scratch. I will do so by following along the official guide and summarizing the most important features for reference. You are welcome to tag along. Also, if you think this tutorial is lacking something or is somehow unclear, please shoot me a note and let me know.

Categories
AWS Rails Ruby S3

S3: A Flexible Approach to Uploading in Rails

amazon s3

S3, Amazon’s Simple Storage Service, is a cheap, scalable, highly available, and overall great solution for storing huge bits of data and and thus reducing your database size. For awhile now, we’ve realized that our database is on its path to becoming expensive and unmanageable due its massive size. So we decided to migrate some of that data over to S3.

In this article I explain the approach we took to make any attribute S3able

Categories
Docker MacOS

Docker: the Problem with MacOS Catalina

Docker

We have been switching our local development setup slowly, but successfully to docker with NFS for speed. Almost everyone at the company is developing on a Mac system and so with the new Catalina release, everyone either pressed the “Update” button, or, like me, woke up to a new OS, got their cup of coffee, and typed in docker-compose up.

Categories
DRY Rails Ruby

Dry Schema: Decouple Validations from Rails Models

dry

Standard Ruby on Rails best practices suggest that we should define our validations on the model object. RoR gives you the tool, aka DSL (domain specific language), to implement these validations. For simple situations, say a sign up form, this works really well, but what about more complicated scenarios? What if your model serves several different controllers? Or what if, for example, different types of users could submit different values to the same model? Do we want to use messy if blocks to check the user type and apply the correct set of validations? Probably not. So whats the solution? Enter Dry-schema.

Categories
Iceland Travels

Iceland: Travel the Ring Road

Iceland is a breathtaking place in the truest sense of the word. Behind every tall mountain facing the ocean, past every volcanic field, and across every waterfall there is another wonder waiting to be seen. If you’ve ever read Norse mythology, you’d appreciate how the landscape fueled creation of the characters and their stories.

Categories
Nepal Travels

Nepal: Annapurna Base camp

It was a cold, snowy day in December when I decided to see the mountains of Annapurna and Machupuchare in Nepal… Nah, it was actually in the middle of October, and the weather was great! Not all stories worth writing about, need to be heroic. So, with no further lallygagging, here is my sweet tale of Nepal!

Categories
React Tutorial

React: Create a Responsive Navbar from Scratch

react

I wanted to create a responsive react navbar from scratch. I’m going to do this without using any CSS libraries just because I wanted to see if I can… I also wanted to refresh my memory on React. So here we go.

Categories
Ruby Sidekiq

Sidekiq: Invalidate jobs without batches

So you have a bunch of jobs lined up in Sidekiq.

But for some reason (user action, etc) you don’t need those jobs to execute anymore. So what do you do?

Categories
Ruby Trailblazer

Trailblazer 2.1: Activity, the new Operation!

In Trailblazer 2.1, we are introduced to a new concept: Activity.

Unlike Trailblazer 2.0, where Operation was king, activities have taken over as the main orchestrator of business logic. Good old operations are still there, but now they act as a wrapper around activities. Its one and the same, except activities are more powerful! Don’t worry though, its super easy to pick up and its backward compatibility makes switching a breathe.