On December 1, 2020 I left Gusto after over 4 years of employment. It was my first job out of university. My first job residing in a city faraway from home. My first job with significant consequences.
My desire to leave had been building for months. I joined Gusto as a 22 year old fetus and had matured greatly since starting. I felt funny about the fact that I’d spent almost half of my twenties working for the same company. How much of my identity was tied to working there? Who was I without Gusto? …
When you think of the word “interview”, what comes to mind? Do you imagine a simple encounter between two people exchanging questions and answers? One in which all is well and professional? And everything seems to be running smoothly?
As a software engineer, I’ve interviewed close to hundreds of prospective candidates both in a technical and cultural capacity. The format consists of 45–60 minutes of either solving a technical challenge or asking questions that reveal if they’d be a good fit for the company.
As straightforward as the process may seem, I’ve had my fair share of incredibly awkward experiences which has revealed to me the messiness of the practice. …
Perhaps you are not comfortable or don’t know much about either of these two terms other than they start with the same four letters “auth”. Well, were you aware that the prefix “auth” is actually Greek for “self”? Both operations refer to being able to do things on one’s own behalf, but there are important distinctions between them that I will break down in plain English.
In the context of programming, authorization refers to checking that a user or entity has the ability to access specific resources based on their permissions.
Authorization is not the same thing as authentication. Authentication refers to a user or entity being able to prove their identity in order to access specific resources. …
If you’re intimidated by ActiveRecord
:joins then fear not, this article will break down a step-by-step guide for understanding and using them with ease in your own code.
The main motivation behind joins is to efficiently load data. With joins you can significantly reduce the time it takes to select records that fit the criteria you are looking for.
Let’s say we have 2 tables:
Company where a company has many employees.
# == Schema Information
# Table name: employees
# statusclass Employee < ApplicationRecord
end# == Schema Information
# Table name: companies
When I was a budding programmer and was requested to query data that involved more than one table, my stomach would drop and I would think to myself, “Well it was nice being a software developer while it lasted.”
This is unnecessarily dramatic. But let’s be honest, knowing how to use and distinguish joins in SQL can be a little confusing. However, with a bit of practice and some basic knowledge about how they work, they really aren’t bad at all!
So let’s jump into the four most common SQL joins.
Let’s say we have a group of cats and pet owners. …
In January 2019, Gusto became the preferred payroll provider of Xero in what was both companies’ largest software integrations to date.
Gems that I’ve included in every Rails app and Ruby gem I’ve worked on thus far are the following:
rspec (or rspec-rails for Rails)
rubocop (or rubocop-rails for Rails)
Note: TSPE stands for “Too short, please explain”
In the past few years, I’ve built a handful of Ruby based repos from scratch including Gusto’s Partner Directory as well as our OmniAuth strategy gem. While these projects have ranged from being Rails apps, to Rails engines, to Ruby gems, I’ve consistently used these three gems to lay the groundwork for development. …
One of the most unique and often misunderstood features of Ruby is blocks. Blocks are Ruby’s version of closures and can be used to make code more reusable and less verbose. But keywords such as
yield can be hard to grok at first and make this functionality a bit intimidating to work with. This article aims to go over block essentials and build up your knowledge piece by piece.
Blocks are anonymous functions whose return value will be applied to the method that invokes it. That’s quite a mouthful 😳 so let’s work up our understanding.
Blocks consist of code between a set of curly braces or a do/end pair. The former is the single-line definition and the latter is the multiline definition. …
I had convinced myself that I didn’t have enough time to study abroad in college. Even though I really wanted to do it, I was studying computer science as well as studio art and didn’t think I could find a school that would be able to fulfill my remaining class requirements. I vented about this over dinner with my mom one night at a cute Nepalese restaurant in my home town of Burlington, Vermont. My ever supportive and the best mother you could ask for responded “You should try talking to someone, maybe it could work out”. I realized she was right, why not try to make it happen? After some research as well as several meetings with the student exchange office and the heads of the CS and art departments, I found a school that offered all of the classes I could take in order to graduate on time. Shortly after, I found myself in Sydney, Australia at the University of New South Wales for my last semester as an undergrad student. …
In Rails, callbacks are hooks provided by Active Record that allow methods to run before or after a create, update, or destroy action occurs to an object. Since it can be hard to remember all of them and what they do, here is a quick reference for all current Rails 5 Active Record callbacks. An image version is provided at the bottom and a downloadable PDF can be found on my website.
Definitions of available Rails 5 callbacks based on the Ruby on Rails API dock. Listed in alphabetical order.
Called after a new or existing object is committed to the database. An
:on argument can be used to specify which action (create, update, or destroy) this callback should apply to. …