As software developers, we have an incredible opportunity to build products that can impact the world. That opportunity starts with empowering users and making sure they find value in our products.

When you build for the user, you avoid your own bias and assumptions, and focus on what works best for the user. Ask yourself the following questions to make sure you’re building a product that is valuable to the user

Is the user able to achieve their goal?

Your software should do what you built it to do. Actions in your software should be clear, and results should be expected. …

An application is a living, breathing code base that will continually change over time. As the application evolves, early decisions won’t scale, and shortcuts taken will reveal technical debt. When the time comes to address these problems, one thing you can start doing today to make refactoring tomorrow easier is using encapsulation.


Imagine your application has a User model, and the User can have a role. The role is stored as a column on the model.

# == Schema Information
# Table name: users
# id…

A list of the essential Mac applications I have installed on my computer. Hope you find something new or useful.

Listed by categories in alphabetical order.


1Password ($2.99/mo for individual or $4.99/mo for family)

1Password is the premier password manager available for the mac (and for any other devices you own). There are many password managers out there, some open source, and some free. None of them compare to the ease of use and experience you get with 1Password. Also, it’s very affordable if you share with your family and friends.

Pro tip: Use the cmd + \ shortcut to quickly fill in saved passwords in any application…

To demonstrate a thread safe implementation of a connection pool, we will use a class instance variable, a Mutex, and the connection_pool gem.

Class Instance Variables

Class instance variables work like regular class variables except for two main differences.

  1. Class instance variables are available only to class methods and not to instance methods.
  2. Class instance variables are not shared with sub-classes. They belong exclusively to the class itself.

We will use class instance variables (mainly for reason 1) to share a connection pool which all threads will be able to access. …

Jay Shah

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store