Crossing technical and personal boundaries: New project nerves

A really interesting thought from Chris Toomey from Thoughtbot’s ‘The Bikeshed’ podcast, that really elegantly clarifies my own thinking on imposter syndrome, feelings of inadequacy, and the strive to deliver value to a broad range of contexts. The work we do is purposefully somewhat challenging. We’re coming into organistions to try and help them, most often at sort of an...

Ubuntu laptop backup strategy

I recently upgraded my laptop from a 2013 Macbook Pro to a Lenovo Thinkpad T480. It’s great. I switched around my Ctrl key to the Windows key (where the Command key would be on a Mac keyboard), and everything has pretty much been perfect. One thing that I did need to rethink was my backup strategy, which, on my Macbook...

Upgrading Rails apps with rake app:update

It’s been awhile since I’ve done a Rails update. After this long working with the framework, I’ve learned that it’s much, much easier to keep things up to date with tools like bundle-audit so that things never get so bad that I’ve got a whole major version (or more!) to upgrade. Having said that, support legacy applications is just something...

Broadcast receiver pattern

I have recently had the chance to get stuck back into some native Android development. One of the things I really enjoy about working with the Android framework is that I get the chance to explore new patterns, and patterns that I have used before for Ruby, but not yet in Java. One of these new patterns is the idea...

Speeding up TimeMachine backups

TimeMachine is an incredibly smooth backup solution for Mac OS, but it can be a little slow, especially for initial backups or incremental backups that have a large amount of changes (such as a VM image being added to your filesystem or the typical I/O killer, many small files). I recently performed a TimeMachine backup to a brand new 1TB...

CURLing to a UNIX socket

In deployed environments, I often come across two Ruby application servers - Unicorn, and Puma. These servers are usually configured to listen on a UNIX socket file, usually located in the tmp/sockets directory of a Capistrano install, e.g. /home/deploy/appname/shared/tmp/sockets/appname.sock. It’s quite often useful to be able to connect to a UNIX socket to see if the application server is behaving...

tmux system clipboard copy & paste on Mac OS

I have recently begun using tmux as part of my everyday development process. It’s going great, but as somebody who uses a mixture of Mac OS applications like VS Code as well as terminal applications like git, vim, tail, cat, etc., the lack of system clipboard integration has really been hurting. I went out and did some research into how...

Pending block examples with RSpec

I have known about the different ways of marking tests as pending in RSpec for some time. When working on a feature for which there are already tests (e.g. cloning a similar feature where shared examples or a common starting point for tests can be used), it can be extremely convenient to temporarily mark as test as pending like so:...

https://v.redd.it video URLs

A couple of years ago, Reddit added support for video and gif hosting - basically in response to competition from Imgur and Giphy taking visitors offsite. This service works well, but they have been to some trouble to obfuscate things and make it a little hard to get to the raw video file - I guess to prevent hotlinking to...

Prevent unnecessary slowdown in IRB sessions with slow method calls

One of the convenient things that any interactive Ruby sesion (IRB) does for you is to inspect the return value of the statement it has just evaluated. This is normally great, but if you have something that takes a LONG time to evaluate and you don’t actually care about the result, it can cause the session to block completely unnecessarily....

I'm Josh McArthur, a web developer specializing in Ruby on Rails and Phoenix. I contribute code on GitHub and write blog posts about technology and hiking here.