How to Find Good Coffee

Barista Parlor Golden Sound Cafe View

This is the first post in a series about how to get started appreciating good coffee and preparing it at home. Before you go out and buy equipment or spend a lot on coffee, the first step is to know what a good cup of coffee can taste like. Without experience and even with good equipment you’re not likely to get a good result at home and may get frustrated and quit. The best way to taste good coffee is from a professional barista.

Find a Good Cafe

This will be easier if you live in an urban or suburban area. There’s fantastic coffee in Seattle, Portland, New York and Los Angeles, but you can also find delicious coffee in Indianapolis, Arkansas and Wisconsin. It just may take a bit more searching and a little luck. It is important to find the right type of cafe. Going to Starbucks or your local diner1 and ordering a straight black coffee may be the end of this experiment for you. So don’t do that.

How Do You Know What Makes a Good Cafe?

Find a “third wave coffee” cafe in your area. It’s not an official term, and you won’t find that many shops calling themselves that, but it’s as close as we’re going to get. For lack of a better definition, third wave means “they care about how the coffee beans are grown, roasted and brewed.” Coffee farming is a very labor-intensive process, and most coffee farmers earn next to nothing for their hard work. Part of this “third wave” has been increasing the sustainability of coffee farming and paying fair wages to farmers, but that’s a topic for another post. Google “third wave coffee in ” and see what comes up. Whenever I travel to a new place, one of my favorite things to do is try new cafes, and this is exactly what I do. There’s usually at least one if you’re in a decent sized city2. Leave a comment with your city if you’re having trouble and I’d be happy to make a recommendation.

If you’ve found some options, next look through their menus and ask these questions:

Signs it may be a good shop to try:

  1. Do they roast their own beans? Awesome, they may be a great place to try assuming they roast light3 and provide information on the region the beans are from4. You are in luck because a good local roaster is hard to beat.
  2. If not, do they use beans from a well known third wave roaster? This is a good list to start
  3. Their menu is primarily focused on the basics, espresso, americano, cappuccino, and filter coffee. You want to start with filter coffee, but it’s good to know that they know their basics.

Signs you may want to stay away:

  1. The menu is light on the basics in favor of things like raspberry banana mocha and dreamsicle latte.
  2. “We proudly brew Starbucks coffee.”
  3. Your barista can’t answer any questions about the coffee they are serving.

If you really have no options for good cafes in your area, try finding a friend who enjoys good coffee and ask them to make you a cup.

Barista Parlor's menu

A great example of a good (albeit hard to understand) menu

Taste Their Filter Coffee, Black

Once you’ve found a good cafe, go in and order a black coffee to stay. A paper cup is going to be a different experience than a hot mug. Drip is fine but go for a pour over if you feel like it, just don’t get too fancy. Pour over is a general term for any one of many manual brew methods. It will be more expensive, but likely tastier. It could also be terrible, depending on the cafe, so drip is a safer choice to start. If they can tell you the tasting notes for the coffee (they should) just go for something that you would like. Do not put cream and sugar in it! I am not going to lecture you on putting cream and sugar in your coffee, as much as I’d like to. However, it will defeat the purpose of learning to enjoy good coffee as you will taste the cream and the sugar, and we’re not trying to learn how to make dessert.

Drink it black.

Don’t just slam it back either. Let it cool slightly, and really focus on tasting the coffee. Try and pick out what flavors you taste. Most likely you’ll say “it tastes like coffee” and that’s fine. You may hate it. That’s OK too. It’s just one cup, and it’s possible this specific choice just wasn’t the coffee for you.

Repeat

Whether you liked it or not, try another coffee there and at another cafe, if possible. Go with a friend and you can each get a different coffee to try and share. If you continue to strike out it may be that coffee really isn’t your thing, and that’s fine but now you know.

It is an acquired taste. Just like wine, or whiskey or beer, each coffee has its own unique taste. Think of your cafe trip like a wine tasting. No one is visiting a vineyard with tiny bottle of hazelnut creamer up their sleeve and pouring it into their cabernet. You are there to taste the unique aspects of this coffee. And though you may not recognize it at first, your coffee does have unique aspects, you just need to train your palate to recognize them.

If you did enjoy it, now you’ve had a taste for what good coffee can be. Keep exploring different types of coffee and preparation methods and find which ones you prefer. Knowing what kinds of coffee you like will make good coffee prep at home much easier.

