Zero dependency package.json scripts

Photo by Pankaj Patel on Unsplash

There are lots of great primers on Git hooks out there, so if you’re new to the concept, take a little time to get comfortable first—we’ll get straight to the point here.

By default, Git stores client-side hooks in .git/hooks which is outside of version control. While packages like Husky are available to make creating and versioning hooks easy, I found the setup process for the newest version too close to a “roll your own” method to justify learning yet another set of commands.

Git provides a configurable setting called hooksPath in the core table of the .git/config file and…

Photo by Iker Urteaga on Unsplash

First of all, I’m a little upset it has taken me this long to realize that destructuring is so awesome! I find myself using it more and more for basic tasks on arrays and objects like unpacking, unnecessarily verbose tasks like assigning defaults, or giving data semantic meaning by assigning new variable names. There are the obvious ways to go about each of these, but I’ve really fallen in love with how much destructuring syntax allows me to express while keeping my code clean. It can turn some pretty hairy operations into one liners.

Before using destructuring syntax in production…

Simple implementation of typographical vertical rhythm for styled-components that is flexible and modular.


Import options

Use the default export as a base for global styles.

import { createGlobalStyle } from 'styled-components';
import typography from '@styles/typography'; // replace path

const GlobalStyle = createGlobalStyle`

Use module exports for granulated element styling.

import styled from 'styled-components';
import { h3, p } from '@styles/typography'; // replace path

const Card = styled.div`
.title {

.info {

Structure and modifying

baseFontSize is inversely related to the typographic scale. …

Photo by Andrew Neel on Unsplash

Attempting to stick to an ethos of understanding my tools, I try to take my vim configuration as far as possible before reaching for a plugin. Not that plugins are bad. In fact, there are some that I’d have a hard time living without (thanks to Tim Pope). But in doing so, I always manage to learn something about Vim itself which is part of the joy of learning it in the first place. So let’s see what Vim has for us under the hood.

If you learn better by video, this is a great one to get you up…

Photo by Hello I'm Nik 🎞 on Unsplash

Today we’ll look at aliasing two options, -i and -v, to three common Unix commands, cp, mv, and rm.


Add the following lines to the file where you keep your aliases:

alias cp="cp -iv"
alias mv="mv -iv"
alias rm="rm -iv"

Be sure to source the file into an existing session with source <path/to/your/aliases> or instantiate a new session by running zsh or by opening a new terminal window.

The Options

The option flags we will be using are very comparable between commands cp, mv, and rm.

-i has a slightly different behavior depending on the command that precedes it, but I generally…

Configuration options

Previous: Part 1 — Setup

Photo by Kimon Maritz on Unsplash

In part one we did some basic setup to get the history mechanism working in Zsh. In this article we will explore a few options to customize the Zsh environment using setopt in the .zshrc. The full list of options can be found in the documentation.


Default behavior is to overwrite the existing history file upon shell exit. The following are all methods of appending rather than rewriting the file — taking advantage of that potentially massive history size we set up in part one.


The difference being that APPEND_HISTORY appends lines…

Configuration setup

Next: Part 2 — Options

Photo by Timothy Newman on Unsplash

I recently combed through the dot (hidden) files in my mac’s home directory and was shocked to see just how polluted it had become. Now I know that there is no real downside to leaving these files where they were, but as I prefer to keep my development environment nice and tidy, I took the opportunity to take a closer look into some configurations that I had ignored up to this point.

Zsh config files

If you are unfamiliar with the types of zsh configuration files and their uses, I recommend looking through this article in a great…

Ryan Todd Garza

Principal software engineer — make stuff

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