Matthew Palmer Top Articles Vanilla Rocket

    Top Articles in 2018

  1. 2016 Macbook Pro Battery Pack – 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.
  2. Vanilla: Hide menu bar icons on your Mac for free

    I released Vanilla, an app that hides Mac menu bar icons, and wrote this behind-the-scenes article about its development and launch.
  3. 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.
  4. Example Code for Using Swift to Save and Query iOS Keychain

    The origin story for Locksmith, my iOS Keychain library with over 2,400 stars on Github.
  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. Custom FastSpring Classic Themes

    Since they launched, Rocket and Vanilla were using the default FastSpring store style. This is—especially with the way I had it configured—an ugly theme that was losing me customers.

    After about a year, I was fed up. I’ve created a theme for Vanilla and a theme for Rocket that, design-wise, are a huge improvement over the default. Looking at analytics, they seem to be doing a better job of converting customers through the checkout process as well.

    You can take a look at these custom FastSpring Classic themes here for $29. It’s a super hand-run operation though, so prices are negotiable. If you need a theme built for your product, get in touch as well.

    Sadly FastSpring Classic is being phased out in favour of FastSpring Contextual Commerce, which has much more limited customization options. That’s what I haven’t spent time on making the process of getting a theme easier and more automatic, and why I’ll do everything by hand for a while.

  2. Visual Cryptography is the Coolest Thing Ever

    I just learnt about the coolest thing. Let me share it with you.

    Let’s say you and some friends are taking a walk through the Australian outback. Which, as we all know, is full of treasure and deadly animals in equal measure. You’ve got an image file that’s a map to some treasure, and you want to split it amongst the ten of you.

    While you’re hiking around, you want everyone to come together and overlay their shares to locate the treasure and navigate. But, since we don’t want anyone running off, no individual person can know what any part of the map looks like on their own.

    Now this is where the deadly animals come in. To protect us against likely death by dropbear of a few of our group, we want the added feature that only six out of ten of us need to combine map shares to get the full map back. And, if five out of ten combine shares, they should gain no information.

    So we’ve got this impossible set of requirements:

    • Split an image up into n shares
    • Each share should reveal nothing about the original image
    • k out of those n shares, if you lay them on top of eachother, should recreate the original image


    Visual Cryptography

    Visual cryptography can do this, and it’s absolute magic.

    Let’s simplify our example to just 2 friends, and when they combine their shares it should reveal the original. We’ll work with a black and white secret image.

    Animated demo of visual cryptography


    1. Take a pixel from the secret map image
    2. Subdivide that pixel into four subpixels for each friend (so eight subpixels total)
    3. Colour in those subpixels so that, when the friends overlay their images…
      • If the original pixel was black, the overlayed subpixels will have four pixels coloured in
      • If the original pixel was white, the overlayed subpixels will have two pixels coloured in
      • Do this with a degree of randomness so that the shares are secure.
    4. Combine each friend’s subpixels into an image, and distribute each image to that person

    This is a very visual problem, so spend a bit of time looking through the diagram below.

    Visual cryptography tutorial image

    Some key things to note:

    • If the original pixel was black, the overlaid subpixel shares will be all black. If the original was white, the overlaid will be 50% coloured in.
    • The coin toss is what makes this sharing scheme secure, because an attacker can’t guess with more than 50% likelihood which set of patterns were used to colour in the shares
    • The specific patterns (BWBW, WBWB) we used to colour don’t really matter, what matters is how many cells in the overlaid pixels are coloured

    If you want to see some code, the most interesting snippet from the full JavaScript Gist is this:

    // This is the important function -- it's how we encode our shares.
    // Given a secret pixel, subdivide it into four subpixels with a set pattern.
    const subdivideSecretPixel = (pixel) => {
        const redPill = Math.random() > 0.5;
        if (pixel.alpha > 0) {
            // The pixel is coloured in the secret.
            // When overlaid, all four subdivisions in the shares need to be black.
            if (redPill) return [ patternA, patternB ];
            return [ patternB, patternA ];
        // The pixel in the secret was not coloured.
        // When overlaid, only two of the four subdivisions should be black.
        if (redPill) return [patternA, patternA];
        return [patternB, patternB];


    Simply overlay each person’s shares to get back the original image!

    Animated demo of visual cryptography decryption

    Wrap up

    That’s a super quick overview of the ideas behind visual cryptography. There’s a tonne more fascinating stuff to read, especially once you get into the k out of n schemes and using coloured images I mentioned in the intro. Here are some of the great resources I’ve been reading to learn about visual cryptography. Dive in!

  3. How to Install VirtualBox on macOS High Sierra

    I tried to install VirtualBox on macOS High Sierra, but I got an error about kernel drivers, system extensions, and kernel modules not being installed. The VirtualBox installer fails with “The installation failed” where it “encountered an error that caused the installation to fail.”

    Go to System Preferences > Security & Privacy. Click the ‘Allow’ button at the bottom. Re-run the installer. More detailed instructions are below.

    VirtualBox on macOS failed to install

    VirtualBox has an error when installing.

    • Run the VirtualBox installer just like any other installer.

    • You might see a prompt from macOS about not allowing unsecure system extensions. You can click ‘Next’ for now.

    • After reaching the end, installation will fail with the message above.

    • Navigate to System Preferences > Security & Privacy. At the bottom of the window, you should see a message saying “System software from developer, ‘Oracle, America, Inc.‘ was blocked from loading.”

    VirtualBox allow kernel modules

    • Click the lock in the bottom left corner, enter your password

    • Click ‘Allow’ next to the ”blocked from loading” message.

    • Re-run the VirtualBox installer. It should succeed.

    VirtualBox install success on High Sierra

    How to add a shared folder for Ubuntu on a macOS High Sierra Host?

    Side note: here’s how to share files between a Ubuntu virtual machine and macOS High Sierra on VirtualBox.

    • Download, set up your VM. See above.

    • Open settings for the VM. Click the “Shared Folders” tab. Add your folder and select Yes for “Auto-mount”

    • Run the VM

    • While the VM is running, in the Mac menu bar go to Devices > Optical Drives > Choose disk image…

    • Select the VirtualBox Guest Additions image, for me this is located at /Applications/ Once the Choose disk image… option was selected, you were probably shown a file picker. Press Command-Shift-G and then type in that file to choose the VBoxGuesAdditions.iso.

    • You might need to force mount/unmount. You’ll be prompted by VirtualBox if this is necessary.

    • Restart your VM.

    • Run the following command to install prerequisites for the Mac VirtualBox Guest Additions: sudo apt-get -y install gcc make linux-headers-$(uname -r)

    • Then run sudo /media/cdrom/ to install the Guest Additions

    • Restart your VM again.

    • Run sudo usermod -aG vboxsf USERNAME where USERNAME is your guest OS username. This will let your user access the shared folder.

    • Your folder will be at /media/sf_FOLDER_NAME, so cd /media/sf_FOLDER_NAME

  4. Volunteering at CTO Summit

    At CTO Summit, CTOs, VPs, and engineering managers shared the behind-the-scenes of their companies’ engineering teams with 150 attendees. They talked through surviving rapid-growth engineering and orchestrating teams at scale. They also needed volunteers to help run the conference, which is how I got in.

    When I graduated high school, I plainly looked forward to seeing what was outside the tiny Australian town I grew up in. The idea that a few years later I’d be in the Times Square Nasdaq building was, and is, ludicrous. That’s one of those places that exists in movies—I always felt there was like a 79% chance it was fictional.


    Seriously, it’s this place.

    Turns out it’s real, and you need a lanyard and a nametag to be there. That’s where I come in: for the morning, I had to greet and register some of the most influential people in tech. Cool.

    My mate at registration was a Ghanian expat with an undergraduate in geospatial systems. As you’d expect, our chit-chat turned into a diagram-and-equation complete overview of GPS (between attendees’ arrival, of course). I laughed at the lengths the government have to go to secure GPS signals from timestamp tampering, which would totally ruin your phone’s positioning system.

    For the afternoon, I was on speaker tech support. In the 30 seconds between lightning talks, I ducked up on stage, reconfigured the display, changed to the next presentation, and fiddled with the clicker, hopefully without the audience noticing. And if anything went wrong, just like… fix it. The reward? Front row for every talk that afternoon.

    Two outstanding talks from the nine I was lucky to see: Randy Shoup and Edith Harbaugh.

    Randy (Stitch Fix, eBay, Google) talked about the practical technical concerns of microservices at Stitch Fix. Watch the video of the talk when it comes out—it’ll be great. Two high level notes: don’t do microservices if you’re small, and this gem: if you don’t have big technical problems while growing, you over-engineered and cost the company early. Embrace that mistakes are inevitable—just make sure your mindset is open to tackling them.

    I had looked forward to Edith Harbaugh’s talk all day since I love LaunchDarkly (seriously, read this article on Building vs. Buying and tell me you don’t love a company that writes so cogently). Her talk, Software & The Art of Bicycle of Maintenance, told the story of her bike trip across North America, and shared the many insights she had. The most important thing? Take care of yourself. It’ll add water to your reservoir to use on the real fires.

    I learned from every talk that afternoon, and picked up so much from chatting to everyone in the hallways in the breaks. I’m grateful to Peter, Samantha, and Jon for having me on as a volunteer. I’ve volunteered at camps, festivals, and conferences now, and every single one has been really rewarding.

    If you’re interested in volunteering at something, do it.

  5. Emoji Bullet List ⚡ Behind the Scenes

    Have you ever seen tweets like these?

    Bulleted lists that use emoji

    • 🌟 look awesome
    • 💯 are perfect for sharing on social media
    • 😄 bring joy to boring lists

    (Can you guess how I made that emoji list?)

    Painful to write, though. Like, I know emoji better than most, and I struggle to quickly pick out the right emoji to go with each line.

    I built Emoji Bullet List to make creating emoji dot point lists really easy. Just copy in your list, hit the big “Emojify” button, quickly choose from the suggested emoji if the first suggestion doesn’t fit your needs, and hit “Copy” to get an emojified list back. Too easy!

    This idea originated as a nice-to-have feature for Rocket, but I realised I could use Rocket’s emoji keyword/phrase dataset to build this into a web app. More people can access it, it’s a bit easier to use, and hopefully a few more people will find Rocket because of it.

    I couldn’t figure out a good way to monetise it, so it’s completely free 🤷‍♂️.

    Technical Notes

    Simple, useful logging for Node.js apps

    I added unremarkable-yet-incredibly-useful logging with ten lines of JavaScript that lets me see in detail how (anonymised) users are interacting with the app. (This is great for low volume apps, but I don’t do this for services running at scale.)

    • Create a middleware function early in the chain that gives a user a random identifier as a cookie (using Express cookie-parser) when they access a page if they don’t have one already.
    app.use((req, res, next) => {
    	if (!req.cookies[COOKIE_NAME]) {
    		res.cookie(COOKIE_NAME, uuid(), { maxAge: 900000, httpOnly: true })
    • Create a second middleware function using the Express response-time middleware that logs the user’s cookie, what they’re requesting, and how long it took us
    app.use(responseTime((req, res, time) => { 
    	const cookie = req.cookies[COOKIE_NAME] || 'no-cookie                           '
    	console.log(cookie, req.path, time)

    (The extra spaces next to no-cookie are so that it lines up with our UUIDs in the logs.)

    • Since I use pm2 to manage the app in production, the log file gets handled automatically, and I can just pm2 logs to stream the app in use and see what people are doing in real time. This is pretty addictive. Let’s take a look at one example I saw.
    # A new user comes to the app, gets their identifier set as c5ff9a10
    0|index    | no-cookie  / 						0.5199119999999999
    0|index    | c5ff9a10   /styles.css 			0.39601899999999995
    0|index    | c5ff9a10   /app.js 				0.33612
    # Another new user comes in, set as 1378f9d0
    0|index    | no-cookie  / 						0.37545999999999996
    0|index    | 1378f9d0   /styles.css 			0.362075
    0|index    | 1378f9d0   /app.js 				0.491498
    # The first user asks for some suggestions and uses them!
    0|index    | c5ff9a10   /api/v1/suggestions 	0.964749
    0|index    | c5ff9a10   /api/v1/used-suggestion 0.5390269999999999
    # Some previous user comes back to the app and asks for a suggestion
    0|index    | f92af790   / 						0.46471999999999997
    0|index    | f92af790   /styles.css 			0.40573299999999995
    0|index    | f92af790   /app.js 				0.217364
    0|index    | f92af790   /favicon.ico 			0.31112999999999996
    0|index    | f92af790   /api/v1/suggestions 	0.921465
    # Our original user is playing around with different suggestions until they're happy
    0|index    | c5ff9a10   /api/v1/suggestions 	0.676022
    0|index    | c5ff9a10   /api/v1/suggestions 	0.8778859999999999
    0|index    | c5ff9a10   /api/v1/suggestions 	0.71288
    0|index    | c5ff9a10   /api/v1/used-suggestion 0.522269

    There are a bunch of fancier ways using external services or adding full user tracking, but honestly there’s nothing more fun than tailing your logs in realtime while someone is successful with your app.

    I even saw one person come in, play around with the app for a minute, and click on the link to my Twitter profile. I opened up Twitter, and 30 seconds later I had a tweet from them about how much they liked the app 😁.

    (As a side note, you’ll notice attackers and bots trying to crawl your site for security vulnerabilities. /manager/assets/modext/modx.jsgrps-min.js, /media/system/js/core.js, /privacy_policy.php (why!?), /a2billing/common/javascript/misc.js, are some common ones.)

    Dead-simple Node.js and Express app deployment on DigitalOcean

    I’ve got a dead simple deployment strategy that’s great for small apps. Put this in a file called (or whatever) in your project.

    # Copy this to your package. Change the IP.
    rsync -azv --exclude node_modules/ --progress -e ssh "$PWD" root@XXX.XXX.XXX.XXX:~/app/
    # You may need to npm install on the DigitalOcean box

    And to your package.json, add

    "scripts": {
    	"sync": "./",

    And I simply npm run sync to update the app. Don’t do it at scale, but it’s super fast and works for small apps. I’m not fancy 🤷‍♂️.

    Other Notes

    • Like most web apps I make, it’s a one-page app using Node.js, Express, and MongoDB for long-term storage. On the frontend it’s pretty plain JS/jQuery/CSS. I love Flexbox more and more each day.
    • The emoji dataset is loaded into memory on the backend and we query from there, so it’s super fast.
    • I’m always surprised how simple implementing things like popup modals and selectable lists are in web development compared to iOS apps. It’s like 30 minutes of work to write your own.
    • Uses LetsEncrypt for HTTPS. So easy.

    If there’s anything you’d like me to write more about, let me know.

  6. 2016 Macbook Pro Battery Pack – Anker PowerCore 20100

    I’m travelling around for a while, and I’ve been on the hunt for a good way to give my 13-inch 2016 MacBook Pro (Touch Bar edition) a bit of extra charge. There’s information scattered around the internet on what works and what doesn’t, and I wanted to collect it here so that you don’t have to do as much research as I did.

    The short story: the Anker PowerCore+ 20100 with USB-C is the best way to charge a 2016 MacBook Pro using an external battery pack.

    Anker PowerCore pack for Macbook Pro

    The Anker PowerCore+ 20100 with USB-C. Source: Anker

    My Observations after Several Months of Use

    I’ve used the Anker for about four months now while travelling around the US. It’s survived camping trips to Washington and Yellowstone, domestic and international flights (N.B. it has to go in your carry-on), buses, trains, hostels in Nashville and hikes in Austin. Here’s what I’ve found:

    • It takes a long time to refill the battery on the Anker brick. At least overnight if you use the regular MacBook charger. The Anker USB-C Rapid Charger improves the charge time here if you need it (which you do).

    • The battery pack is pretty heavy. Feels about as heavy as the 13-inch Pro itself, although denser.

    • I can fit the pack in a pants pocket if I have to, but the thing is big and solid (and well-built!)

    • The “user interface” on the thing sucks. If you want to charge something, press the button on the front to make the lights come on. Then plug in your device. If you want to charge the brick itself, plug it in and maybe press the button. (I haven’t figured this out yet, after four months.)

    • The circle lights on the front will fill up. Eventually. Again, this thing charges slowly.

    • It holds about a MacBook Pro’s worth of battery charge when full. This is at least six full iPhone 5 charges (I actually ended up needing to charge my phone way more often than my laptop when I was travelling, so this was super handy)

    Overall, I highly recommend the Anker power brick. It’s reassuring to know you always have a power source when you need it. The Anker does the job it’s meant to, holds enough power, is well built, and has saved me more than a handful of times.

    Here’s the other stuff I figured out

    There are some caveats, but the Anker is the best way that I’ve discovered.

    • If you’re using the laptop heavily while the Anker is plugged in, the laptop battery will still lose charge, but much more slowly than on battery alone
    • If you’re using the laptop lightly while the Anker, the battery level will stay the same or charge slightly
    • If the laptop’s sleeping, the battery will charge, but slower than the normal power adapter
    • The 15-inch Pro is a different story because it has a) a larger screen, and b) different GPUs that draw more power. I expect that this means the 15-inch will lose charge under light usage while plugged in to the pack, but more slowly than without. I’d also expect that the laptop would charge while sleeping, although it will take longer
    • My anecdotal data is back up by the specs. The 12-inch MacBook Adorable (which is referenced by the Anker page) has a 41.4-watt-hour battery with a 29W power adapter. The 13-inch Pro gives 49.2-watt-hours with a 61W adapter. The 15-inch Pro has a 76.0-watt-hour battery and a 87W adapter. The Anker PowerCore over USB-C gives 5V at 3A, i.e. 15W of output.
    • The Anker detailed specs page mentions it’s not “fully compatible” but I expect that this is just because it charges more slowly than most people would expect

    Useful pages I discovered while researching

  7. Vanilla: Hide menu bar icons on your Mac for free

    I recently released Vanilla, a free app that lets you hide menu bar icons on your Mac.

    I had a bunch of people asking to hide the Rocket menu bar icon, but I didn’t want to add an extra option to Rocket’s already-crowded preferences window.

    There are other apps out there that already do this (I love Bartender!) but it felt weird recommending people download an app that costs $15 when Rocket was free. So I set about figuring out whether an app to hide menu bar icons is something people even wanted. This link took you to a simple page on my site that explained the idea and told people to tweet me if they wanted it.

    Rocket preferences

    Testing the potential for Vanilla

    A few people followed up on this, so I decided to build the app.

    I’m flipping back through my notebook and thought it might be kind of interesting to post up some photos (and also because I’m going to throw this notebook away soon but don’t want to lose the photos).

    There’s an annoying limitation in Rocket where, for certain apps that don’t properly implement the macOS accessibility API, it’s impossible to figure out the caret location to position the shortcut window. However, the system emoji picker doesn’t have this limitation. Why? I picked up my disassembler and started poking around the system frameworks.

    My best guess is that the system emoji positioner runs as a framework inside the current application. I dug around a bit, and found the macOS Open Scripting Architecture which lets you do that, but I couldn’t get it to work right. Anyway, while I was disassembling I also had a look at the system’s window server, which is responsible for showing stuff in the menu bar.

    Notebook p 93

    Disassembling, and then aha!.

    Take a look right at the bottom of that photo though—”can we just widen & shrink the status bar’s view”? That’s probably the “aha!” moment. I realised we could do a neat little hack with a perfectly coloured window to hide some menu bar icons.

    Anyway, I figured that was enough to build an app on, and away I went.

    Notebook p 106

    Lots of mental energy

    Things start to get ruthless on this next page: I cut a bunch of features and figure out exactly what it’ll take to get this app built quickly.


    Prioritising some features.
    ”$” is paid upgrades, “W” is web or marketing, “C” is core experience.

    Interesting note on “customisable icons” (a crossed out item in the top left column). I was dead-set on this being a core part of the Pro upgrade, and that no one would upgrade without it. But I decided to cut it from the 1.0 to get it out quickly. Guess what? Not a single person has asked for that feature since launch. Maybe that’s obvious in retrospect, but I was 100% certain this would be an important feature. Pretty glad I avoided that one.

    Also by this point I’d rewritten the core of Vanilla about ten times to get the effect and animations right. Check the right hand page—I must have decided to set a goal.

    Notebook p 106

    “Zen as fuck.”

    An early attempt at an app icon. Look at this piece of shit.

    Early app icon


    This is where I did 95% of the work on Vanilla in the early mornings before work. Those of you with a good memory for buggy software will know that Vanilla’s 1.0 was terrible at multi-monitor support. This is why.

    Notebook p 106

    Probably not the most ideal workspace

    Here’s where I figured it was good enough to release so that I could hit my launch deadline of the 2nd of May.

    Ready to ship

    Ready to ship

    Six updates later and a couple more core rewrites. I had tried to talk to a few designers throughout the process but no one was able to replicate the right filter and blur effects to get the background colour to match the menu bar exactly. So I finally decided to do some Computer Sciencing and write an inpainting algorithm to remove the menu bar’s text so we could always get the colouring spot on. It works pretty well.

    More work still to do on Vanilla but I wanted to get these photos up before I get rid of this notebook.

  8. Rocket: Slack-style Emoji Everywhere on your Mac

    Last week I released Rocket, a Mac app that gives you Slack-style emoji autocomplete everywhere you type on your Mac.


    The launch of Rocket easily had the best reception for any app I’ve made—quite a dream launch. Some highlights:

    • Front page of Product Hunt with around 200 upvotes
    • ~2,200 downloads, ~1,300 installs
    • My tweet about it went a bit crazy, with like 130 retweets and a few hundred favs
    • Featured on iMore

    A couple of lowlights, now that I think about it:

    • the app auto-update integration I added doesn’t seem to be working in the 1.0… I think lots of people will never get to use the newer versions
    • the app wasn’t quite done when I decided to ship (I wasn’t expecting this response!)—the licensing stuff, the custom gifs and emojis, and a few bugs weren’t in there. This meant that I didn’t make any revenue off the launch (that’s okay though, the rush of the launch was good enough).

    A thought I had considering that this is my first launch that anyone could consider successful: even with being featured and all the tweets and everyone being so positive, say I had the licensing stuff in there, and say it was $6. Now let’s just say that 5% of the 1,300 people who installed the app got the upgrade (I reckon that’s a bit high, but we’ll go with it). That’s 65 people × $7 upgrade = $455. Even with a dream launch—how the hell does anyone make money off software? Maybe for my dream launch I didn’t have my dreams high enough?

    Anyway, I couldn’t be happier. These have a been very exciting days.

  9. Charter: Read the Swift Mailing Lists from your iPhone or iPad

    I’ve just released a new app called Charter. It’s an iOS client for reading the Swift mailing lists. It’s available for free on the App Store.

    I shipped the 1.0 for Charter way earlier than I normally would, so the first version isn’t that great. The good news is that work’s well underway for the next version. And it’s all being done in the open.

    I’m really looking forward to making this app better.

  10. How to Record Podcast Audio from Your iPhone or Mac for $150

    For a new podcast project, I’ve done a lot of microphone, preamp, and digital recorder research. This guide and review shows you how to record podcasts and audio from your iPhone or Mac with one set of gear, and with the best bang for buck sound quality.

    These were my requirements:

    • be able to record on the go (iPhone, Zoom, etc.)
    • be able to record from my Mac (or PC)
    • be able to record an XLR microphone to both of these devices
    • keep costs as low as possible
    • be able to upgrade different parts of the setup later (e.g. I might want a better mic, to switch to a Zoom, etc.)

    I was able to get this done for around $150 US (depending on Amazon prices at the time you order).


    I’ll review each bit of podcasting equipment individually below, but here’s where I ended up after a tonne of research:

    A quick note: this probably isn’t the cheapest overall way to record your podcast, but this is the best way that I’ve found to be able to record from both iPhone and Mac without having two sets of gear, and where each piece of equipment is upgradeable later on. You might be better served by an iPhone-specific microphone (which I nearly ended up buying) and a USB mic for your computer. If you have a setup that other people might like, let me know on Twitter and I’ll add them to this post.

    I make Transducer, a Mac app for posting your podcast to Libsyn or SoundCloud. If this guide helps you, please consider giving it a download—there’s a 20-day free trial, and it’s only $5 after that.

    Audio sample using the iRig Pro and Pyle PDMIC58

    Here is an episode of my podcast that we recorded via Skype using the iRig Pro and Pyle PDMIC58. We were pretty happy with the sound quality considering that each host has very little room treatment. We found that this audio quality was comparable to (if not better than) another episode we recorded using a Rode podcaster microphone.

    iRig Pro review for podcasting

    The iRig Pro is a really flexible audio interface that lets you connect an XLR microphone to your iPhone or computer for a pretty reasonable cost ($135 on Amazon at time of writing).

    Digital recorders, like the Zoom H4n, are the iRig’s main competitor, but those recorders don’t let you record to your phone (and only some of them can be used with computers). They’re also much, much more expensive than the iRig.


    • The iRig can be used with both iPhone and Mac. I don’t know many other devices that can do this!
    • Works with any XLR microphone (though I wouldn’t put a mic that required a tonne of gain on it)
    • The iRig itself is really compact and light—much lighter than I anticipated
    • Recording is really simple for both iPhone and Mac. It’s more or less plug and play, with a little bit of software that I’ll go into in its own section
    • Audio recordings have good sound quality as long as you don’t turn the iRig’s gain above 3 o’clock (any higher you start to get a lot of noise). Thankfully, I found 3 o’clock a pretty comfortable position for spoken word audio recording. You’ll need to remove noise and increase the levels after the recording, but using Audition I found that this didn’t introduce any extra noise to the recording.


    • The iRig uses these totally bizarre first party cables that I’ve never seen anywhere else… I’m terrified of losing them!
    • You can’t use headphones that have an inline mic to monitor sound (I’m guessing the iPhone picks the headphones’ mic over the one to the Lightning port). There’s also a little delay when monitoring your voice with headphones.
    • It can be a little ungainly to hold, walk, and talk at the same time with all the cords going everywhere

    Overall, the iRig solves a problem that not many other devices are solving, and does it very well. I was pretty skeptical going into the purchase (no one seems to be using iRigs for podcasting), but I was pleasantly surprised. It’s not perfect, but it’s a good solution that fits my needs.

    Pyle Pro PDMIC58 microphone review for podcasting

    The Pyle-Pro PDMIC58 is a dynamic microphone that provides unfathomably good value for money, running at around $15 on Amazon. This is a purchase that comes via Marco Arment’s microphone mega-review. If you don’t have one, you’ll need a pop filter—I got this Shure one for like $5 that does the job. Another thing to note is that this microphone doesn’t come with an XLR cable. If you’re thinking of recording while walking around, I’d recommend a short XLR cable or getting some velcro zip ties to coil up the cord while on the move.


    • Cheap cheap cheap
    • Good sound quality


    • Doesn’t come with an XLR cable
    • Build quality is average

    Overall, the way I’d describe the Pyle is that the build quality is what you’d expect for $15, but the sound is worth 4x that. This is a great value purchase, and it can be easily swapped out for a better XLR microphone later on. I’d even get one just as a backup microphone they’re such good value.

    The best iPhone app for recording a podcast from your iPhone

    I tried as many of the available iPhone audio recording apps as I could get my hands on. Most of them are bad to decent, but the best I found was Apple’s Voice Memos, which comes with the phone. For recording on the Mac with the iRig and Pyle, you can just use QuickTime—the iRig can be used like any other USB audio input, which is a great feature.


    • Really easy to use and to start recording quickly
    • Simple to export many recordings at once by connecting to iTunes (some of the other apps had really terrible export options)
    • Works “through” the lock screen—i.e. you can start recording, lock your phone, and recording will keep going (and the phone even gives you live levels and recording progress on the lock screen). This was an awesome surprise when I discovered it!
    • Allows pausing and resuming a recording
    • Comes free with the phone


    • You have to give stuff a name when saving, where the default is “Voice Recording #x”. Not a big deal, but a little annoying when you’re trying to record a few clips quickly

    Here are the other apps that I tried:

    • Apple’s Music Memos. This is a new app that does a reasonably good job, but missing some of the awesome features of Voice Memos. One thing this app does really well is boosting voice, so if you ever forget your microphone, I’d consider recording with this app as a last resort.
    • Voice Recorder
    • Awesome Voice Recorder
    • Voice Record Pro 7
    • Voice Record Pro
    • iRig Recorder. This is the option that the makers of the iRig offer. It doesn’t do anything really special.


    With the iRig Pro for $135 on Amazon and the Pyle-Pro PDMIC58 for $15 on Amazon I was able to create a mobile and desktop podcast recording setup.

  11. Visit the archive for more posts.