Scott Watermasysk Husband, Father, Bootstrapper, Developer, Builder, Shipper.
Shorts are small posts and links. These are auto posted to @scottw on Twitter.

📝 Links on Twitter are always 23 characters

I have been thinking more about how to how to simplify cross posting to Twitter and did not realize any link you post on Twitter counts as 23 characters.

This is regardless of whether or not you use a URL shortener. I love the simplicity, but feels like an odd choice.

# - Jul 11, 2019

What's My DNS?

This is a nice (free) app that will query your DNS from around the world. Really helpful to see if/when/where you might be failing.

# - Jul 09, 2019

Eq & Eql with RSpec

I have used RSpec almost daily for 8+ years and just learned there is an eq and eql.

The difference makes complete sense but missed it all of this time.

# - Jul 03, 2019

VSCode Settings Sync

Not as easy as just backing up your dotfiles with Vim, but still nice to be able to reload everything with a click or two.

# - Jun 18, 2019

Roadblocks vs. Speed bumps

via @robwalling

“As a founder, you can choose to look at an obstacle as something that keeps you from moving forward (a roadblock), or as something that slows you down for a minute as you continue along your path (a speed bump)”

# - Jun 18, 2019

Project Benatar

This looks really interesting. Making it easier to publish content to a site like and still “owning” your content elsewhere would be great.

# - Jun 18, 2019

CSS Grid Layouts

Lots of great examples for getting a jump start on a modern grid layout.

# - Jun 16, 2019

Don't forget to start small

“Whatever plan you have for your product is probably too ambitious for a starting point.”

# - Jun 16, 2019

🐞 Debugging Tools + Tips

I really enjoyed the section (26:50) on the debugging mindset @wesbos and @stolinski

I often feel like isolating the issue is my developer superpower. Then again, it could be I just write a lot of bad code, so I am well practiced.

# - Jun 13, 2019

👿 You don’t need ReCAPTCHA

ReCAPTCHA is a massive pimple on the ass of the internet. Not to mention a major privacy invasion. Avoid it at all costs.

# - Jun 12, 2019

Self-Host Your Static Assets

Excellent write up. Access to a CDN used to be complex and come at a high cost. It is now easily available and often free/very cheap.

# - Jun 10, 2019

SRI Hash Generator

allows web developers to ensure that resources hosted on third-party servers have not been tampered with. Use of SRI is recommended as a best-practice, whenever libraries are loaded from a third-party source.

# - Jun 10, 2019


This is a great way to not only read and manage RSS feeds, but keep up on selected Twitter accounts and newsletters.

# - Jun 10, 2019

Interviewing Red Flags

All of this. Our industry needs to fix this ASAP. The world needs many more good developers. These behaviors push good people out of our industry.

# - Jun 10, 2019


Monodraw allows you to easily create text-based art and visually represent algorithms, data structures, binary formats and more.

A nice way to update your code documentation game.

# - Jun 06, 2019

macOS 10.15 Beta Release Notes

Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages.

# - Jun 06, 2019

💡 TIL: Locking Versions on Netlify

I ran into an interesting build issue after updating a couple of Ruby gems and NPM modules.

By default, when you create a new site on Netlify your Ruby/Node/etc. versions are locked to recent defaults unless you explicitly specify the versions using .ruby-version, .nvmrc, etc.

I suggest going forward, you always an explicit version. By locking the core dependency versions, you will help ensure if you can build it locally, you will likely be able to build it on the remote servers as well.

# - May 29, 2019

💡 TIL: Overriding a .gitignore

In my default .gitignore (~/.gitignore), I have .ruby-version excluded.

I needed to include a .ruby-version file to fix a Netlify build issue.

Today I learned you can override a .gitignore with a --force argument.

git add .ruby-version --force
# - May 29, 2019

Gel: A modern gem manager

This looks amazing.

Unfortunately, it is not playing well with Bootsnap (which might not be an issue with the other perf gains), but it has issues with Pry which is a deal breaker for now.

# - May 21, 2019

EPS - Machine learning for Ruby

This looks interesting for getting started with machine learning for Ruby quickly. I love that (as of now) it has zero dependencies.

# - May 20, 2019

🎧 30 Second Powerbeats Pro Review

Quick initial review:

  • It does not look like I left a Q-tip in my ear
  • They are not white
  • Good snug fit with multiple sizes available
  • Good sound quality

As of today, recommended.

# - May 13, 2019

Chrome Extension for Rails

A nifty tool to get rails data into the Chrome dev console. Even has details on what was added or used from the cache.

# - May 09, 2019

Spring 2019 Podcasts

Much like my editor theme, my tastes and interests in podcasts fluctuate.

Here are some of the newer ones I am listening to:

Much like my editor theme, my tastes and interests in podcasts fluctuate.

Here are some of the newer ones I am listening to:

