Lots of updates

March 2016

Porthole v1.7.8, AirVLC v1.1.2 and Denied v1.3.0 are out now. I released quite a few updates the past month and forgot to write about it. So, here’s a quick overview of what I’ve been working on.

For all apps I’ve updated the update framework — if that makes sense. All updates are now deliverd securely over https, instead of just http and using the latest version of the Sparkle update framework. Let’s go into the specifics of what has changed under the hood of Porthole, AirVLC and Denied.


  • Updated the update framework.
  • Switched to using HTTPS all through the app.
  • Updated the project in general. Note: Porthole is now compatible with OS X 10.7 and up. Use one of the previous releases if you’re on OS X Snow Leopard.


  • Updated the update framework.
  • Switched to using HTTPS all through the update.
  • Updated the project in general. Note: AirVLC is now compatible with OS X 10.7 and up. Use one of the previous releases if you’re on OS X Snow Leopard.

The updates for AirVLC and Porthole are pretty similar and mostly focus on bringing the apps into 2016. As a result both apps are now compatible with OS X 10.7, instead of OS X 10.6.8 If you require a legacy version, you can get it here for Porthole and here for AirVLC.


  • Denied displays Spotify album art again!
  • Instead of just using the slider, you can now enter the amount of days Denied should remember Repeating Songs.
  • Updated the update framework.
  • Brought the rest of the project into 2016 ;).
  • Bugs were fixed, performance was tweaked.

Denied’s update introduces a more finegrained manner to specify the amount of time Denied should prevent repeat plays. Instead of just adjusting the slider you can actually enter the number of days.

New repeating song judge in Denied v1.3.0

Apple resets reviews in the Mac App Store after an update comes out, so I was pretty stoked to see a few new ones appear almost straight away. The creative ways in which people describe how Denied helps them out is awesome, so I’d like to share a few here:

⭐⭐⭐⭐⭐ A must-have for public Spotify playlists!

This app is so good it should be integrated into Spotify itself. If you listen to public playlists or some charts, and are tired of that one song that just keeps playing all the time — get Denied.

by dubstrike from the US on Feb 24, 2016

⭐⭐⭐⭐⭐ Essential.

I can’t imagine a Mac with this uninstalled. Especially with Apple Music and Stations, the risk of hearing an Adele song grew too great. Now rather than hearing her dreadful wailing, I get a notification reminding me that my ears have been saved from the misery once more. Works perfectly, every time.

by David Harrison from the UK on Mar 22, 2016

They’re all great, but especially the last one cracked me up.

Hedge for Mac

I’m working on a startup with three other guys called Hedge for Mac. It’s an app for OS X, aimed at video professionals, that helps you import data from your camera and make multiple copies — or backups —, securely and quickly.

Hedge for Mac

We launched version 1.0 on March the 22nd. For more information check out the website and download the trial version.

That’s it for now. For more frequent updates about Danger Cove apps, consider following me on Twitter or Facebook.

Control your AirPlay speakers remotely with Porthole

April 2015

Being able to remotely control my AirPlay setup from the comfort of my couch has been at the top of my feature request list forever, so I’m very excited to say that it’s now a feature in Porthole!

Porthole Remote

I’ve added Porthole to the collection of apps that work with the remarkable Unified Remote. Unified Remote is an app made by Unified Intents that allows you to remotely control many features of your Mac and a whole bunch of third-party apps, now including Porthole.

The remote lets you turn AirPlay speakers on and off, toggle the computer speaker and adjust the main volume from any iOS, Android and Windows phone or tablet that’s on the same wireless network as your Mac.

Ready for Yosemite

October 2014

Apple released OS X version 10.10 yesterday. It’s a free update and I think most of you will want to upgrade as soon as you get the chance.

All Danger Cove apps have been tested and work beautifully with OS X Yosemite. So, don’t let Denied, Porthole, AirVLC, coucou or Reign hold you back and have fun checking out all new features Apple has added!