I do have to warn you though, once you’ve had really great coffee, it’s very hard to go back to an inferior version. This may happen to you, and you may never be able to drink gas station coffee, or the dirty brown water in your office breakroom again. This really is OK though, because my recommended approach to learning to make coffee is very portable and you can make it nearly anywhere. If you’d like get into coffee drinking, training your palate is the most important step, because it is how you will determine if you are making the right choices in your coffee preparation. That’s when it really starts to get fun and you find out which coffees you really enjoy. So even if you’re “ruined” forever by good coffee, you now have a whole world of coffee to explore.

Stay tuned for upcoming posts on how to taste and evaluate coffee and how to get started making great coffee at home.


  1. There’s something to be said about a friendly neighborhood cafe and its community aspects, but the goal here is to find high quality coffee, not community (that can come later!). 
  2. Foursquare has taken to listing the best places for third wave coffee in different cities, and the lists usually include Starbucks and Peet’s so beware the recommendations. 
  3. By roasting lighter, you can taste more of the inherent flavor of the beans, rather than the roasty burnt flavor you’re used to. 
  4. This may not seem important, but it shows that they likely know what they are doing when they can list the country, producer, altitude or harvest season on the bag. 

2016: Year In Review

I’ve tried for 5 years now to write a “year in review” post and failed every year.

For some reason, this year is different. I began my annual review post in early November. I’ve always been envious of those who can link back to their annual reviews and have this great body of content to look back on. Hopefully this is the first in a long line of them.

The two primary takeaways from this year for me: the importance of health (mental and physical) and the importance of having hard conversations.

I had more hard conversations this year (personally and professionally) than I ever have. I am generally one to shy away from conflict, or to continue to politely trudge through a bad situation to avoid hurting someone else’s feelings. While I can’t say that I have completely conquered that, I finally was able to have these conversations and 2017 is looking brighter for me just due to that. A tough conversation may not kill you, but avoiding it will.

On the health front, I had an overall really good year. Around July, I just decided one day to start listening to my wife (a personal trainer, and all-around healthy person). I’m not sure why it took so long or why this year was different, but something clicked in my mindset about healthy eating and exercise that really worked. I went 60 days straight logging my calories in MyFitnessPal, exercising 2-4 times per week and lost 10 pounds. I’m still looking to lose 10 or so, but it’s not my primary goal.

Being active and feeling better when I eat healthier are the primary goals and benefits of living this way. It’s easiest when it’s warm out, as we’ll take a 3 mile walk with the kids almost every day after work. Since I can sometimes go days without going outside while working from home, I call it my “time in the yard”. It’s great for our relationship and mental health as we walk and talk for 45 minutes. Usually by the end of the walk we’ve destressed and are heading home happy. I did lose a bit of momentum over the holidays and have already started bringing it back here in the new year. I benefit greatly by having Care do our meal planning because pretty much everything we eat is healthy, I just have to keep portions in mind and have some activity and I’m good. This year is going to be focused on increased activity as that makes the food portion much easier to handle.

On the mental health front, I had a bit of breakthrough year. I’ve always been very susceptible to stress. I made some changes this year, including reducing stressors, starting meditation (with the Calm app) and just generally chilling out. I find that throughout the day conversations and notifications and tasks and emails will pile up and if I don’t take a break I end the day with my head spinning, grinding my teeth and tight all over. Working from home helps here as I can sit on the floor and meditate for 10 minutes and then go back to what I was doing with a clear head, or walk outside for 5 minutes and close my eyes just to get a grip. In the past I would continue to power through and end up losing productivity as my stress increased throughout the day, but these breaks, and practicing meditation have really helped.

I spent more time learning new things and reading this year than any year (from what I can tell, maybe even more than the 18 months I spent traveling the world without a job). Part of the reason I had success with this is because I let go of doing it perfectly. I let go of perfectionism, at least in this part of my life. I have to laugh about it now, but there are technical books I would read until it got to the examples and then I would put down the book and give up because I “wasn’t at my computer right now” so I couldn’t do it.

I also would painstakingly read things that I was interested in to ensure that I fully understood them. But that’s not how I learn best. I’m not guaranteed to remember everything perfectly the first time I read it. Nor is there really that much benefit in copying in examples and running them. Sure I may get some muscle memory, but without me thinking about what I’m doing, I’m not really learning the concept behind it.