# - May 08, 2019

💡🤔 Early Thoughts on TypeScript

I have not written enough TypeScript to know if I love it, hate it, or am just indifferent. In building my first small project, I found myself fumbling around the types and syntax quite a bit.

However, in just about every case, where I compiler complained about lack of type or an invalid type it saved me from code that likely would not have worked. Even better, the speed at which you receive the feedback is impressive.

# - May 08, 2019

now dev

I love this trend (Netlify did something similar) of making it simple to run your hosted environment locally.

# - May 02, 2019

⌨️ 😮What the Shortcut?

I could not figure out why VSCode’s shortcut for the command pallet was not working (⌘ + ⇧ + P). (There was another app bound the shortcut.)

How do you find out which app is bound to a specific shortcut?

It turns out there is an excellent (free) app for that ShortcutDetective.

You have to enable the accessibility settings, but a couple of seconds later, I found the bugger….Noizio (which is a great app as well).

# - May 01, 2019

Jekyll Purgecss

This plugin (once we go live) will decrease the CSS size of our BootStrap marketing site by about 65%. Not bad for a couple of minutes of work.

# - Apr 26, 2019

❄️ Nord

I need to be honest with myself (and you). I will switch my IDE theme at least once a month. Every month, I swear this is the one and I dump it every time.

Probably the wrong time of year for this, but I am a big fan (for now😏)

# - Apr 23, 2019


This might be my favorite Kickstater to date. Works exactly as billed. Stick it to the bottom of your laptop and you have an on demand stand. Note: it does nothing to prevent your MBP keyboard from crapping out on you. 😏

Moft Back Moft Front

# - Apr 22, 2019

🔮 Sorbet

This looks interesting (A static type checker for Ruby) especially as I start to experiment with TypeScript (for JavaScript).

# - Apr 22, 2019

⌨️ Keyboardio

There are so many keyboards I would love to try out. This one and the Ergo are at the top of the list.

# - Apr 22, 2019

Profiling the Top 100 Rails Committers

@gilesgoatboy is profiling each of the top 100 committers to Rails. A huge thanks to everyone who has helped build Rails and a thanks to Giles for profiling those who dedicated some much of their time.

# - Apr 22, 2019

Should've been here by now.

Item #5 - “Get to work” is magic. If you really want to do something, make sure we make a little progress every day. Tomorrow you will be thankful for the small amount of progress you made today.

# - Apr 21, 2019


Always impresses me with what can be done with a single web page.

# - Apr 21, 2019

👨‍💻 RunKit

Another interesting way to write and share JavaScript in the browser. It even lets you set up an endpoint.

# - Apr 17, 2019

🏎️ LOC