Use Shazam's Mac app through Porthole to match songs without recording every sound in the room

July 2014

Shazam, the amazing music recognizing service, released a Mac app today. It listens for audio around your Mac and tries to match it to music and tv series. Pretty awesome!

I don’t particularly like the idea of having an app listening to every sound in my office/home though. So I did some testing and it seems it selects the default audio device for recording. Normally this is your microphone, which obviously picks up any sound in the room.

Shazam for Mac

If you’re streaming to AirPlay speakers with Porthole however, the default recording device is Soundflower. Soundflower only records all the audio that would normally come out of your Mac’s speakers. This feels a lot more private and comfortable to me.

Here’s how to set it up:

  1. Download Shazam;
  2. Quit Shazam if it’s already running (important, don’t skip this!);
  3. Download Porthole;
  4. Start streaming with Porthole;
  5. Launch Shazam.

If you stop streaming, Shazam will still be listening to Soundflower’s output, which outputs nothing. As an added bonus, because the sound comes in crystal clear, Shazam might be able to match it a little faster ;).

Do note that Shazam might change this behavior in the future and force it to use the microphone, but for now this seems to be a more private way to use Shazam on your Mac. Also remember that if you restart Shazam (or run it at login) it will default to using the microphone.

Porthole is now scriptable

June 2014

Porthole version 1.7.0 came out two days ago. It introduces scripting, a feature that’s been requested more than once.

Being able to use AppleScript to control Porthole means that you can automate and toggle certain functions of Porthole without going through the interface. Which is pretty awesome!

Script Porthole using AppleScript

Update to the latest version from within the app, or download a fresh copy from the website. Then read the tutorial on scripting to get started.

Learn How to Script Porthole

June 2014

Starting with version 1.7.0 Porthole is scriptable using Apple’s AppleScript Editor (or Script Editor in Yosemite). This means that you can automate and toggle certain functions of Porthole without going through the interface.


  1. Use cases
  2. Getting started
  3. Advanced tricks
  4. Notifications
  5. Reference

Use cases

These are a few cases in which scripting could come in handy:

  • Automatically connecting to a certain (or every) speaker on startup.
  • Chaining several actions in one, such as: starting Spotify, playing a song and then connecting to all your AirPlay devices. You can put that in a single script.
  • You could use it to develop a remote control.
  • And obviously any case where you want to control Porthole without going through the interface.

Getting started

  • Launch Porthole at least once and set it up.
  • Start (Apple)Script Editor.app (find it in /Applications/Utilities/(Apple)Script Editor.app).

Script Editor

When you have AppleScript Editor running, paste in the script below to get the name of the first speaker Porthole’s found. Press the big green “Run” button when you’re done.

tell application "Porthole"
  name of first speaker
end tell

As you were probably expecting, Porthole should now be connected to the first speaker it found. Pretty sweet!

Advanced tricks

Say that you always want to connect to a certain speaker when your Mac boots up. There are a few things we need to do for this to work:

  1. Get a unique identifier for our speaker.
  2. Use that unique identifier to connect to the specific speaker.
  3. Run the script on startup.

Getting the unique identifier

Run this script:

tell application "Porthole"
  set output to "Speakers:\n"
  repeat with sp in speakers as list
    set output to output & id of sp & ": " & name of sp & "\n"
  end repeat
end tell

It should return something along the lines of this:

12AB34CD56EF: Boy & Auk's AirPort Express
FE65DC43BA21: AirPort Express

Using the unique identifier

he first value is the MAC address and unique identifier of the speaker, we’ll use this to pick out a specific speaker to connect to.Let’s pick “Boy & Auk’s AirPort Express” in this case. Make sure you replace the id with the value that was returned on your Mac.

tell application "Porthole"
  set sp to (first speaker whose id is "12AB34CD56EF")
  if sp is not connected then
    connect to sp
  end if
end tell