That doesn’t come until I try to use it for real in a project. My goals are not to know everything about a topic, but to know where to look when I need to dive in. A cursory introduction and outline is better than me wasting time trying to understand minute details of things I may not need to know yet. I was never going to get through everything or learn what I wanted this way, so something had to give. I started speed reading and skimming. Most of the stuff I wasted so much time on was fluff that wasn’t important. What was important was scanning and getting an overview of things. I have always been so scared of not getting everything the first time and having to go back and reread things. I still don’t understand why, but I have hopefully gotten over that now.

Instead, I am reading quickly, and scanning and picking out the major concepts. Most of the time, I’m finding that I’m not missing anything, and that I can quickly get the gist, but also I’m doing this so I can know where to find something. I don’t need to understand it all the first time. And that has made all the difference. I am devouring learning material and it’s been helping me build my skills at a much faster rate. I have a very unrealistic, very large reading list. And try as I might, I have a very hard time removing things. I just want to read it all, so any way to make that go faster helps.

This year, when I found out Pinterest had bought Instapaper I figured I should look at clearing everything out of that service. I wanted to know how many articles I really had to read because I knew I had many more than the 500 limit that the app and API had. The search has always been terrible for organizing, so I threw together a tiny Laravel app that would let me quickly see the URL and title of my bookmarks and archive/delete/sort them into folders. I wrote some scripts that would organize the articles into folders in bulk so that I could get a full count. 3,000 articles to read. This is on top of a massive “to read” bookmarks folder in Chrome, a shelf full of unread dead tree books, a backlog of unread magazines from 2013, a kindle account full of unread books and a Dropbox folder with over 100 unread ebooks.

(I have a book problem)

On top of all that I would love to start reading fiction again! Let’s just laugh and move on.

Family-wise, our Henry boy was born this year. He scared us with a short NICU stay, but is now in the clear and he is champion baby #2 all the way! It was really hard for us to imagine what a second kid would be like, since Lottie was such a (world) champion baby ūüėā. Henry has just surprised us constantly and having one of each has been really fun. What I have realized though, is that my goals and ambitions don’t stand a chance against the fatigue of the parent of a newborn. It felt like a down year on producing things and just having my shit together. I could barely get myself outside to mow the lawn and pull weeds (and it showed). Both of us are just exhausted, even 8 months in, as he’s not consistently sleeping through the night. Something I should consider if we do have more kids is to plan ahead for a light year when they’re born.

It’s always hard to find time together when you have young kids and we are no exception, until recently we hadn’t yet gone out on a date just the two of us since Henry was born. So in the last two weeks we’ve gone out on two dates, overnight without the kids, and it has been so great to reconnect and have a little bit of time away. We’ve worked this into our goals for this year to ensure we get some time together away from the kids.

I used to work weekends and would work late into the night. Even when we had our first baby I was still doing this. I have been making an effort to walk out of my office at 5pm and never work on weekends or holidays. This lets me give Care a break and also spend some quality time with the kids before I put them to bed. I can always go back to work later, but I can’t see the kids after they’re asleep.

At Reaktiv, we had a bit of a slow start to the year, which resulted in us losing some great engineering candidates but we rallied the rest of the year to land some fun new clients and hire some great engineers. I spoke at WordCamp Boston about our work on the HBS Open Knowledge platform. I’m excited that we’re growing the team and looking forward to what 2017 brings for us. We’re about to release an open source project we’ve been working on for awhile, and also, we’re hiring.

I have a book/course idea I’ve been toying with for WordPress developers and while I began work on it last year, I ended up shelving it for a bit to focus on agency work but this is something I really want to work on this year and have set a goal to launch it by July.

World events aside, 2016 was an exhausting but transformative year. I feel a bit like it chewed me up and spit me out but I’m now better prepared to face the future. I’m looking forward to new opportunities and experiences, personally and professionally in 2017.

WordCamp Tampa 2014 – Teaming Up: From Solo Developer to Working in a Team

I had the privilege of speaking at the inaugural WordCamp Tampa in October of 20141. My topic was about the differences between solo development and working in a team. Looking back at this two years on, I am surprised at how I still feel strongly about each point and how we’ve improved our processes over time. After on-boarding multiple developers I’ve been able to test these ideas, processes and tools and have come away with a better understanding of how to work within a team.

Working with other teams to develop or level up their own internal processes and tools is something I really enjoy. Hopefully the points in the slides are helpful and please let me know if I can help your team in any way.

Slides
Video


  1. Yes, this post has been sitting in my drafts for two years. 