Lighting fast lines of code counter. Installs easily with `brew install loc’.

# - Apr 11, 2019

TIL: Do Not Name a Postgres Table User

Working through a handful of JavaScript ORM tools and twice today I accidentally created a table called User.

This conflicts with Postgres’s own User table. Postgres is OK with this assuming you use quotes around user in your queries (and it becomes case sensitive).

Loosely translated, do not name your table User. I guess if you are switching databases, the above is necessary, but it is probably just as easy to rename your table at that point.

# - Apr 11, 2019

Netlify Dev

This looks excellent and will greatly improve the feedback loop with @netlify.

# - Apr 10, 2019

PostgreSQL DBaaS Calculator

Nice way to compare various pricing.

I will say that while @Heroku comes out more expensive, it has been rock solid for us for nearly 8 years now.

# - Apr 10, 2019

Devise Passwords

Interesting breakdown of how device stores and salts passwords without the need for a separate password_salt column.

# - Apr 08, 2019


Nice CSS styling with no CSS classes/etc. This looks great for prototyping and demo apps.

# - Apr 08, 2019


One click IDE for Github. Just point it at a repo and you are off and running. I even wrote this file in it using my own ruby helpers.

# - Apr 08, 2019

A fake SMTP server to test and view emails in development.

I am a long time happy MailCatcher user, but I love the idea of something that just runs somewhere else and is easily accessible in my browser.

# - Apr 08, 2019

The site’s title says it all: “Web development, illustrated”.

# - Apr 05, 2019

Big Timer

Very well put together full screen timer.

Highly focused and clean web apps like this make me smile.

# - Apr 05, 2019

Rediscovering JavaScript

Great book by Venkat Subramaniam which helped connect the dots on a bunch of newish JavaScript stuff. Definitely recommend it.

# - Apr 05, 2019

Faster QuickTime Videos

If you want to speed up a QuickTime video, hold down ⌥ (option) and click the » on the video. Each click will speed up by about .1x all the way up to 2x.

# - Apr 04, 2019

Visual Studio Live Share

This looks very promising. I also love the built in option to share with a large(r) audience.

# - Apr 04, 2019

Vim and TypeScript

Out of the box, Vim does not know what to do with TypeScript.

These two plugins make it a much better experience.

Syntax: TSServer:

# - Apr 03, 2019

😕 TypeScript

Starting to dig into TypeScript. I am not sure if I love it or absolutely hate it.

# - Apr 02, 2019

e-petitions Source Code

The code base for the UK Government’s e-petitions service. After a quick browse, this looks very well put together.

The Ruby 2.2 requirement is a bit of a bummer.

# - Apr 01, 2019

Revisiting delayed_job

After browsing the e-petition and source the one ruby gem that stood out to me is DJ. I am a huge fan of Sidekiq and use it everywhere. However, for small side projects, I might need to revisit DJ.

# - Apr 01, 2019


Speaking of intellisense/autocompletion in Vim…I am still very happy with TabNine. All I can say is “It Just Works”.

# - Apr 01, 2019


Intellisense engine for vim8 & neovim, full language server protocol support as VSCode.

There are a couple of extra steps to get Ruby setup but seems to work really well. Surprisingly no JavaScript support as far as I can tell.

# - Apr 01, 2019

🧰 RailsDiff

Handy tool to display configuration changes between Rails versions.

# - Mar 29, 2019

Vs Code Tab By Number

One of the things that trips me up with VS Code is my muscle memory for switching tabs with ⌘ + number. I used this often with Atom and I am pretty sure I picked it from Sublime and/or Textmate.

Digging through the existing bindings, you can do this today with ⌃ + number. What makes this worse for me, ⌘ + 1, ⌘ + 2, etc do something today, but I am honestly not sure what it is. :)

There is an Atom commands plugin, but I do not need (or want) everything that comes with it. Instead, I went ahead and edited the following keybindings (under workbench.action.openEditorAtIndex).

Tabs by Number Bindings

# - Mar 28, 2019

FiraCode in VS Code

Instructions on setting up Fire Code (and even better, FiraCode-Retina) in VS Code.

And if I could remember that it is Fira and not Fire, I might not have needed them.

# - Mar 28, 2019

The Market

From today’s Daily Stoic:

“The market might be rational…but the people who comprise it are not.”

# - Mar 27, 2019

Sane and Sustainable Growth

Really enjoyed this week’s Art of the Product with @r00k and @stympy. The Honeybadger approach to conference sponsorships is much smarter than what we have tried ourselves.

# - Mar 27, 2019

Brexit Petitions & CodeSandbox

JavaScript has the best toys. If you are just getting started in code, this is where I would recommend getting started.

I am hoping to build an app with my daughter this summer. It will be written in JavaScript.

# - Mar 26, 2019


This Ruby gem simplifies access to some additional Postgres features (tags, hstore, jsonb) from within ActiveRecord.

# - Mar 26, 2019

Table Print Gem

Wow! Superb tool to easily view data in a highly readable table format in IRB (Rails console/etc).

# - Mar 26, 2019

Sorting Your Gems

I was looking through the source, and the first thing that jumped out at me was the Gemfile was sorted (within each group). This made it much easier to scan and think about their dependencies.

Using Vim, I was able to sort my Gemfile in a couple of seconds.

  1. Select the lines within the group (or all of those outside of a group).
  2. enter command mode (:) and type sort

That’s it. Now, if you were like me, you still sometimes flipflop between ‘ and “ (working on it!), you will need to pick one (“) and do a find and replace %s/'/"/g as well otherwise things will not sort quite right.

# - Mar 25, 2019

Active Record Query Trace

Rails plugin that logs/displays a backtrace of all SQL queries executed by Active Record.

# - Mar 25, 2019

Better than MVP

“Your smallest viable audience holds you to account. It forces a focus and gives you nowhere to hide.”

This is a much better way to think about your next product. What is the smallest audience you can target and still be successful?

# - Mar 25, 2019

Do Not Overthink Ruby

I was reading through the Ruby regex docs trying to figure out how to iterate over a string and replace all the matches of a particular pattern.

The tricky part is the matches are not one to one (not just a find and replace). I tried a bunch of different things and then started wishing gsub took a block….turns out it already does this.


"1234".gsub(/\d/) {|i| i.to_i * 2} # 2468

Even better, it handles all substitution

"Square this number: 5".gsub(/\d/) {|i| i.to_i * i_to_i}
# Square this number: 25
# - Mar 21, 2019


One of the best ways to improve page speed and reduce memory is to skip your ORM, especially when you are doing multiple small repetitive looks ups (ie, does a record existing in N tables).

This gem makes this approach very easy.

# - Mar 19, 2019


“If you are NOT a professional designer…design fewer things.”

This is my favorite line from our newsletters/blog in the eight years since we started.

Focus on the things that matter and that you can do well (and quickly).

# - Mar 13, 2019

Heroku Ruby Language Metrics

Interesting new beta metrics from Heroku. Set up is a couple of command line steps and adding a gem.

It is nice to see Heroku adding options like this which likely help reduce your short term costs.

# - Mar 12, 2019

TIL: Curly Bracket Substitution

You can use curly brackets for quick substitution in a shell command.

Curly Backet Example

Instead of manually typing the path out twice (or even tab completing it), you can list the parts to be swapped within curly brackets ({}).

# - Mar 12, 2019

CtrlP Shortcuts for Rails

I liked how @garybernhardt had specific rails shortcuts in vim for his Selecta script. As a fan of CtrlP + Ag, I did not want to switch, so I came up with the following which works well.

map <leader>gv :CtrlP app/views<cr>
map <leader>ga :CtrlP app/assets<cr>
map <leader>gc :CtrlP app/controllers<cr>
map <leader>gw :CtrlP app/workers<cr>
map <leader>gm :CtrlP app/models<cr>
map <leader>gl :CtrlP lib<cr>
map <leader>gs :CtrlP spec<cr>

The pattern should be obvious. One mistake I initially made was using:

map <leader>gl :CtrlP<cr>lib/

This ends up just entering lib/ for you in the search and does not explicitly limit the search to the lib directory. This is noticeably slower since each keystroke is a wasted search. Also, with a small directory name like lib, it is easy to have invalid fuzzy matches. The CtrlP + directory and then enter keeps the search focused on the specified directory only.

# - Mar 11, 2019

Git Orphans and WorkingTrees

Orphan branches and workingtrees are both new to me. The article is about using storing GitHub pages in the same repo as the main project, but I could see these both being handy for a variety of tasks.

# - Mar 11, 2019

When to Use MicroServices

Best explanation of when and when not to use microservices I have read so far - “In the absence of the relevant people problems, microservices create software problems.”

# - Mar 11, 2019

Gruvbox Contrast and ColorScheme Order

In cleaning up my .vimrc, I thought I completely screwed something up. Turns out it was:

If you are setting the value of g:gruvbox_contrast_dark or g:gruvbox_contrast_light and do not see any change try setting the contrast before colorscheme gruvbox in your configuration.

# - Mar 09, 2019

The Early Bird vs. The Night Owl

I am in the early bird camp. I find I get more done because at 5:00 am there is not anything else vying for my attention (hey @sixers). The tradeoff is usually bad TV for learning, building, and shipping.

# - Mar 08, 2019

Proxy with Curl

I was working on some reverse proxying today, and I could not for the life of me figure out which headers I needed to make it work.

I would go to the server, make a change, then go to the browser and refresh and so on and so on…

Then it hit me; I was making this way to complicated. An easier solution was to use curl. Two minutes later, I was up and running.

curl --header 'Origin:'

Origin (and X-Forwarded-Host) are common, but different servers/apps have various requirements. Using curl like this makes it far faster to test out without having to reconfigure your server.

# - Mar 07, 2019


A plugin to Run a command across all installed rubies.

With it, you can do something like updating all Ruby gem systems.

rbenv each gem update --system

Hat tip to @andrewculver

# - Mar 07, 2019

What's going on with Indie Hackers?

IH is a great community, but the site is everything that is wrong with too much JavaScript.

I really wish BootstrappedFM’s community had kept it going.

# - Mar 06, 2019


There are many GUI database tools available. TablePlus caught my attention because it supports so many different types of databases (especially PostgreSQL and Redis).

# - Mar 06, 2019


Free, quick, OSS tool to hide menu bar items.

I initially missed you need to drag them while holding ⌘.

# - Mar 06, 2019

Fire Code’s Retina

About a week in and I am still loving Fire Code’s Retina typeface. I have already eliminated DejaVu. I still need to spend a little more time with Hack before declaring it the winner.

# - Mar 05, 2019

Spotify Focus >

I have been an off and on subscriber to It is a good app but has some connectivity issues.

Instead, I have been using Spotify’s Focus genre. It has more consistent access, a wider variety, and it is something I was already paying for.

# - Mar 05, 2019

Are these your kind of people?

The most important question you should ask yourself before you start a new business: Are the people already in this market the type of people you want to help be successful?

Vitamin or medicine? B2B > B2C. Can you charge more?

These are important and need careful consideration. But these questions are minor compared to asking yourself is this where you want to spend the next decade? Are these my kind of people?

# - Mar 05, 2019

Shorti Update for Plain Text

Made a change to Shorti makes it much easier to script.

Now (well, four weeks ago 😞) I made a change to only return JSON if the API request sets the accept header to application/json.

# - Mar 01, 2019

🆕Jekyll Rest

If you use Jekyll, I wrote a little API to help with automation. I am still working on some more details. In the meantime, I would love to hear what you think about it.

# - Mar 01, 2019

🏫 DotFiles & White Space

I could spend hours reading dotfiles. I always learn something new.

Highlight trailing white space in vim via

`set list listchars=trail:.,tab:>.’ ‘highlight SpecialKey ctermfg=DarkGrey ctermbg=Black’