And that’s it, Porthole will only connect to that specific speaker. Run the script to test it.

Run the Script on Startup

You can actually turn Scripts into Applications, which you can add to your Login Items. Perfect, exactly what we need. Before we do this though, lets make a tiny modification to our script.

tell application "Porthole"
  delay 10
  set sp to (first speaker whose id is "12AB34CD56EF")
  if sp is not connected then
    connect to sp
  end if
end tell

The ‘activate’ command will load Porthole if it isn’t already running. Then the delay will give Porthole ten seconds to discover any available speakers. After that the script runs like it did before.

To turn this into an app, in (Apple)Script Editor, click File → Export… and in the dialog box that opens choose Application under File Format.

Save the file anywhere you like, but remember its location.

Finally, go into System Preferences and select Users & Groups, then Login Items. Press the little + button and pick the Application you just created. Your script will now run at login!


Version 1.7.1 and up.

Porthole sends out system wide notifications when an AirPlay speaker appears/disappears/connects/disconnects and when the computer speaker setting is toggled. This removes the need to poll for changes.

To receive these notifications, hook into the NSDistributedNotificationCenter event:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePortholeSpeakerStateChanged:) name:@"com.dangercove.Porthole.SpeakerStateChanged" object:nil];

- (void)dealloc {
    [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];

- (void)handlePortholeSpeakerStateChanged:(NSNotification *)notification {
    NSLog(@"Speaker state changed:\n%@", notification.userInfo);

The notification’s userInfo contains a dictionary with the current speaker setup:

    speakers =     (
            connected = 1;
            macaddress = 12AB34CD56EF;
            name = "Danger Cove";
            connected = 1;
            macaddress = AB34CD56EF12;
            name = SandroTV;
            connected = 0;
            macaddress = FE65DC43BA21;
            name = "AirPort Express";
    useComputerSpeaker = 0;


These are all the Porthole-specific commands you can use. For a more general AppleScript tutorial, have a look at this guide.

Parameter Description
speaker Addresses a single speaker. Properties: id, name, connected, streaming
every speaker Addresses all speakers.
first/second/…/last speaker Addresses the first/second/etc speaker. You can also use speaker 1,2,3,etc.
connect to [speaker(s)] Connect to the specified speaker(s).
disconnect from [speaker(s)] Disconnect from the specified speaker(s).


Command Description
use computer speaker [boolean] Enable or disable the (connected) computer speaker.

This is a property. You can set like so:

tell application "Porthole"
  set use computer speaker to true -- or false
end tell

So much (volume) control

April 2014

Porthole volume control

Porthole’s main volume control has always been the buttons on the keyboard. Pressing F10 will mute everything, F11 lowers it and F12 turns it up. Just as you’d expect when looking at the little icons on the keys, really.

Sometimes this isn’t enough. Looking at the amount of votes this got on the suggestion page, for quite a few people this wasn’t enough. If you have a great deal of speakers around your home (or one that’s particularly obnoxious, volume wise) being able to set a specific volume becomes important.

This posed a design challenge, more than a technical one. I frankly didn’t feel comfortable adding an undetermined number of sliders to the interface. Porthole’s main focus has always been elegance and ease of use. That doesn’t mix well with a row of sliders, trust me. Also, I didn’t want to give up the use of the volume keys.

After some consideration and tests, I came up with something that works. There are sliders, but they aren’t in the main interface and they control the volume, but not in a way that conflicts with the volume keys. Instead of setting the volume absolutely, the sliders determine an offset, that’s why you can set a negative number.

In practice, this works as follows: Say the main volume is at 5, one speaker has a -2 offset, the other +4. This means the absolute volume for speaker one is 3 and for the other 9. Pressing the volume keys to turn up the volume by 1, sets the speakers to 4 and 10 respectively.

This might take a bit to get used to, but I’ve found it works very very well. Especially because all volume preferences are saved per speaker.

Want to take this for a spin? Just download version 1.6.0 or higher!


October 2013

Apple released OS X version 10.9 yesterday. It’s a free update and I think most of you will want to upgrade as soon as you get the chance.

All Danger Cove apps have been tested and work with OS X Mavericks. So, don’t let Porthole, AirVLC, coucou or Reign hold you back and have fun checking out all new features Apple’s added!

It's Danger Cove's birthday!

October 2013

I’m writing this from my studio in The Hague. It’s been quite an adventure from when Danger Cove started October first 2011. An expedition that delivered four released apps, one in progress (more on that in a future post) and a whole bunch of projects that looked cool at first, but now live in a folder called “shelved” ;).

Danger Cove turns two today! Porthole and AirVLC are 40% off to celebrate!

It feels awesome that Danger Cove apps are being used by more people than I could hope for. Thanks so much to the wonderful people that took the time to spread the word about them. I appreciate it a lot.

To celebrate, both Porthole and AirVLC are 40% off today! I assume you already got that from the header image though. The offer will end October 2nd at 12pm CET.

Update Porthole to restore Apple TV compatibility

September 2013

I just released Porthole v1.4.4 which restores compatibility with the Apple TV. Apple’s latest update for the little black device changed some AirPlay protocol related things that stopped quite a few third-party AirPlay audio apps to work. The update makes sure Porthole plays by the new rules.

Putting out a fix came sooner than expected, very much thanks to Jason from Industrious One who found the solution and Quentin over at Rogue Amoeba who mentioned Jason’s fix to be “very very simple”, which in turn pointed me in the right direction :).

Have a look at their websites and products, both make excellent apps! Especially if you’re into listening to music or work with audio.

To update to the latest version of Porthole, Check for Updates in-app or download the latest version.

Apple TV v6.0 update warning

September 2013

This issue has been resolved. Update Porthole to restore compatibility. Read the follow up for more details.

The latest Apple TV firmware (version 6.0) adds a new layer of mandatory encryption for audio playback that wasn’t required before. This currently prevents unofficial audio based AirPlay apps to work like they used to.

I’m looking into the issue and trying to figure out a solution, if there is one. This requires some research and it might take a while to find a way around the encryption.

The best thing to do at the moment, is to not update your Apple TV to the latest version if you want to stream to it using Porthole. To stay up to date, follow @getporthole on Twitter. Sorry for the inconvenience.

Note that Apple TV’s running 5.3 or below and other AirPlay speakers are unaffected.

Porthole update v1.4.0

July 2013

The latest update for Porthole adds a brand new feature. A feature that’s been requested quite a few times. Are you ready? This update, adds the option to use your Mac’s speakers while streaming via AirPlay! This means that your tunes will come out of your AirPlay speakers and your Mac. All in beautiful sync.

Instead of switching between local playback and AirPlay, now everybody has at least two sets of speakers!

Use all the speakers!

If you emailed me about this feature in the past, you’ll know that I held off on implementing this. Not because it was technically hard, but because it would require extra interface elements. Porthole has always been about being easy to use and elegant. Too much noise in the interface would compromise this. Hopefully you’ll agree that with version 1.4.0 I’ve found a middle ground that works.

Porthole v1.4.0

Porthole v1.4.0 with added options for enabling local playback.

As you can see the AirPlay Receivers and computer speaker are both located in separate sections. Porthole still primarily controls your AirPlay output and you’ll mainly use the top section of the menu. Everything is there to: switch between speakers, connect to all and stop streaming all together.

Select AirPlay speakers

Toggle AirPlay speakers.

Enable Mac speakers

Control your Mac’s output.

The bottom section allows you to toggle the computer speaker. By default it’s off. Click the menu item to turn it on, even while Porthole’s already active. The setting is saved and the next time you start streaming it’ll output according to your stored preferences. Click the menu item a second time to turn it off again.

The volume slider allows you to adjust the volume of the computer speaker, separately from the AirPlay volume. Remember that it directly influences the volume of the computer speaker. When you stop streaming, that’s how loud it’ll be.

Excited to try this on your setup? You can get the update via the ‘Check for Updates’-button, located in the Preferences window. Or just download the latest version from the website.

Porthole update v1.3.2

May 2013

I’m happy to have released two updates for Porthole this month, version 1.3.0 and 1.3.1. Why don’t I walk you through some of the things that were updated and improved.

Retina Graphics

For version 1.3.0 I focussed on cleaning up a lot of the interface. I never got around to adding Retina-compatible graphics to Porthole and this update takes care of about 90% of that. New in-app icons, setup wizard imagery etc. The AirPlay speaker icons were actually updated again in version 1.3.1 after I was told that graying out the music note when the speaker isn’t connected seemed to suggest the option was unavailable, instead of just inactive.

Porthole v1.2.2

Porthole v1.2.2

Porthole v1.3.0

Porthole v1.3.0, notice the much sharper menu bar icon

Porthole v1.3.1

Porthole v1.3.1, the speaker icon changes when it’s connected

Setup Wizard

The setup wizard was next to receive a little overhaul. Instead of going with the named progress indicator along the top of the wizard I wanted to do something that is a little easier to maintain and localize. I ended up using BFPageControl, which is actually a page control, but doubles easily as a low key progress indicator.

It’s also a little shorter and the image on the first step has a more obvious indicator of what Porthole looks like, in the menu bar.

Porthole v1.2.2

Porthole v1.2.2

Porthole v1.3.1

Porthole v1.3.1

Embedded Store

Next thing on the list is the option to purchase a license for Porthole from within the app. It’s entirely optional, but it provides a nice flow that takes out the license-key-copy-pasting that’s normally involved. The store window opens a secure WebView connection to FastSpring, with a theme that works well within an app.

It’s actually a component that’s provided and maintained by FastSpring themselves. You can get it here, on GitHub.

Porthole Purchase Window Porthole Purchase Window

Soundflower’s Volume

Porthole uses Soundflower to capture all the System Audio and transfer it to AirPlay speakers. I noticed that quite a few people encountered a bug where the output volume would be so low, the sound was practically inaudible. Upon further inspection I noticed that while Soundflower’s master volume was working fine, the left and right channel volume would be turned all the way down. Porthole only manipulates the mast volume and thus would not be able to fix it on its own.

My previous way of handling this issue was to instruct people to manually turn up the volume using Audio MIDI Setup.app. Which works, but is cumbersome and only works for people who look up the solution in the FAQ or email me for help. I finally decided to add an automatic fix in version 1.3.0, but not without the option to turn it off for people who require the left and right volume to be set to separate values.

Soundflower Volume Muted Soundflower Volume Fix

Password Protected AirPlay Speakers

This has been on my list for quite a while. It wasn’t a feature that was often requested, but it would enable everyone in more public spaces to password protect their speakers and still enjoy Porthole. Using passwords in OS X is tightly connected to Keychain, which stores passwords for all apps and even allows you to share passwords between them. I want Porthole to be able to use AirPlay passwords stored by iTunes, for example. The API for implementing this changed quite a bit between OS X 10.6 and 10.7+, but by wrapping MCSMKeychainItem and sskeychain this wasn’t too much of a problem.

You can now easily connect to all password protected speakers, use passwords stored in Keychain, or add new passwords straight from Porthole. Awesome!

Password Protected AirPlay Speakers

Other Minor Fixes

That’s about it for the manjor changes, fixes and updates. Apart from those I also made sure windows that are open (Preferences, License Window, Embedded Store) are pulled to the front when the menu bar icon is clicked, making it easier to see where they are.

The text on the buttons and menu items is more consistent, and the ellipsis make more sense now.

Stay tuned to see what’s up for the next update, follow me on Twitter and Facebook.

You can read more about Porthole on http://getporthole.com.