From Day One to Slack: Automating Your Daily Standup

At Reaktiv Studios, we do our daily standup in Slack, rather than a meeting due to the remote nature of our team. There’s a separate channel #standup where we use a Slack post to outline what we accomplished yesterday, what we plan to accomplish on today and any blockers we’ve encountered.

I was already keeping a daily work log in Day One, a fantastic journaling app for OS X, and wanted to sync up my workflow so I didn’t have to spend more time formatting a post in Slack, or deal with copying and pasting between the two apps to share my standup.

Enter the Slack API and OS X Services…

I figured there had to be a way to integrate the two and after a few fits and starts with attempting to pull data out of Day One with a script I settled on an OS X service that operates on selected text with a keyboard shortcut. My workflow now is to write my daily standup in Day One like I always have, select it, and hit ‚Ćė‚Ć•S to immediately share in Slack. Easy peasy. The details, if you’d like to implement a similar workflow, are below:

First, Get a Slack Token

It seems Slack has changed to use Oauth for all apps, but I have heard that creating a “test token” on this page still works.

Get the channel ID from the Slack API using your new token. You can do this with curl or Slack’s API tester:

2016-07-27 at 10.02 AM

Pull the list of channels in the tester and search until you find your channel name, above it will be the channel ID.

Create a file in your home directory: ~/.slack which contains your slack credentials:

SLACK_TOKEN_RS=<Your Slack Token>
SLACK_CHANNEL_STANDUP=<Slack channel ID>

You can name these however you want, just be sure to change them in the script below as well.

Open Automator, and create a new “Service”.

2016-07-27 at 9.41 AM

Choose the “Run shell script” action.

2016-07-27 at 9.42 AM

The action should be configured as: “The service receives selected text in Day One.app.” Choose your shell (mine is /bin/zsh) and pass input to stdin. Then paste the script below into the script field:

source ~/.slack
curl -F file=@- -F token=$SLACK_TOKEN_RS -F filetype=post -F channels=$SLACK_CHANNEL_STANDUP -F title="Daily Standup `date '+%Y-%m-%d'`" https://slack.com/api/files.upload

Let’s break down what this is doing.

  1. First, we source our Slack credentials file. This makes the SLACK_TOKEN_RS and SLACK_CHANNEL_STANDUP variables available to our script.
  2. We then make a curl request to Slack’s files.upload endpoint. We are submitting this as a multipart/form using the -F flag.
  3. -F file=@- Instead of providing a file to upload, we are passing stdin as the “file” with @-
  4. -F token=$SLACK_TOKEN_RS sets our API token from the credentials file.
  5. -F filetype=post this is what creates a Slack “post” rather than a media file upload.
  6. -F channels=$SLACK_CHANNEL_STANDUP sets the Slack channel to share the post to.
  7. -F title="Daily Standup `date '+%Y-%m-%d'`" sets a dynamic title based on today’s date.

Save the service, and then open Preferences > Keyboard > Shortcuts to assign a keyboard shortcut. I have assigned ‚Ćė‚Ć•S as the shortcut.

2016-07-27 at 10.05 AM

That’s it! Now you can test your Slack integration by selecting some text and hitting your keyboard shortcut.

2016-07-27 at 10.12 AM

Your post should appear in Slack.

2016-07-27 at 10.12 AM

You could use this from any app, not just Day One. Let me know if you’ve found this helpful or what other interesting Slack integrations you’ve made!

How to Automatically Add Hosts to Vagrant Without a Password on OS X

UPDATE 2016-07-27: I do not believe this is working with the current version of vagrant-hostmanager 1.2.0. Will update if I find a resolution.

There’s an excellent plugin for vagrant called vagrant-hostmanager which will automatically add entries to your hosts file for domain aliases used in your vagrant instance. However, you’ll get a password prompt every time it runs as editing /etc/hosts requires elevated privileges. The instructions below allow you to run the hostupdater without having to enter your password every time.

The vagrant-hostmanager repo provides these instructions, but I’ve added additional information if you haven’t dealt with visudo before.

Be super careful when editing the sudoers file because editing it incorrectly can lock you out of your computer and prevent you from editing files!

  • Open Terminal
  • Check your $EDITOR env variable: echo $EDITOR
  • If it’s subl -w (for Sublime users) or anything that’s not nano, vi, or vim, you will need to use the longer version of the command below.
  • Short Version: sudo visudo
  • Long Version: sudo EDITOR=nano visudo
  • This opens the sudoers file for editing, which should look like this: http://opensource.apple.com/source/sudo/sudo-60/src/sudoers
  • If the file opens in Sublime Text or is empty, stop what you’re doing, otherwise proceed.
  • Near the bottom of the file, add these two lines, replacing <YOUR_USERNAME> with your OS X username:
Cmnd_Alias VAGRANT_HOSTMANAGER_UPDATE = /bin/cp /home/<YOUR_USERNAME>/.vagrant.d/tmp/hosts.local /etc/hosts
%sudo ALL=(root) NOPASSWD: VAGRANT_HOSTMANAGER_UPDATE

The next time you vagrant up or vagrant halt you shouldn’t be asked to provide your password. It will work for both command line vagrant use and a tool like Vagrant Manager.

Special 1: The Origin of John Roderick

Think of The Origin of John Roderick as an improvisational book on tape, with each chapter recorded a few weeks apart.The end of the year can be a strange, cold, and lonely time. We hope this keeps your brain warm until 2015.

Source: Special 1: The Origin of John Roderick

On my last flight, I had big plans to get a lot of work done. I turned on this podcast while we were taxiing at SFO¬†and¬†ended up listening to it all the way through on the 4 hour flight.¬†I’ve never listened to the Long Winters, but if you love music at all, you’ll enjoy this. John Roderick is a true storyteller.

Find Shared Taxonomy Terms in WordPress

In the upcoming WordPress 4.2 release, whenever a shared term is updated it will be split into separate terms. If you are running any plugins or themes that store term IDs they may change after being split, which can cause data integrity issues. You can find an in-depth explanation and guide for how to update your code over at the Make WordPress Core blog.

It’s not easy to tell at a glance whether this issue will affect your site, so I’ve built a small plugin, Find Shared Terms that will detect any shared terms in your WordPress install and list them along with the taxonomies they belong to. This may be helpful in determining whether you need to refactor any custom code that stores term IDs or upgrade any of your plugins prior to the 4.2 upgrade. If your site doesn’t have any shared terms, and you’ve already upgraded to 4.1 then you’re in the clear!

If the plugin does detect shared terms, it doesn’t necessarily mean you’ll have an issue, but you’ll want to review any custom code you’ve written to check for anything that’s storing term IDs and check your list of plugins against the plugins listed in the Make post.

Pull Requests are welcome on Github.

Download Find Shared Terms

Improving Performance with MaxCDN

I’ve implemented a CDN on a few sites for clients, but never used it on any of my own sites. Recently I’ve been having some server issues over on my travel blog Traveling 9 to 5.

It’s hosted on a VPS along with a few other sites, and the server keeps crashing. The site gets a decent amount of traffic, but not so much that it should be crashing so often. I don’t know much about system administration, so I needed a stopgap to stop the site from crashing until I have the time to really determine what’s wrong with the server. MaxCDN* approached me about their CDN offerings and I figured this was the perfect time to change my caching setup and try a CDN.

The site is fairly image-heavy, and while we used to use Flickr as a poor-mans CDN it wasn’t a great workflow. Flickr doesn’t make it easy to get the correct download links for the image sizes you want and then having to manually insert the URL instead of drag and drop uploading, plus not having all your images saved to the media library. It wasn’t ideal, so once we switched to this VPS, we went back to uploading all images to the Media Library.

The server seemed to be crashing due to either high CPU or running out of memory and maybe if I could offload some of the static assets to a CDN, the server resources won’t spike as high and maybe even the site speed will improve a bit.

Implementing MaxCDN

Implementing MaxCDN on the site was much easier than I thought.

  • Create multiple subdomains for serving static assets (optional). This lets you serve your assets from static1.example.com and static2.example.com instead of using MaxCDN’s domains.
  • Create a “pull zone” in MaxCDN.
  • Add each of the subdomains as “custom domains”
  • Change any settings. (I enabled “Ignore cookies in requests”)

That’s it for the MaxCDN side, but you still need to setup WordPress to serve your images through the CDN. The recommended way to do this is with the W3 Total Cache plugin. MaxCDN has a support article that walks through the entire process. After following those instructions, your site should now rewrite all static asset URLs to point to one of your custom domains and will be served via MaxCDN.

Results

Here’s a speed test for the site prior to making any changes. (All speed tests were done using WebPagetest)

Traveling 9 to 5 speed test before