# - Mar 01, 2019

Using CSS Grid the right way

CSS Grid is a major step forward and I am confident you will it everywhere in the coming months/years.

This looks like a very nice guide for starting on a solid foundation.

# - Mar 01, 2019

🐛 Debugging in Ruby

Debugging can easily be over complicated. In most cases, simple tools are all you need.

Bundle open, binding.pry, and a couple puts is my go to procedure.

# - Mar 01, 2019

📖TIL: Terminal Command with an Editor

via @bphogan’s excellent Small, Sharp, Software Tools: type ⌃x ⌃e and it will open the current command in your favorite editor.

Once you save your changes the command will execute. 💣

# - Feb 28, 2019


Recently started using the Gruvbox theme.

I love that it has both a dark and light option. It totes itself on being better at contrast than Solarized and I have to agree (well, at least it feels better looking at it).


For both the dark and light options I felt most comfortable with the hard option for contrast. For dark, soft and medium where OK. For light, on hard worked.

Mixing it in withe Fire Code Retina and everything feels brand new.

# - Feb 27, 2019

Programming Fonts - Test Drive

A terrific resource to test drive free programmer fonts. My top free choices: Fire Code, DejaVu Mono, and Hack. I am leaning towards Fire Code’s Retina typeface.

# - Feb 27, 2019

