Matthew Palmer Top Articles Vanilla Rocket Kubernetes Book Standing Invitation

    Top Articles in 2021

  1. How to Install VirtualBox on macOS Mojave and High Sierra

    A quick guide on a couple of tricks you need to get VirtualBox installed on a Mac. Includes a bonus tip on sharing folders between the VM and your host OS.
  2. Emoji Bullet List ⚡ Behind the Scenes

    I released Emoji Bullet List, a fun web app that emojifies your bullet point lists. It went a bit viral on ProductHunt and Twitter.
  3. Anker Battery Pack for Macbook Pro Review – Anker PowerCore 20100

    While travelling around Australia and the US, I needed a good way to give my Touch Bar MacBook Pro and iPhone 5 a bit of extra charge.
  4. How to Add a Launch Image for the iPhone 6 (Plus)

    A quick guide on how to add a launch image in Xcode for the iPhone 6, 7, and 8.
  5. Remapping Keyboard Keys on Mac OS X Mavericks

    How to remap any of your keyboard keys to any combination of keys on Mac OS X Mavericks. I got hooked after remapping Caps Lock to Command+R.
  1. Live Data Table for Perpetual Future Funding Rates Across Multiple Crypto Exchanges

    I’ve built a data table showing the latest funding rate for various perptual futures across multiple exchanges – including Binance, Bitmex, and FTX.

    This is useful if you want to run low-risk basis trades or arbitrage based on the funding rate.

    View the table here

    It refreshes with the latest changes from each exchange every minute. Refresh your browser to see the latest rates in the table.

    • Binance publishes realtime funding rates
    • Bitmex publishes eight-hourly funding rates
    • FTX publishes hourly funding rates

    What are funding rates in perpetual futures?

    Funding rates are payments made periodically between participants in a perpetual futures market. Perpetual futures never expire, which means that spot price and the futures price can diverge.

    Funding rates help keep these prices in line.

    If the funding rate is positive, longs will pay shorts the funding amount.

    If the funding rate is negative, shorts will pay longs the funding amount.

    You can go long on the spot market, and short on the futures market, and keep earning the funding rate if the rate stays positive.

  2. How to set up a subscriber milestone referral program on Squarespace to grow your mailing list

    Want to get more email subscribers for your site, store, or service? Generate positive word of mouth on social media? Spread organically through your biggest fans’ social networks?

    If so, you should run a milestone referral program. Encourage people to sign up for your email newsletter, and give them rewards for any friends they get to sign up as well.

    In this guide, we’re going to set up a complete milestone referral marketing program using Peach’s.

    This tutorial takes about fifteen minutes.

    What is a newsletter milestone referral program?

    A subscriber milestone referral program lets you give rewards to people who refer their friends to sign up for your mailing list or email newsletter. It’s often used for products that are pre-launch.

    Milestone referral program header

    You’ll create a landing page for your product, connect a referral program, and let people earn early access, discounts, or merch for telling their friends about you.

    Why would you want one?

    When you’re pre-launch, a subscriber milestone referral program helps you build excitement and viral interest in your products. It lets customers get a sneak peek into your business, and sign up to be notified when your product is available.

    Plus, they get rewards for sharing your business via email or on social media.

    If you’ve already got a great online store, but you want to do more email marketing, a newsletter milestone referral program will help you grow your mailing list much faster than traditional methods.

    Since you reward people for sharing as well as signing up, you’ll reach many more people than just your site’s regular visitors.

    And email marketing is one of the most underrated marketing methods. It’s cheap, super effective, and high quality – way better than running expensive ads on social media. You just need to have a solid mailing list to send to!

    Let’s get into setting up your landing page & creating your milestone referral program.

    In this guide, we’ll use Squarespace. (But Peach’s works with any website builder! You’ll just need to translate them for your platform.)

    Design your rewards

    First, think about your products and your business.

    What rewards will get people excited about your products and your brand? What’s a cool enough reward to make people want to tell their friends about you?

    For Harry’s (the company that makes razors and shaving products), they had four milestones in their program. When someone referred five friends, they’d get free shave cream. At 10 and 25 referrals, subscribers got a free razor. And at 50 referrals, they got free shaving for a year.

    If you’re unsure, I’d recommend the following milestones (reward tiers)

    Refer 1 friend

    Referring just one friend is good so that people don’t feel intimidated for sharing. A great reward here is a $5 discount code or free shipping on their next purchase.

    Refer 5 friends

    For someone who refers five friends, give them a product sample or sticker pack. This is really a nice level of sharing that balances a cool gift with an attainable level of sharing with friends.

    Refer 25 friends

    For referring 25 friends to your email newsletter, it’s worth rewarding someone with a free product. Most people probably won’t reach 25 referrals – unless they have a big following on Instagram or other social media, but if they do, a free product might even get them to post again about your site when they receive it.

    And you should consider setting up an affiliate program if you have a few people making a lot of referrals.

    Create your landing page

    In Squarespace, we’re going to create a landing page that explains our referral program’s offer. Try to make this page nice and visual, and explain the rewards as clearly as you can.

    For this example, we’ll set up a subscriber milestone referral program that rewards people for sharing the store with 1 friend, 5 friends, and 25 friends.

    For 1 friend referral, we’ll give them a free shipping discount code. For 5 friends referred, we’ll send them a free sticker pack. And for 25 friends referred, we’ll give them a free piece of merch.

    Let’s create the landing page in Squarespace.

    (Note – you don’t have to follow these steps exactly if you want your landing page to look different to this example. Just jump back in at the “Connect your milestone referral program” step.)

    This is the landing page we’ll be creating.

    Milestone referral program landing page example

    Create the content

    In your Squarespace admin, click Pages, then click the plus button to create a new page. For this example, we’ll use the “About” template.

    Squarespace about page template

    Remove all the existing blocks from the template so that we’ve just got the page title.

    Empty example page

    Now, let’s add in three images of our rewards. Create new image blocks with images that show off that reward level.

    Create image block in Squarespace

    We’ll use the “Poster” image layout so that the caption appears over our images.

    Poster image layout option

    Once you’ve added the images, drag the second image to the right of the first image. This will create a new column.

    How to create a column in Squarespace

    Repeat this by dragging the third image to the right of the first two, which creates a third column.

    You might need to rearrange the title block at this point. Once you’re set up, you’ll have a nice title and a three column layout of images with your reward levels.

    Now, let’s create space for our description of the referral program. In this spot, we need to explain to visitors how the referral program works.

    Add a text block to your page, and then add two spacer blocks to either side of the text block. (Use the same method as before to create columns).

    Three column layout for a Squarespace landing page

    If you want to resize your columns, hover your cursor between two columns and it will change to the vertical bar cursor. Then you can resize your column width.

    Now, in our text block, we’ll add a quick message to explain how the program works.

    Add the code block

    Now that we’ve set up the content to explain our program and our reward tiers, we can add the actual subscriber form.

    Add a new Code block to the page. When we connect our script, this block will get dynamically replaced with the content for our referral program widget.

    Squarespace add code block

    Leave this as “Hello world” for now. Once we’ve created our referral program in Peach’s, we’ll replace this with the actual script to get our milestone referral widget in place.

    Squarespace add code block

    Connect your milestone referral program

    We’ve got our landing page and the spot where we want our referral program widget to appear. We need to connect up our widgets.

    We’re going to use Peach’s milestone referral programs for this.

    Create your program

    Head to the website, and click “Get Started,” and then create your account.

    For the value under “Website URL” on the “Create Program” form, enter the URL of the landing page you just set up. (In Squarespace, this is under the “Slug” field in your page’s setting, or you can just view your page in a new Incognito window and copy and paste that URL.)

    Peach’s website URL

    This URL will host your sign up form, your referrer’s stats widgets, and provide easy widgets for referrers to share your site on social media.

    Add your milestones

    After you’ve created your program, you’ll be in your Peach’s dashboard.

    Click the “Milestones” tab in the left sidebar to configure your widgets.

    Peach’s milestones dashboard

    Let’s add milestones for our referral reward tiers – 1 friend, 5 friends, and 25 friends.

    Peach’s milestone reward configuration

    Click “Save” when you’ve added your milestones.

    Connect your widgets

    With the milestones set up, now we can plug our widgets into the space on our landing page.

    Click on the “Connect” tab in the left sidebar. You’ll be shown the three steps to set up your program.

    Under step 1, copy the code from the Peach’s dashboard to your clipboard.

    Peach’s copy code

    In Squarespace, paste it into the Code block. You’ll need to untick “Display Source.” Save your page in Squarespace.

    Peach’s copy code

    Then click “Test” on the step in Peach’s. If everything is plugged in correctly, and your website URL is correct, this step will succeed.

    If you view your landing page in a new Incognito window now, you should see your subscriber form appear.

    Do a test referral

    Follow the instructions under step 2 and 3 on your Peach’s “Connect” tab. It will take you through creating a test subscriber, and perform a test referral so that you can understand how the referral process works.

    With those steps completed, you’re good to go!

    Customize your program

    If you want, you can customize your program in the “Customize” tab in Peach’s. You can tweak all your email templates and your widget styles.

    Launch your program

    Everything’s done! You can click on the “Preview & Launch” tab to launch your program and make it live. You should see your referral widgets on your landing page, and everything will be working.

  3. How to Set Up an Affiliate Marketing Program on Squarespace

    In this guide, we’re going to set up a complete Squarespace affiliate marketing program using Peach’s.

    This tutorial takes about ten minutes – after that, you’ll have your affiliate program up and running.

    Affiliate program hero header image

    What is an affiliate marketing program?

    An affiliate program lets you reward influential people for sending customers to you.

    You pay a commission to your affiliates based on the sales they send to your Squarespace store.

    Add bloggers, Instagrammers, YouTubes, and authors to your affiliate program. They’ll share your store with their audience. You’ll pay them a commission on any sales.

    Squarespace affiliate program example

    Why would you want an affiliate program?

    Affiliate programs let you dramatically increase the reach of your store without buying expensive ads or running complicated marketing programs.

    Why you want an affiliate program

    Say you know an influential person in your industry – a popular blogger, an Instagram personality, etc.

    They’ve got a strong connection to your product – or maybe you send them a free sample.

    You want to reward that person for sharing your product in a way that’s incredibly beneficial to you both.

    But neither of you really know how much you should pay for a sponsored post (and sponsored posts are risky… what if they’ve bought fake followers?)

    Instead, you add them to your affiliate program, and offer them a commission on any sales they send to you.

    They share your products with their followers, their followers buy your products, you reward the affiliate.

    What businesses are affiliate programs suited for?

    Affiliate programs are well-suited to most types of businesses. In particular, industries like fashion, beauty, technology, food, and lifestyle brands.

    The key question to ask is this: does your industry have highly influential people who can organically share your products with their audience?

    If so, you want to invite those people to be your business’s affiliates.

    Affiliate programs vs referral programs?

    Affiliate programs are when you pay the affiliate a commission based on referred sales to your store. Say, you pay them 20% of sales of all the customers they send to you.

    Characteristically, you’ll have a small number of affiliates who reach a large audience.

    What is the difference between affiliate and referral program

    Referral programs are more of a friend-to-friend exchange. You can offer a customer a discount off their next order if they tell a friend about your store.

    This often looks like “Send a friend $10 off, and you’ll get $10 off your next order.” You typically wouldn’t pay a referrer a percentage commission in a referral program. (Would a referrer really be encouraged by a 10% commission on a $25 order?)

    These are much more natural, small-scale interactions between regular people. Anyone can sign up for the referral program – they don’t need to be able to reach a large audience… they just send a message to their friends.

    If you’re looking for a guide to setting up a Squarespace referral program, Peach’s has a different plugin for that.

    How to set up an affiliate program on Squarespace?

    To set up our affiliate program, we’ll use Peach’s – an easy way to set up an affiliate program sepcifically for Squarespace.

    Follow our guide and you’ll have your affiliate program up and running in ten minutes, and you’ll be able to invite influential affiliates to help grow your store.

    1. Visit the Peach’s affiliate programs page and sign up for an account

      Sign up
    2. On the “Create Program” screen, enter the details for your campaign name, your website’s URL, and your Squarespace store URL.

      Everything should be straightforward, and you can set a default commission of no commission, a percentage amount, or a fixed amount per order. You’ll also be able to customize this on a per-affiliate basis later.

      Create affiliate program

    3. Follow the first three steps on the Peach’s dashboard to connect your program to your store.

      The setup guide on the site links you to the relevant parts of your Squarespace admin settings, and you can copy and paste values from there.

      Squarespace Connection setup

    4. With the last two steps, you’ll verify that your affiliate program is connected to your store and that your affiliate’s referred orders are getting tracked correctly.

    5. After you’ve finished those steps, all your checkboxes will turn green, and you can click the button to make your program live.

      Squarespace marketing program preview

      You can tweak the dashboard styles (what your affiliates see) and templates (affiliate emails and notifications) for your program before you go live.

      Squarespace affiliate program customization

    6. Click the button to make your affiliate program live. You’re done!

      Live affiliate program on Squarespace
  4. How to Set Up a Squarespace Referral Program

    This guide is going to teach you how to set up a referral program (like “refer a friend and get $20 off your next order”) for your Squarespace store.

    If you’re looking to set up an Affiliate Program on Squarespace, check out my tutorial here.

    (What’s the difference between a referral program and an affiliate program? A referral program lets regular customers share your store with their friends to earn rewards. An affiliate program lets influential people earn commissions from sharing your store with their large audience.)

    Successful Squarespace referral program

    Why set up a referral program for Squarespace?

    People trust their friends more than ads

    Studies have shown that 9 out of 10 people trust recommendations from their friends above any other source when it comes to making purchases. So if you can get one of your customers to recommend a product to their friend, odds are pretty good

    Rewarding your customers builds loyalty and repeat customers

    I’m a small business owner, so I know first-hand that you’re probably not in business for the drive-by customers. What keeps you going are the people who come back, who love your products, and who rave about you. You need to reward people like that! First rule of economics is that people respond to incentives – so it makes sense that you should thank and reward your biggest fans.

    It’s waaay cheaper than old-school advertising

    Hands up – who’s burnt some money trying out AdWords? Or – shudders – you paid for a TV ad. Outdated. Modern businesses with modern products need modern marketing. There’s a reason Uber, Dropbox, and fast growing tech companies have refer-a-friend programs. They work. They’re a million times cheaper, and a million times more effective than buying ads.

    Reward your customers for sharing your store, don’t pay huge advertising corporations to do it.

    Okay – on to the guide.

    How to set up a referral program on Squarespace

    We’re going to use a Peach’s Squarespace referral program to set this up. Peach’s is a platform that plugs right in to your Squarespace site and adds refer-a-friend functionality.

    This whole thing takes you about 10 minutes, and after that you’ll have a working refer-a-friend program.

    1. Sign up for a Peach’s account

    Head over to the Peach’s site and click ‘Get Started’, then fill in your details.

    Sign up for peach's refer-a-friend account

    2. Create a new Squarespace referral program

    After you sign up, the site will take you through to the form where you create your referral program.

    Squarespace referrals

    Start by entering your store’s name, your website’s URL, and your Squarespace dashboard URL.

    If you use a Cover Page as your home page, you’ll need to set a different URL as your website URL.

    Switch the toggle on if you’re using Squarespace Commerce Advanced.

    3. Configure your program with a few options

    In the next step, tweak your referral program so that it fits how you want to reward your customers.

    For me, I’ve found that keeping it simple is best for my customers to understand.

    I usually set my referral programs up like “Reward customers who refer a friend with a $20 discount on their next order of $30 or more.”

    Customize your program

    The other popular option for stores that want to grow more quickly is used by companies like Uber and American Express.

    It’s called “Two-sided referrals.” It lets you do offers like “Send a friend $5 off and get a $5 reward after their first order.”

    I don’t think any of the other referral program platforms can do this with Squarespace, so it’s worthwhile upgrading to one of Peach’s premium plans if you want this.

    4. Add the Peach’s account to your Squarespace store

    Once you’ve set your rewards, click “Create.”

    Then you’ll need to plug the referral program into your Squarespace store so that discount codes and referred sales get sync‘d up.

    It’s pretty easy – the site guides you through it. Although you might need to wait up to a minute for the spinners to get the “completed” tick.

    (If you get stuck at this point – Peach’s email support address is [email protected])

    Connect Squarespace referrals

    5. Customize your program

    Once you’ve connected your account, you can customize your website pop-up and customer emails.

    Click “Customize” in the sidebar to go to the customization section.

    This is handy because it makes the referral experience more ‘seamless’ with the rest of your store – so people use and trust it more.

    Customize Squarespace referral program

    You can add a new banner image, tweak the verbiage, and even set custom CSS for your pop-up.

    6. Launch your program

    You’ve created your referral program, and now you’re ready to launch.

    Head to the “Launch” tab in the sidebar, and then click “Go Live.”

    Peach’s will run some checks to make sure everything’s connected properly, and then your program is live!

    Note: Order Confirmation Emails – if you’re using the Order Confirmation Emails integration (which is a great feature, it plugs right into your existing post-order Squarespace emails) – it will prompt you to add the widget to your emails. Simply copy-and-paste that code at the end of your order confirmation email when you get prompted.

    Successful Squarespace referral program

    If you get stuck at any point, Peach’s support email is [email protected].

  5. Set Up a Free Refer-a-Friend Program on Gumroad

    Uber, Dropbox, and a zillion other companies run promotions like “Tell a friend about us and get a $5 credit when they sign up.”

    Those programs work really well to increase sales. Those companies are smart. Turns out.

    But referral programs are very difficult to create and maintain yourself, especially if you’re not a software developer.

    Luckily, if you sell things through Gumroad (or a bunch of other services), Peach’s free refer-a-friend software lets you set one up. It takes like ten minutes. It’s free. It increases sales.

    I wrote a book about Kubernetes that I sell through Gumroad, and I wanted to set up a refer-a-friend program. Here’s how I did it.

    1. Add a custom field in Gumroad

    You need to add a custom field called ‘Referral Code’ to your Gumroad checkout form.

    Open up your product in Gumroad, navigate to the checkout configuration, flip the little toggle that says ‘Preview’, and under ‘More information’ add the field for ‘Referral Code’

    Embed Peach's form

    2. Create a free Peach’s account

    Go to and create a free account.

    Create Peach's account

    3. Set up a new gambit

    Once you’ve logged in, click ‘New Gambit’ to get started creating your refer-a-friend program.

    Fill out the fields in the form, putting in your product’s details.

    Create Peach's account

    On the next step, enter the URL of the page where you sell your product and how many friends need to be referred for your customer to get rewarded.

    Create redirect

    On the last step, authorize Peach’s to use your Gumroad account. It uses this to create coupon codes and track who has been referred.

    4. Embed your refer-a-friend form

    You’re ready to start integrating your refer-a-friend program with your website.

    Somewhere on your site (for example) paste in the form embed code from the Peach’s console. This code loads the form that people will use to sign up for your refer-a-friend system.

    Embed Peach's form

    Once you’re done, reload the page where you added the code. Your page will get a fancy new form where people can sign up for a refer-a-friend program.

    Peach's form result

    5. Configure your product and discount

    In the Peach’s console, choose which product you want to set up the refer-a-friend program for, select the custom field you created in step 1, and enter your discount. Then click ‘Save’.

    Peach's form result

    6. Set up your checkout button

    The last step is to integrate Peach’s with your Gumroad checkout button.

    There are two steps.

    One, add the data-gumroad-gambit attribute to your existing Gumroad checkout button.

    Two, copy and paste the code from the Peach’s console to your site, right below your Gumroad checkout button.

    Embed Peach's form

    After that’s done, fill out your form from step 4 where people sign up to your refer-a-friend program. Grab the link that’s generated, and visit it. Then start the Gumroad checkout process. You’ll see a neat little pop up that you’ve been referred by a friend.

    Peach's button result

    7. Check your discount works

    Back in the Peach’s settings screen, click the button that says ‘Send Test Email’. This will send you an email with a link to purchase your product with the discount applied. Click that link and check everything looks good!

    Peach's button result


    You’ve finished setting up your refer-a-friend program. Remember to link to your refer-a-friend sign up form (step 4) from your product’s marketing so that your customers know they can earn a discount.

    Feel free to email me if you have any trouble or any questions.

  6. Top 4 Free Timer Apps for Mac

    Need to quickly start a countdown timer on your Mac?

    Maybe you’re looking for the best free Pomodoro timer, a great minimalist countdown clock, or a productivity time tracker.

    Whenever I’m working, I’ve got a timer running. It’s my #1 tip for staying focused and getting a lot done in a short amount of time.

    This is my round up of the best four free timer apps for your Mac.

    1. Horo

    Horo Mac timer

    Link: Horo

    Obvious disclaimer – I built Horo. Why did I build it? I believe that if starting a timer takes you more than a second, your timer app sucks.

    Horo is a simple, easy app that lets you type what time you want (“1m 30s”, “1.5h”), hit Return, and then your timer starts.

    It’s neat, it’s free, and it shows the timer in the menu bar so you can glance back at it easily.

    2. Be Focused

    Be Focused

    Link: Be Focused

    Be Focused is a great, full-featured Pomodoro-style timer. To change the time interval of an individual timer, you have to change the presets in the app’s preferences.

    This can be a bit annoying, but the benefit is that the app has awesome tracking of the number of times you’ve completed a timer. This, and the built- in break tracking, makes Be Focused a great work timer.

    (Unfortunately, the free version has ads. But they’re not intrusive.)

    3. Activity Timer

    Activity Timer

    Link: Activity Timer

    Activity Timer’s a great little app because you can save a range of custom preset timers.

    If you find yourself using the same four or five time intervals over and over again, this is the app for you.

    The app is simple, free, and works like you’d expect.

    4. Howler Timer

    Howler Timer

    Link: Howler Timer

    Howler Timer is a great option if you want the timer to pop out into a new window.

    The UI’s looking a little old, but the app itself works great. The Pro version ($2.99) gives you more formatting options for the timer in the menu bar, and you can set presets.

    The other great feature of the Pro version is that you can loop your timers, which is pretty handy.

  7. - the best tech Twitter threads

    Today I did a quiet release of It’s a website devoted to curating the best threads on Twitter. Users can contribute threads they like, vote on threads, and browse all-time popularity lists. It took about a week to build.

    In the first 12 hours, @threadsoy is up to 47 followers, and the website’s had 906 users with 1,906 page views. I’m curious to see how that grows over the next few weeks.

    What turned out well?

    I was originally going to give a brutalist design style— with a bit more of a sense of humour. But as I got into the project, I discovered that I didn’t feel good about displaying other people’s content alongside too much (potentially inappropriate) design personality.

    This restriction meant I had to discover a new, more considerate design and colour palette. I think I’m happier with this than the original brutalist attitude.

    My favourite thing is the buttons.

    popular upvote

    I also like how some of the pages turned out.


    I still need to improve on the typography of the actual thread text—it’s super important but currently feels very ”first draft.”

    How do you build a web app in a week?

    1. Cut scope. Ruthlessly.
    2. Know your tools.

      This is a simple Node.js Express web application with a Postgres database. It uses Handlebars templates, Sass for CSS, and plain no-framework front-end JS. I’ve used them dozens of times, so I could turn this project around pretty quickly.

    3. Be wise in your code-reuse battles.

      Shock and horror: I copy and pasted a shit tonne of code for this project. The question to ask is ”Will these two things always change together?” If yes, and it’s costly for them to be separate, refactor that code to be shared. If it’s not costly for them to be separate—or the additional abstraction adds no value—you’re setting yourself up for pain by overly refactoring. Your codebase is going to go through fundamental change in the early phase of a project—there’s no point adding indirection or layer of abstraction before the problem domain is fully conceptualized.

    What did I learn?

    1. Don’t include ProductHunt or Twitter marketing plan.

      Seriously, just take those words out of your vocabulary.

      I re-learn this lesson every time I make something. Those sites don’t provide that much lasting traffic, and they kill your motivation if they don’t go well. I’ve had past projects get that virality, and plenty of projects that haven’t. Your growth strategy can’t rely on initial popularity.

    2. I probably should have used an ORM.

      Minor technical note: out of curiousity, I just ended up doing raw SQL queries instead of using an ORM like Sequelize. Turns out, Sequelize is pretty nice.

  8. My New Book on Kubernetes for Developers

    I wrote a book! It’s a focused, clear introduction to Kubernetes for web developers. You can get the book from Golden Guide to Kubernetes Application Development.


    This post covers the behind-the-scenes of how I wrote the book. If you want to be sold on the book… click that link 👆.


    There’s a high table in the back left corner of the IKEA cafe that’s got this book written all over it.

    Every time I start a new project, I seem to pick a new place to work from. For Vanilla, that was a windowless room with sandstone walls… essentially a cave. Whatever place it is, it becomes forever associated with that project. All work must happen in that space, and once the project is done that space is tainted forever.

    I highly recommend the IKEA cafe for a few reasons. (I’m putting faith in the fact that not too many people will read this and so the IKEA cafe won’t be ruined by crowds.)

    • A tonne of space with no one side-eyeing you. The IKEA cafe is pretty much self-service, so you don’t feel pressured to buy something every eleven minutes
    • Solid wifi, access to power outlets
    • Unlimited coffee for $2.50. Although I swear they ramp up the caffeine in the coffee so you don’t want more than a cup.

    A caveat: get the hell out of there before lunchtime. I had no idea there were so many families with kids in the world. And they all congregate in the IKEA cafe at 11:50am.


    What does a programming nerd do when he writes a book? What about a programming and a Mac nerd?

    I really thought I’d get to write some interesting document generation code… maybe some hardcore LaTeX… at least a script that did something to some Markdown.

    I didn’t get to do any of that! What’s the point of that CS degree again? I just ended up using Pages and Keynote, and exporting to PDF. It was… too simple and easy.

    Pages is decent. Keynote’s diagramming features are excellent. If I wrote another book, I’d probably use the same tools again.

    The purchasing flow is handled by Gumroad. There are also some Zapier integrations I’ve created to generate notifications and give access to the upgraded package repo. The upgraded package is hosted on a private GitHub repo.


    Some fun stats!

    • 22,632 words
    • 107 pages
    • 16 diagrams
    • 2k+ lines of sample code, solutions, and resources
    • $621 first week sales

    Long Term

    Marketing-wise, this project is much more of a slow burn than my other apps. The current strategy is to write Kubernetes blog posts on commonly-asked questions regularly, and let Google do the rest. I’ll also experiment with answering StackOverflow and Quora questions.

  9. Automated Software App Support with Zapier

    I’ve got a bucket labelled ”Figure out a use-case for this” that’s overflowing with great SaaS services. Zapier, Airtable, IFTTT, Typeform. They are powerful tools without immediately obvious use-cases. Combine these services and you can solve any business or internet problem.

    You just need to be able to spot the problem.


    My customer support load has been increasing over the last 18 months. I’ve kept up with it by—and this will shock you—spending more time on customer support.

    About four months ago I spotted this problem. ”Hmm… I spend a lot of time doing customer support. I love it. It’s repetitive though.” It was a huge time sink for me. Worse, my customer would have to wait a day for me to reply with a solution that took five minutes. Terrible UX.

    I’m also like super not printing money at my business, so there’s no way I could afford to pay someone to handle my support. I couldn’t afford to throw money at this problem, so I had to get smart: automate it.

    Step one: figure out what my actual support requests are. I looked at my last hundred emails for each of my products and grouped them by category.

    The results?

    1. 50% – ”My license ran out. Can I please get another one?”
    2. 15% – ”I have [insert arbitrary common bug]. How do I fix it?”
    3. 15% – “I lost access to a file or folder. Can you please help?”
    4. 20% – Other, more interesting support cases. Stuff like interesting bugs, feature suggestions, and different use cases. I love hearing these and responding when I can.

    (I also re-read all these emails. I like using phrases my customers use when I present my business’s public face. Your support documents will be easier to find because they’ll use the phrases people Google. Your copy and pitches will be compelling because they’ll use ideas proven to stick in minds.)

    Automated Email Support with Zapier

    Spoiler: I automated the top three with Zapier.

    The easy ones

    Number two and number three accounted for about 30% of the load. They’re handled the same way: look for an email with suitable keywords and send an automated response.

    Zapier rule to filter on Gmail email body

    1. Use the Gmail ”New Email” trigger in Zapier
    2. Add an ”Only continue if…” filter with an email body search for relevant keywords
    3. (Really 2a.) A better approach is to set up a “New Email” trigger that looks for emails in a specific Gmail folder. Then use Gmail’s automated filtering rules to move that email into the right folder. Why? If you receive emails that whiff on the keyboard match, manually move them into the folder and still send an automated response.
    4. Send an email to help solve the problem, with a link to any relevant pages. BCC my personal email so I can keep track of what’s going on.

      Hi there!
      Thanks for using Rocket!
      My robots think you sent in a bit of feedback that might be about getting a refund. 
      No worries! This is a quick email to let you know about Rocket’s 
      <a href="">help page</a>, which has a link 
      to request a refund quick smart. My robots aren’t sentient (yet), so if this 
      doesn’t fix your problem, just reply to this email and I’ll take a look 😄.

    The hard one

    This one was harder to automate.

    Licenses for my apps start with a limit of two activations so that people don’t share them around. (Dumb mistake—I’ve recently made it higher for new licenses.) When a user hits that limit, they get an error.

    A customer would then email me. I’d have to go into DevMate, find their customer record, add a new license, and copy-paste it over to them in a hand-written written email response. I didn’t mind doing this—but (paying!) customers were waiting up to a day or two for me to do a two minute job. Awful.

    With Zapier, Google Forms, and DevMate’s REST API, I’ve automated this so that customers get faster responses and I don’t have to do anything.

    Automated support with Zapier and Google Forms

    Here’s the workflow now…

    1. Customer emails me with an email that has phrases related to a license activation issue
    2. Zapier sends a friendly automated reponse linking to the right page. (See the previous section)
    3. The help page takes them to a Google Form
    4. When they complete the form, use Google Forms’ option to add an entry to a Google Sheet
    5. Back in Zapier, run a ”New Spreadsheet Row” trigger for this sheet.
    6. Use the ”Custom Request” webhook to hit the DevMate REST API. This creates a new license activation code and passes it back to Zapier. (This one requires a bit of programming knowledge to set up, get in touch if you need help 👍.)
    7. Send an email back to the customer with their new activation code.

    Google Form example for collecting emails

    The dream! A customer has an issue, emails me, my robots point them in the right direction, they fill out a form, I send them a new license.

    Turnaround time? Less than fifteen minutes. I don’t have to intervene unless something goes wrong. Took two hours to automate a process that would take me an hour each week.

    Big Lessons

    Solo and small businesses can increase the limits of their production with automation tools like Zapier. These tools are easy to set up, cheap to maintain, and more reliable than what you’d custom-build. You can avoid assembling a team, which will keeping your costs low and your projects faster.

    Need help or advice automating your business? Want more detail on how to set up Zapier? Email me at [email protected] or get in touch on Twitter. I’d love to help.

  10. A Pro’s Guide to the Best Secret Mac Features

    Even though you use a Mac every day at work, there are a tonne of secret tweaks and pro features that you don’t know about. When you watch someone else use their Mac they just seem so… much… better.

    This guide will take you from a basic pro (“Yeah I use a Mac”) to an old, wizened Mac oracle who people gather round to ask ”Wait… How on earth did you do that so quickly!?”

    It’s designed to be skimmed now and Googled later. Every tip in this guide hits two criteria:

    1. Is this something I personally use? (But can never remember how.)
    2. Am I surprised that more people don’t know about this?

    It’s not exhaustive, but I’m certain you’ll learn like four things in the two minutes it takes you to skim this article.

    Table of Contents

    Terminal Tweaks

    Screenshots Like a Pro

    Powerful GUI Features

    Terminal Tweaks

    You can apply each of the following tweaks with the Terminal.

    How to execute Terminal command

    1. Open Terminal by typing Command-Space to trigger Spotlight then search for ‘Terminal’.
    2. For each step in the tweak, copy the command formatted like this and paste it into Terminal
    3. Hit Return to execute that command
    4. Repeat for subsequent commands

    Creating a Super Minimal Desktop

    Here’s my super minimal Desktop setup, with hidden Desktop icons, a tidy Dock, hidden menu bar icons, and a menu bar that blends in with the background.

    Show and Hide Desktop Icons

    To hide desktop icons, copy and paste each of these into Terminal

    1. defaults write CreateDesktop false
    2. killall Finder

    To show desktop icons again,

    1. defaults write CreateDesktop true
    2. killall Finder

    Show and Hide Hidden Files in Finder

    To show hidden files in Finder, you can use the keyboard shortcut Command-Shift-. in macOS Sierra.

    To show hidden files in Finder via the Terminal, copy and paste each of these into Terminal

    1. defaults write AppleShowAllFiles YES
    2. killall Finder

    To hide hidden files in Finder via the Terminal,

    1. defaults write AppleShowAllFiles NO
    2. killall Finder

    Add Blank Space Icon Separators to the Dock

    Dock space separator section

    To add a separator icon for space between icons in your Dock,

    1. defaults write persistent-apps -array-add '{"tile-type"="spacer-tile";}';
    2. killall Dock
    3. Repeat for each additional separator you want to add. You can rearrange the sections by dragging the blank space in your Dock.

    Match the Desktop background colour to the dark menu bar

    Here’s a niche one for you: if you want to make it look like the menu bar is hidden completely, the right RGB value is 22, 22, 22. You can apply this through System Preferences > Desktop Picture > Solid Colors > Custom Color.

    Faster Animations for the Dock

    There are a couple of tweaks you can use to change the animation speeds for an autohiding Dock.

    Make the Dock show instantly

    1. defaults write autohide-delay -float 0
    2. killall Dock

    Make the Dock animation itself faster

    1. defaults write autohide-time-modifier -float 0.15
    2. killall Dock

    Reset the delay before the Dock animation starts to its default

    1. defaults delete autohide-delay
    2. killall Dock

    Reset the Dock animation to its default speed

    1. defaults delete autohide-time-modifier
    2. killall Dock

    Faster Animations for Mission Control

    Change Mission Control animations to a cross-fade

    1. defaults write reduceMotion -bool true
    2. killall Dock

    Reset Mission Control animations to their default

    1. defaults write reduceMotion -bool false
    2. killall Dock

    Disable Spell Check in Every Application

    To disable spell check system-wide,

    1. defaults write NSAutomaticSpellingCorrectionEnabled -bool false

    To set spell check back to its default,

    1. defaults delete NSAutomaticSpellingCorrectionEnabled

    Prevent Your Mac from Going to Sleep

    To stop your Mac from sleeping while you do a presentation or watch something, run the following in Terminal

    1. caffeinate

    Caffeine and Lungo are great apps that do this as well. (Thanks @chrismessina!)

    Disable Shadow for Window Screenshots

    When you take a screenshot with Command-Shift-4 then Space it includes the window’s shadow (see the section on Pixel-Perfect Screenshots). You can disable this shadow by running each of these in Terminal

    1. defaults write disable-shadow -bool TRUE
    2. killall SystemUIServer

    Screenshots Like a Pro

    The Mac can do dozens of small variations on screenshots so your documents look professional and high-quality. Figuring out exactly how to do that is hard because your options are hidden behind keyboard shortcuts.

    Take a screenshot of just the window

    Just the window screenshot Mac

    This one’s pretty well known but still my favourite. Hit Command-Shift-4 then Space then select the window you want to get a screenshot of. This can be combined with the tip above about disabling the shadow for window screenshots.

    Grow the screenshot capture zone

    After you hit Command-Shift-4 you can select the region you want to capture by dragging the cursor around. You can hold Option to grow the window symmetrically in all directions. You can hold Shift to grow the window in only one direction. You can hold Option-Shift to grow the window symmetrically in only one direction.

    Move the screenshot capture zone

    After you select a screenshot capture zone, hold down Space and drag your mouse cursor to move the capture region around.

    Copy the screenshot to the clipboard

    Hold Control when you capture the screenshot and it will be copied to your clipboard instead of saved to your Desktop.

    Powerful GUI Features

    Use Tab to navigate everything

    By default, you can use Tab to navigate through input fields. You can speed up your navigation by enabling the ability to tab through everything. Open System Preferences, then search for ‘full keyboard access’ and enable Tab for all controls at the bottom.

    Customize your menu bar

    You can hold Command and drag menu bar icons around to rearrange icons and tweak your Mac’s appearance. Drag an icon far enough off the menu bar and it’ll disappear completely. You can also use something like Vanilla or Bartender to hide icons.

    Open a file or app in Finder from the Dock

    From the Dock, you can reveal a file or application in Finder by holding Command and clicking the icon.

    Change an app’s icon

    Use the above tip to reveal an app in Finder, then Command-I to open its Get Info panel, then drag your replacement icon over the icon in the top left of the Get Info window to replace it.

    Open a file in a certain app

    This one’s not so much of a productivity boost, just a ”Oh cool I’m glad it works like that.” Start dragging a file in Finder (or image in a web browser, etc.), then drop it on one of the app icons in your Dock. It will open the file in that app.

    Change the default app for a file type

    Use the above tip to reveal a file in Finder, then Command-I to open its Get Info panel, then under ”Open With” choose the application you want to set as the default for that file extension (.html, .mov, etc.), and then hit ”Change All…”

    Bulk rename files in Finder

    Select a bunch of files in Finder, then choose ”Rename X Items.” This feature is so powerful it’s worth a post on its own, but once you play around with it you’ll get the gist.

    Type emoji with a keyboard shortcut

    You can type emoji by hitting Command-Control-Space to open the emoji picker for your Mac. There are also apps like Rocket that make entering emoji faster.

    My Top 4 Keyboard Shortcuts

    Keyboard shortcut guides are everywhere (and the Godfather has an exhaustive list, so I’ll just give you my top four.

    1. In Finder, Command-Up will navigate up one level. Command-Down will open the selected folder or file.
    2. In Finder, Command-Option-C will copy the file’s path to your clipboard
    3. In lots of apps, Command-Option-Shift-V will paste the clipboard contents without formatting.
    4. The following let you navigate and select text faster. Command-Arrow moves you to the start or end of a line or document. Option-Arrow moves to the next or previous word. Hold Shift while doing these to highlight the text as you navigate.

    More Tips?

    If you’ve got a secret tip, tweak, or trick you love, let me know!

    I’m also thinking about turning some of these into a super simple Mac menu bar app (pretty much just a super fast way to toggle Desktop icons on and off, show and hide hidden files, etc.), so get in touch if that’s something you’d use.

  11. Visit the archive for more posts.