And here’s the results after making changes. I waited a few days to ensure the CDN was working correctly:

Traveling 9 to 5 speed test after

As you can see, the load time for the initial uncached view was reduced by 36%. This appears to be due to using multiple subdomains (static1, static2, static3, etc.) to allow browsers to download assets in parallel and the CDN servers being much better optimized than my VPS. WebPagetest still gives me a poor grade for effective use of CDN as only 69% of the assets on my site are running through it. I’ll continue to tweak and adjust the settings but I am very happy with these results, as it took only 20 minutes of my time to get this much of a speed improvement on the site.

This isn’t a scientific test, so there are multiple variables that could affect the speed. I was previously using a caching plugin on the site called Hyper Cache, and switching to W3 Total Cache may have had a large impact on the site speed as well. Looking at the waterfall charts on the speed test, I can definitely see the improvement in parallelization, especially since the site is so heavy on images. I can’t guarantee that your site speed will improve with MaxCDN, but I can highly recommend it due to its ease of setup and integration with WordPress.

*Thanks to MaxCDN for providing me with the CDN account.

Learning JavaScript & jQuery

It’s been on my list for a long time to get better at JavaScript and jQuery. I use both of these every day (mainly jQuery) but have never really felt comfortable with them. I’ve been collecting some learning resources (both free and paid) and thought I’d share them with you.

30 Days to Learn jQuery

A fantastic (free) video series from Jeffrey Way, of Laracasts, and previously with Envato. I thought I knew jQuery pretty well, but learned a ton of new things, and best practices even in the first few videos. I would highly recommend this series even if you think you already know jQuery.

30 Days to Learn jQuery – tuts+ – free with signup

Eloquent JavaScript

A great overview of JavaScript, also written as an introductory programming text. It seems odd to recommend an introductory book, but I really enjoy these, even after programming for several years. I always seem to pick up something new. If you’ve never been exposed to object-oriented programming or functional programming, you will definitely pick up a few things from this excellent book while learning JavaScript.

Eloquent JavaScript – free to read online

JavaScript: The Good Parts

Probably the most recommended JavaScript text available, but it’s not for beginners. However, Secrets of the JavaScript Ninja lists this book as a good intro text, so I’ll finish this one before diving into the next. It’s written by the developer of JSLint and JSMin, who also popularized JSON. by Douglas Crockford

JavaScript: The Good Parts – Kindle Edition ~$9 at Amazon

Secrets of the JavaScript Ninja

Written by the creator of jQuery, I’ll read this book last after finishing everything above. I’m normally not a fan of anything with “ninja” in the name, but this book appears to cover about as much advanced JavaScript as I could care to know and I’m looking forward to going through it. by John Resig and Bear Bibeault

Secrets of the JavaScript Ninja – Paperback (+ ebook) ~$25 at Amazon

Bonus Material:

Options to go through after completing everything above:

JavaScript The Right Way

A list of many free resources for learning all the JavaScript things.

JavaScript The Right Way

Mozilla Developer Network (MDN)

The best reference out there for JavaScript and CSS.

MDN: JavaScript

Developing Backbone.js Applications

After gaining a better understanding of JavaScript and jQuery, I’d also like to look into Backbone.js and other JS frameworks, particularly since WordPress core is using Backbone for many new things in the admin. by Addy Osmani

Developing Backbone.js Applications

How to Easily Increase Memory on your Vagrant Virtual Machine

This assumes you are using VirtualBox as your provider, which you are if you’re using a pre-built vagrant configuration like I am with VVV.

I was running out of RAM and crashing my VM while trying to import a 9MB WXR file into a WordPress install.

First, I tried adding a swapfile so I could get some virtual memory. I was able to do that with these instructions from Digital Ocean, but I wasn’t sure how to make it persistent after a vagrant destroy and didn’t want to have to set this up every time I booted up the VM.

Finally, I found this thread in the issues for VVV with the answer.

Create a Customfile in the same directory as your Vagrantfile, and add the contents below, changing 2048 to be whatever value you want to increase your VM’s RAM to.

config.vm.provider :virtualbox do |v|
  v.customize ["modifyvm", :id, "--memory", 2048]
end

Save the file, and then do a vagrant reload and you should be able to verify with top or free -m that you now have some additional memory in the VM.

I went with 2GB. There has been some discussion of increasing the default in VVV from 512MB, however I think that would be an issue for people on laptops, especially running MacBook Air’s with only 4GB of RAM.