Kung Fu

The money line: “The 10,000th biggest company in the world is a very successful company, as is the two-person company where the founders each take home $300k/year.”

We need more discussion on success not being equal to absolute revenue and team size

# - Feb 27, 2019


A dark theme for just about everything. If “dark” is your jam and you want Vim, Alfred, ZSH, iTerm, etc. to all match, this is a great theme.

# - Feb 27, 2019

Tailwind CSS Cheat Sheet

If you know what you are looking for in Tailwind, but cannot remember exactly how it is named, this is really helpful. Thankfully I am starting to need it and the official docs less.

# - Feb 27, 2019

Ruby - Who Called This Method?

I wanted to add a header on all my PostMark emails. Instead of manually editing each method, I dropped this one-liner in.

headers["X-PM-Tag"] = caller[0][/.*’/][1..-2]`

Now, each email gets tagged with the current mailer method.

# - Feb 26, 2019


This has been on my list to play with forever. Sequel provides a nice mini layer directly on top of SQL. Sometimes all the setup to use an ORM is not worth it. The setup for Sequel is simple and there are lots of extras for things like models and migrations if you need to go to that level.

# - Feb 25, 2019

🤘 Multiple Step Zapier

My first time using Zapier for multiple steps. Never realized you can use the data from multiple steps in others. This makes Zapier infinitely more useful than before (and I was already a big fan).

# - Feb 25, 2019

📕 Company of One

Great book by @pjrvs. Biggest personal take away - before hiring, see if there are options to automate the tasks driving the hire. Being busy is not enough and can come back to bite you in the future.

# - Feb 25, 2019

Squiggly Heredoc

Continueing the trend of things that existed for years in Ruby without my knowledge…

Heredocs have often had weird formatting due to leading white spaces. Active Support has a helper method strip_heredoc, but since Ruby 2.3, you can use the squiggly ‘~’ instead.



But now you can do:


I have been trying to be more cognizant of dependencies. Seems trivial, but this solved a big problem with my Jekyll Rest project and did not require another dependency.

# - Feb 25, 2019


I have been playing around with this the last couple of days. Impressed with it’s simplicity. If I move forward with Teensy, it will likely be built on top of Roda.

# - Feb 25, 2019

From Email to Jekyll to Netlify

Assuming everything goes according to plan, you should see this message on Monday morning.

Prior it started in my inbox, hit the iCloud server, was forwarded to Zapier who pinged my server. From my server it was sent to Github who promptly let Netlify know there was something new. Netlify rebuilt my site and eventually Buffer noticed the new content and sent it to Twitter.

A little over complicated? Yes. But still awesome and very useful.

# - Feb 25, 2019

Icon SVG

There are so many great SVG resources today. Unfortunately, many of them are also quite slimy. This one, IconSVG, looks to be one of the good ones. Simple, clean, and free.

# - Feb 22, 2019

🧪 Regex 101

I still like the simplicity of Rubular (and the Ruby focus), but being able to also write multiple tests around a regular expression in the browser is a nice very bonus.

# - Feb 21, 2019

🖼️ unDraw

An impressively long list of quality open source illustrations. You can customize the main color and easily download tiny SVGs and PNGs.

# - Feb 21, 2019

Joe Schmoe

“An illustrated avatar collection for developers and designers”

I love simple and functional tools like this. Easy and free to use as well.

# - Feb 20, 2019


“is essentially a curated clipboard history”. I use this app all the time now and for much more than just code.

I have a bad habit of hitting ⌘+c multiple times which meant everything was going to SourceNote. I changed the short cut to ⇧⌘+c. 💯

# - Feb 20, 2019

Announcing Teensy: A little bitty ruby serverless framework

I was playing around with FaaStRuby when it dawned on me that everything needed to build my own serverless ruby framework was right in front me (Heroku + Sinatra).

Then, all I remember seeing is dollar signs and code flying across my terminal. On my second git push to Heroku, Teensy was born.

I am only semi-joking. Most of what you would do ‘serverless’ could easily be accomplished with this code.

If I am really missing the mark on some thing, please let me know @scottw.

# - Feb 19, 2019

Hey Guys

This is a horrible way to start an email or post to an online forum to a community at large.

What to replace it with? Hello, Howdy Folks (always fun!), or nothing.

# - Feb 18, 2019

Magic Login Links

I initially liked the idea of magic login links. One less password sounded great. But now, I find they only cause confusion and slow me down, especially in native apps where a password manager may now work.

I must have half a dozen unused Notion accounts. Did I use my work email? My Gmail? What about my personal email? With notion, in particular, they just create an account for any email you enter.

Please keep it simple and just let me enter a username and password. If you want to confirm the email after I sign in, go for it (but please don’t).

# - Feb 18, 2019

Don’t Get Clever with Login Forms

You could remove login from the title and it would be even better.

The trend of separate username and password forms cannot die fast enough.

# - Feb 18, 2019


Another nifty tool for navigating and exploring git history. The built-in fuzzy search is an added bonus.

# - Feb 18, 2019

Programming Language Quirks

With Ruby, I am generally joyed by the many little language quicks. My reaction is almost always, “hmm…that is kind of nice”.

However, when it comes to JavaScript it is generally, “Who the F thought that was a good idea”.

Selection bias for sure…but you can not deny one was written for the joy of programming and the other got lucky.

# - Feb 18, 2019

💡 Less SaaS❓

It is increasingly easier to deploy small apps and services via Docker, Heroku and Netlify Buttons, and Digitial Ocean droplets to just name a few.

If you factor in privacy concerns, I am wondering (and hoping to a certain extent) if we will see a push away from SaaS and more semi-self hosting.

# - Feb 15, 2019

A Guide to Using Ruby on Rails Application Templates

I have been slowly working on and researching my own Rails Template.

I find the thought of just needing to do the same initial setup over again is enough to make me put off building something new.

# - Feb 15, 2019

👏 Git History

An impressively easy way to view all the changes for any file in Git. You can run it locally on any git repo or on Github with a specified URL.

If I had one wish, it would be to optionally see what changed between two commits.

# - Feb 15, 2019

👩‍💻👨‍💻 - Rubanok

I have not used this myself yet, but I have many times built “query” objects to make active record query decisions based on params in controllers. This looks like a nice way to standardize these APIs.

# - Feb 14, 2019


This is an excellent replacement for RequestBin. Looks to be feature comparable. No idea who/what is behind it, but I am glad it is an option.

# - Feb 14, 2019

“uses just-in-time preloading — it preloads a page right before a user clicks on it.”

It is not that helpful on a site without proper HTTP caching, but on a static site with Netlify, fast pages get even faster.

# - Feb 14, 2019

Using Emmet for Vim

I love the suggestion to remap the emmet leader key let g:user_emmet_leader_key=','.

It instantly becomes 10x more useful.

# - Feb 14, 2019

Corrupting Google?

I wonder if the rocket growth of less than scrupulous companies like Facebook and Uber is ultimately what cost Google to lose its “don’t be evil” way.

You see them quite literally printing money, stealing your best talent and you start to think, why not us?

# - Feb 13, 2019

👨‍💻 Carbonize

Carbon is already a great display code in a tweet (or any environment you do not control).

Carbonize is a way to speed it all up on your Mac. The drag and drop support is very handy.

# - Feb 12, 2019

Rubular: a Ruby regular expression editor

Rubular can be used outside of Ruby as well, but it is optimized for Ruby regular expressions.

I have used it for years and I would bet on most weeks I visit at least once per week.

# - Feb 12, 2019


I am continually impressed with what can be accomplished with Zapier. It is very polished, has great support, and is an ideal way to link together multiple services.

Yesterday I was able to help a customer wire up a brand new integration using two simple webhooks.

The first took a webhook from the customer’s ‘form vendor’ sent the data Zapier. The next webhook was from within Zapier and posted back to KickoffLabs. All in, it took less than 10 minutes to set up (and most was trying to figure out how to use the customer’s form vendor).

# - Feb 12, 2019

Explain Shell

Ever wanted to know what that long shell command you are copy and pasting from a random website is actually going to do?

# - Feb 12, 2019

Comparing Tiny, Indie, and Earnest

I am still not sure what I think about “venture bootstrapping”, but if it works for you, this is a great overview of what short and long term costs may look like.

# - Feb 11, 2019

DasKeyboard with Blood Sugar

I didn’t test this keyboard because I didn’t want my keyboard to be connected to the internet (and it does not appear to be Mac friendly)

Having said that, this is very interesting.

# - Feb 11, 2019

Profitable Side Projects

I have been using side projects more in recent months to jump-start learning new technologies and automating repetitive tasks.

The “side” benefit has is seeing my main business (@kickofflabs) with a fresh perspective.

# - Feb 10, 2019

Taking Stimulus.js for a ride

Josef Strzibny on Stimulus:

Nevertheless, I like its use of a few conventions to standardize simple JavaScript code that would otherwise get unwieldy soon.

# - Feb 10, 2019

Ruby 2.7  Enumerable#tally

I am looking forward to this. I often use code that looks like this:

h =

items.each {|item| h[item] += 1}

What makes this work is whatever you pass to Hash in the initializer is used as the default value.

# - Feb 10, 2019

Examples of Passive Voice (And How To Fix Them)

I eagerly await the AI to fix this automatically.

Passive voice is something I rarely recognize on my own, but when I take the time to rewrite it in an active voice, it is always better.

# - Feb 10, 2019


gotop is an activity monitor for your terminal. You can install it in a couple of seconds via homebrew:

brew tap cjbassi/gotop
brew install gotop

Works great and I have love the vim inspired keyboard navigation.

# - Feb 09, 2019

Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

This was a horrible way to spend a Friday afternoon. At some point, I installed something via Homebrew that borked/updated readline.

I still do not understand the issue 100%, but my best guess is ruby gems with native extensions were failing because of the dependency change. How it happened? Computers!

Re-installing Ruby (rbenv install ruby_version) seems to have addressed most of the issues (also needed to update bootstap to a newer version).

Wish I had a better recommendation for how to fix it and why it worked, but hopefully this is start for others.

# - Feb 08, 2019


Console app for syntax highlighting. Easily installed via brew install bat

# - Feb 08, 2019

Open Graph Image as a Service

Open source and easily hostable (via now) open graph images.

Setting up locally takes a couple of steps, but deploying it as easy as it gets.

# - Feb 08, 2019

Sparks of Joy - 1

Here are some nice newish things for me:

  1. @ScoutAPM - Simple and effective app performance monitoring
  2. @zeithq (now) - I am just scratching the service, but impressed the zero to useful experience
# - Feb 08, 2019

Mechanical Keyboard Switch Sounds

I am likely making another keyboard change (more on that later). In addition, I am second guessing the MX Blues. This video (just to the 1:30 mark) has a solid comparison if you are interested.

# - Feb 07, 2019


I saw this little doozy as recommend code for (Ruby) API access:

http.verify_mode = OpenSSL::SSL::VERIFY_NONE

This effectively disables SSL checks and is not something anyone should be recommending….ever.

# - Feb 07, 2019

❤️ Stimulus

I don’t get the fuss over React Hooks (likely since I have yet to touch React). 😎

I am surprised there is not more written about Stimulus. It is the first thing I have seen in years that I wish we had as an option when we started KickoffLabs.

# - Feb 06, 2019

A Couple of Months with Grammarly

Grammarly had a great deal around the new year on the paid plan. I am certainly not the best endorsement for a grammar/spelling product, but it has helped me quite a bit.

I find it helps me get into the zone more since I am not as worried about cleaning up what I write.

The out of the browser tools/integrations still need work, but overall it is very helpful.

# - Feb 06, 2019

Free Heroku in 2019

Good overview of what you can run on the side for free(ish). I always forget about CloudFlare’s free SSL option.

# - Feb 06, 2019

Ruby Standard

The lonely operator I mentioned before was flushed out by the excellent Ruby Stanard gem.

I have started to incorporate this into most of the projects recently. It does a great job pointing out obvious issues and helps me write more consistent code.

# - Feb 05, 2019

Ruby Lonely Operator

Ruby 2.3 introduced a feature called the “Lonely Operator” (which I somehow missed until recently).

Instead of:

user && user.address && user.address.street

You can write it like this:


# - Feb 05, 2019

Duet Display

Turn your iPad into a second monitor! The app, once you get it installed, is great1.

The install steps and experience is not exactly Apple like, but the end result is borderline magical.

  1. Ex-Apple Engineer tagline his horrible. ↩︎

# - Feb 05, 2019

Think Simpler

For my ‘shorts’ feature, I wanted to remove some of the friction publishing multiple times a day to a Jekyll blog.

My first thought was using the Github API. This involved getting a user token, understand the API, grabbing my content, using the API, etc. Then it hit me. The tool I was using to publish the post was local only at least for now. So instead of going through all the Github API hoopla, I just write to git.

Publish to Git

This version took all of 2 minutes to do (most of which was spent googling the -C flag).

# - Feb 04, 2019


Distraction-free writing in Vim. I have found it is helpful when you want to focus on a particular piece of code as well.

# - Feb 04, 2019

Faster Rails: How to Check if a Record Exists

ActiveRecord specific helpers will almost always do better than ActiveSupport helpers.

What makes this even more tricky is that when you initially write something, you may not have much data to test against.

# - Feb 04, 2019

Updating 1Password on OS X

I noticed 1Password had not been updated in a while. The background helper is too quick to restart before the AppStore can finish the installation.

The fix is to “super quit” 1Password with command+option+control+q (⌘⌥⌃q).

# - Feb 04, 2019

Quick Look for JSON

If you’re on macOS and have Homebrew installed, run brew cask install quicklook-json and Quick Look will let you look into JSON files properly.

Hat tip to @peterc

# - Feb 03, 2019

Insomnia REST Client

I have used Paw as my local API client for a couple of years, but recently switched to Insomnia. I am finding Insomnia much simpler and intuitive to use.

# - Feb 02, 2019

Heroku App.json

With this, you can set a lot of defaults on Heroku buttons as well as making easier (and more consistent) to deploy new application instances.

# - Feb 01, 2019

The myth of passive income – Paul Jarvis

“I never make products because I want to make money while I sleep or hear beeps on my phone alerting me of sales, while I sit around in my underpants. I make products because I enjoy making things and providing value to others.”

# - Feb 01, 2019

Tailwind and Stimulus: Declarative Done Right

It dawned on me today that TailWind and Stimulus is (if you squint hard enough) the declarative experience Microsoft tried to bring to market with the early versions of ASP.Net.

# - Feb 01, 2019

Git From Outside the Repo

You can use the -C flag to execute git commands from somewhere else on your computer:

git -C /some/other/path status
# - Feb 01, 2019


Built a little utility app with Stimulus. Set up was a breeze with the Webpacker gem.

Definitely something worth checking out.

# - Jan 31, 2019

Embracing Constraints

This is something I constantly struggle with when it comes to software.

At this point in my career, I can build just about anything given enough time. However, it often means I can get in my own way of just getting started.

This blog is a prime example. I have been going back and forth on how to mix quicker short form posts and longer content in my head for years…but once I just embraced the constraints of an existing product, I was able to finally make some progress.

# - Jan 31, 2019

Zone Vision

Zone Vision is a handy way to view DNS settings in your browser.

It is also easily sharable via a link which makes it a great tool if you have to support customers making DNS changes.

# - Jan 31, 2019

Jekyll Tailwind Starter

This project is a great starting point for a Jekyll site which leverages Tailwind. I also love the small scripts included to get going quickly.

# - Jan 31, 2019

Rails, Turbolinks, and Webpacker

Even if you want to push rails-ujs and turbolinks to webpacker, you probably still want to keep the turbolinks gem around. Otherwise, you must set the Turbolinks-Location on your own in your controllers.

# - Jan 31, 2019

Night Owl

A handy OS X menu bar app to quickly toggle in and out of Dark Mode. Also has an option to do it at a set time and sunrise/sunset.

# - Jan 29, 2019


Finally signed up on It is still all new and fresh, but I love the flow of the site. Plus, it is fast to navigate and use.

As of now, I regret waiting so long.

# - Jan 28, 2019

NVM and Default Version

I wanted to find the equivalent of rbenv’s global command for nvm: nvm alias default system - This will set the system version of node as the default.

# - Jan 25, 2019

Netlify CMS

Not the most obvious setup instructions and not sure how well it will scale as the amount of content grows, but it should remove some friction in writing these little shorts.

# - Jan 25, 2019


Really nice way to tinker with a webpage. I am ultimately very skeptical of everything Google and Chrome, but as of today, it is still the best browser for development…by far.

# - Jan 25, 2019

Company of One by Paul Jarvis

Finally gave up trying to read it (kids!) and bought the audio version.

Superb book and fits well with own model for growing a business long term. Recommended.

# - Jan 24, 2019

zsh nvm

This plugin is the first time I have been able to get NVM setup properly. It just works.

# - Jan 24, 2019

Jack Dorsey Interview

Interesting interview by Bill Simmons on the challenges of making Twitter better.

# - Jan 23, 2019

Carbon Now CLI

Really nice way to show code in tweets all from your terminal.

# - Jan 23, 2019


Best site I have found aggregating Ruby content. Updated daily.

# - Jan 23, 2019

First Short

The Shorts section of my blog is an attempt to capture small posts that would normally be wasted as tweets. If everything goes according to plan, they will render like normal tweets, but will exist outside of Twitter’s walled garden.

# - Jan 23, 2019