Danger Cove apps work flawlessly with first macOS Big Sur beta

June 2020

After trying Timeless, Denied, Carbonize, Relax and Pipvid with the first macOS 11 beta, I’ve discovered they’re all working fine!

New releases tend to introduce (security) features that I need to comply with, but the first beta at least seems to be fully compatible. 👍

A screenshot of every app running macOS 11 Big Sur beta 1

Here’s a screenshot of the apps running on the new OS. Notice the huge change in design.

I stick to default UI elements for most of my apps in anticipation of an event like this; every app immediately looks right at home with the new look. Apart for Denied, which could use with some rounded corners. 😅

Toggle Picture-in-Picture with a keyboard shortcut

April 2020

A screenshot of Pipvid's new keyboard shortcut setting

Pipvid v2020.2 adds a Global Keyboard Shortcut ⌨️ that allows you to toggle it off and on with the press of a button!

This makes is very easy to switch VLC and QuickTime in and out of PiP-mode. It litteraly takes less than a second.

It’s not as sophisticated or innovative as the resize trigger, but it’s so convenient. It’s made me use Pipvid even more. 👌

You can get Pipvid on Gumroad!

Always pause music players when switching speakers

April 2020

A screenshot of the new actions preferences window, showing the 'always pause players' checkbox

I’ve expanded a feature in Relax! Instead of only kicking into action when the default output switches to the built-in speaker, you can now choose to pause Spotify, Music and/or iTunes when the default audio output changes to any sound device. 🥳

This is a great update for when you leave your Mac connected to external speakers, but don’t want to miss a second of your favorite music or podcast when you disconnect your headphones. 🎧

You can get it on the Mac App Store!

A new digital indicator for Timeless

April 2020

Clocks come in two different flavors: digital and analog. With Timeless’ latest update the same goes for the indicator.

If you found it difficult to determine exactly which range you were in previously, you’ll enjoy this new option.

Simply go into preferences and switch the indicator Style.

A screenshot of Timeless' preferences window

Go from this:

A screenshot of the analog indicator for Timeless

To this:

A screenshot of the new digital indicator for Timeless

Get the update directly from me, from the Mac App Store or through Setapp.

Relax v2020.1 is out now

April 2020

Get Timeless and 170+ other great apps for just $9.99/mo

April 2020

The app icon of Timeless' and Setapp's logo together

I’m proud and excited to announce that Timeless is now available through Setapp! 🥳

Setapp is an award winning service that offers unlimited access to a curated list of 170+ high quality Mac apps for just $9.99 a month. You can use tools like Bartender, CleanMyMac, Dropzone, iStat Menus, IconJar, Ulysses, Timeless (of course) and many more with one easy subscription.

If you’re a designer, programmer or another type of professional, you’ll appreciate the convenience and power that comes with having access to such a wide range of software.

I’ve been a longtime fan of Setapp and its collection of Mac gems 💎. It’s a great way to use Timeless and adds another path besides the direct download and Mac App Store through which you can keep your eyes of the clock and stay focused while getting work done.

Timeless out now on the Mac App Store

March 2020

Screenshot of Timeless on the Mac App Store

Timeless is now also available on the Mac App Store! It’s the exact same release you get from download it directly from me.

An in-app purchase unlocks the premium features. 🔐


With the new download option also comes an update for the non-MAS release. It contains mostly under the hood changes to accommodate the App Store release.

New features for Timeless!

February 2020

A new version of Timeless came out this Friday! Besides a whole bunch of under-the-hood tweaks and improvements it introduces two new features that were requested by a few of you.

I’ve also switched to a more liberal versioning system. This is update came out in 2020 (2020.3) and it’s update number three (2020.3) this year. In a more traditional versioning system I might’ve called this is 1.5 or even 2.0 release. 🚀

New features

Let’s start with the new features. They were both requested several times and I think they’re great additions.

Both are premium features that will be unlocked when you buy a license for Timeless.

Connect the last and first time entry

A screenshot of the indicator preferences screen of Timeless

This is a feature for night owls. Previously Timeless would create a range up to the last time entry, then turn idle until the first time entry the next morning. This won’t do if you’re getting something done between 10 PM and 3 AM. I’m excited to say that with version 2020.3 you can choose to bridge the gap between two consecutive, enabled days.

Simply enable the feature in the indicator preferences. That’s it. ✓

Customize the optional clock’s date components

A screenshot of the indicator preferences screen of Timeless

Originally Timeless would always show the current day and time when the indicator is idle. If it’s Friday at 20:15, it would say “Mon 20:15”. The new default is to just show the time, clean and simple “20:15”. You can optionally add the current day and even display the full date “Mon 17 Feb 20:15”, exactly like macOS allows you to do.

All date and time formats are of course displayed according to your current locale. 🌐


  • The optional clock now has its own preference pane.
  • Toggling a premium feature shows the registration window as a convenient sheet.
  • A single internal timer makes sure all events happen at the right time.
  • Toggling weekdays is now a premium feature. If you were using the free version, your current settings are preserved.


  • The alignment of the time in the menu bar has been fixed for macOS 10.15.
  • Lots of under the hood changes and improvements regarding the internal clock handling UI updates, waking from sleep etc.

That’s it. A lot has changed in this release. If you notice anything out of the ordinary, click the ‘Timeless Help’ item and let me know.

Enjoy the update! 🙂

Denied v1.7.1

January 2020

Denied version 1.7.1 should resolve an issue that caused Denied to show a ‘validations error’ on exit. 🐞

You can get it from the App Store!

Post-DevMate updates

December 2019

With DevMate sunsetting in little over a week I’ve issued an update for every app that included the DevMate SDK.

🎧 Relax 1.2

Besides removing the DevMate SDK I’ve also included support for pausing Music.app in macOS Catalina. 👌

You’ll notice that I’ve updated the App Store screenshots as well. I liked the eye piercing background color of the original images, but I think this is a little more appealing. 😅

New Relax App Store screenshot After

New Relax App Store screenshot Before

📹 Pipvid 2.0.1

Like Timeless this updates switches the update mechanism from the DevMate SDK to just Sparkle’s update mechanism. Updates are hosted at Microsoft’s AppCenter, for now.

🕔 Timeless 0.9.8

This is getting very close to its initial 1.0 release!

🎨 Carbonize 1.2.9

I’ve included an Internet Access Policy to every app that accesses remote resources. With an IAP apps like Little Snitch can display a meaningful message when asking you to allow or block an app’s request to fetch an online resource.

Carbonize benefits from this because it requires access to carbon.now.sh. The message that a firewall like Little Snitch displays reflects that now.

Pipvid 2.0 is out now!

October 2019

This is a huge release, with a whole bunch of invisible and some visible changes! 🚀

Most notably the entire underlying window detection and pip-toggling mechanism has been rewritten. It’s more reliable and easier to expand in the future.

Secondly Pipvid now supports QuickTime 10.5’s native Picture-in-Picture mode on macOS Catalina. I’m personally still a fan of Pipvid’s more relaxed implementation. If you enable the option however, Pipvid will just trigger the native Picture-in-Picture Agent window when you resize a QuickTime window.

This release also supports managing the built-in PiP Agent window that apps like Safari and QuickTime use. Currently it allows you to snap out of Picture-in-Picture mode by enlarging the window beyond the trigger width that you’ve set in Pipvid.

An animated gif showing Pipvid triggering QuickTime's native PiP mode

If you’re a Pipvid user, some defaults have changed. Read on to see if you need to adjust your preferences.


  • The window detection and toggling mechanism has been rebuilt, making it more reliable and easier to expand to other apps in the future.
  • Assign to all Desktops now only triggers after resizing the window or when a new window is created, to reduce the times the menu pops up.
  • Only the window’s width is considered when checking if it should enter or exit PiP.


  • Support for QuickTime 10.5’s native PiP mode on macOS Catalina! (Disabled by default.)
  • Support for unsticking the native Picture-in-Picture window by resizing the window. (Works when the max. window size is set to < 50%. Disabled by default.)
  • A setting that allows you to choose whether Pipvid sticks windows as soon as it’s activated, or only when the window is resized. (Disabled by default.)
  • A similar setting as above, but for unsticking windows when Pipvid quits or is disabled. (Enabled by default.)


  • Fixed slight glitching when dragging windows around by repositioning windows after you’re done moving them.
  • The checkmark icon in the License Window and the Setup Wizard changes color with Light and Dark Mode.

Carbonize v1.2.8 is out now

October 2019

The team behind Carbon has been acquired by FOSSA a few days ago. That’s great news for them and for Carbon!

It also means that updates to the web based tool are coming out even fast than before. Most just add features to Carbonize, some alter the UI and require an update from my end.

I’ve released version 1.2.8 a few days ago to accommodate the changes Carbon made in version 4.3.0. It’s now available for download from the Mac App Store. Enjoy!

Denied v1.7 adds support for Catalina's Music.app

September 2019

Since the first Beta of macOS 10.15 Catalina became available on June 6th, I’ve been working on adding support for the new Music app that will replace iTunes to Denied.

A bug in the new operating system made this less than trivial unfortunately. Every time Denied tries to retrieve the title of the current track, it gets an error. After waiting nine beta releases for Apple to address the issue, I decided to ship an update that works around the issue.

This means that Denied version 1.7 with preliminary support for Catalina’s Music app is now available for download. 🚀

I say preliminary because it focusses on skipping tracks through one of the familiar filters. There is a known issue that prevents Denied from grabbing the track information when the app first launches and before Music.app was set to play, pause, skip to the next or previous track. As soon as Apple resolves the issue it should work exactly like it did on previous versions of macOS.

A screenshot showing Denied and Music.app on Catalina

Here’s a complete list of changes I made. It’s a pretty huge update!


  • This update adds preliminary support for future versions of macOS and their music app.

👆 Apple rejects apps that mention the name of apps and macOS versions that haven’t been released yet, hence the vague mention of what this update actually introduces.


  • I’ve updated the project and its dependencies.
  • The animations have been redone.
  • The minimum supported version of macOS is now 10.14 Mojave.
  • Lots of under the hood improvements have been made.


  • The crash reporter has been removed, as the service I was using is being retired. I’m keeping an eye out for an alternative. You can always get help through support.dangercove.com

Carbonize v1.2.7 is out now

September 2019

Carbonize version 1.2.7 is now available for download.

The update contains a fix for the update carbon.now.sh shipped earlier this week. In the update they moved a button, which in turn made Carbonize hide the wrong interface element. I’m sorry for any inconvenience this caused.

To prevent this issue in the future, I’d like to ship an offline version of the underlying Carbon editor with Carbonize. This would allow you to use Carbonize fully offline and make sure an update to the Carbon website won’t break Carbonize.

I’m close to getting this to work, but it’s not quite ready yet. 🤞

Pipvid v1.2 is out now

September 2019

Pipvid version 1.2 is now available for download. You can also get it by checking for updates in the app.

The update contains some bug fixes and a rewritten license window. I’ve actually ported over the new license window from Timeless to Pipvid, making it easier to share updates across all my apps.

Want to try the new license window? Buy Pipvid today. 😉

A screenshot of the new license window. It's very similar to the old one.

Added scheduling to Timeless beta

September 2019

I’m delighted by the feedback I received from the people who downloaded the Timeless beta over the past two weeks. The two most requested features were:

  • Displaying the indicator only on certain days.
  • Showing something useful when the indicator isn’t in use.

The latest update addresses both these requests with a new scheduling feature and the option to show a regular old clock when the indicator sits idle.

A screenshot of Timeless' indicator preferences

This means you can display the time before and after your timeless period starts and during the days you’re not working. The main goal is to reduce friction when giving Timeless a go.

A screenshot of Timeless' clock in the menu bar


If you haven’t already, I’m hoping you’ll install the new beta and let me know what you think.

The beta includes a built-in feedback dialog that you can use.

Toggle Pipvid based on window size

June 2019

Pipvid v1.1 was just released! 🚀

A screenshot Pipvid's preferences screen, showing the size based options

This update adds a brand new feature: it allows you to specify the maximum window size up to which Pipvid should manage it.

Using this setting means you can keep Pipvid turned on, use the player window as normal when it takes up a certain part of the screen, then shrink it down and Pipvid will automatically snap it into the corner. It’s size based automatic picture-on-picture mode. 👌

Get Pipvid today!

A new toolbar appears in Carbonize v1.2

March 2019

In the latest update Carbonize gets a pretty significant graphical overhaul. With the new toolbar comes a dedicated Export button that allows you to choose between exporting through the Floating Windows you’re familiar with, or a standard Save Panel.

A screenshot of the new Export menu in Carbonize v1.2

I’ve also added a Share button that allows you to quickly import the images in apps that you use often.

Finally, there’s a new Release Notes window that will update you on all the changes that were made. It’s shown the first time you launch an update.

You can get the update from the Mac App Store.

Carbonize v1.1 adds instant exports

February 2019

Carbonize v1.1 introduces a new rendering method that greatly reduces export time and improves compatibility with features available on carbon.now.sh.

  • You can now instantly export images, even when you’re offline.
  • Custom themes are fully supported,
  • as are image backgrounds.
  • Emoji work as expected.

You can get the update from the Mac App Store.

Relax v1.1 adds mute after waking from sleep

February 2019

Relax version 1.1 is out now. I’ve added support for pausing after your computer wakes from sleep.

I’ve also changed Relax’ muting-after-enabling behavior a bit:

Previously only starting Relax while it wasn’t running would trigger the mute-at-startup sequence. Now disabling and the re-enabling Relax will also mute the built-in speakers and pause any players. This should prevent even more awkward moments where you thought your speakers where muted while they actually weren’t. 👌

Update in the app, through the Mac App Store or get Relax today!

Denied is now free 🙀, with a Tip Jar

December 2018

I’m trying something new to support the development of my apps. Instead of charging upfront, Denied is now free with optional in-app purchases.

Screenshot of Denied with the Tip Jar visible

This puts a lot of trust in you, my customer. I rely on your generosity to generate enough revenue to continue working on my software. It’s a little scary, I have to say.

That said, I’m very excited about lowering the bar to use my apps. There’s nothing stopping you anymore from recommending Denied to others and for them to install it on their Macs.

If you’ve purchased Denied before, that’s marvelous. Your support has kept me working on Denied since 2014! I’m hoping you’re with me for this next chapter. 🤟

Don’t have Denied yet? Get Denied!

Relax pauses iTunes too

November 2018

A screenshot of Relax' actions preferences screen

Relax version 1.0.1 is out now. I’ve added support for pausing iTunes (and thus Apple Music) when you unplug or disconnect your headphones.

Update within the app, or get Relax today!

Denied update 1.5.3 out now

November 2018

A customer pointed out an issue with Denied and iTunes when playing songs from Apple Music playlists. If you skipped back a track in the Mini Player, the artwork would disappear.

This update resolves the issue and improves how Denied works together with Apple Music. Read on to learn what I changed in this latest release.

After some investigation I discovered that Apple Music only returns the artwork for offline tracks, or songs that you’ve added or saved. You don’t even have to store them offline, simply adding them to one of your collections enables retrieving the artwork through AppleScript. That sounds odd, and I was a little surprised at first. An explanation I found online states that iTunes uses two different types of tracks to represent an online and an offline track. It’s unfortunate that the online variant does not include the artwork. I’ll submit a bug report to Apple and ask them if this is by design, or if it can be resolved.

This means that Denied can’t display an image for some of the songs that you’re playing through Apple Music. To accomodate for this I’ve updated the ‘artwork not available’ placeholder image. It changes with the new accent colors in Mojave.

New 'artwork not available' placeholder image in Denied

You can get the update now on the App Store. 🚀

This post originally appeared on denied.app.

Improved disliked song skipping for Denied

November 2018

Apple’s just approved the latest update for Denied. Version 1.5.2 fixes a bug that prevented Denied from retrieving the ‘disliked’ state of a track when it did not have artwork.

You can get the update on the Mac App Store. 🚀

Instead of just pushing the update and forgetting the bug ever existed, I thought it would be interesting to tell you what exactly went wrong and how I resolved the issue.


Denied follows a set pattern to shape your listening experience.

  1. Get notified of a song change.
  2. Retrieve the song’s properties.
  3. Check if these attributes match any rules.
  4. Skip the track if a match was found.

To fetch a song’s title, artist etc. from iTunes or Spotify, Denied relies on AppleScript. This scripting language allows anyone to hook into an application (if it supports it) and retrieve information from it. Try this quick example.

  1. Launch Script Editor (/Applications/Utilities/Script Editor.app).
  2. Create a new document.
  3. Copy-paste the lines below. (Make sure you copy the lines for the right player.)

     tell application "Spotify"
     	name of current track
     end tell
     tell application "iTunes"
     	name of current track
     end tell
  4. Play a song.
  5. Run the script.

You should see the name of the current track in the Description field of the Script Editor.

The bug

Besides the track title, Denied also fetches the artist, the album, the artwork and (for iTunes) whether a track is disliked. Here’s what that script looks like.

property trackName : ""
property trackArtist : ""
property trackAlbum : ""
property trackArtwork : ""
property isDisliked : false
if application "iTunes" is running then
	tell application "iTunes"
			set trackName to name of current track
			set trackArtist to artist of current track
			set trackAlbum to album of current track
			set trackArtwork to data of artwork 1 of current track
			set isDisliked to disliked of current track
		end try
	end tell
end if
return {trackName, trackArtist, trackAlbum, trackArtwork, isDisliked}

This all works perfectly fine when scanning a track that has every property setup properly. The track’s artwork isn’t that reliable, unfortunately. Sometimes tracks don’t have artwork at all, sometimes it takes a few moments before it’s retrieved from the internet. I assumed the field would just remain empty then. That’s not what happens, though.

If the song’s artwork does not contain an image, the script returns the default value for all the parameters after it (property isDisliked : false). You can see why this would prevent Denied from ever knowing if a song without artwork was actually disliked.

The fix

Instead of fetching the artwork in the same script as the other properties, I made a seperate method that handles everything artwork related. This is similar to how I implemented fetching artwork for Spotify.


This was a pretty easy fix and I’m happy Apple approved the update withing a few hours. I’ve added some songs without any artwork to my test suite, so this shouldn’t happen again. I hope you found this interesting. 🙂

This post originally appeared on denied.app.

Denied adds Dark Mode and skips disliked songs (in iTunes)

September 2018

Apple has released the latest version of macOS to the public. The prominent new feature Mojave introduces is a new graphical theme, that Apple has dubbed Dark Mode. It’s a gorgeous, rough, yet elegant way to present the operating system you’re familiar with. Apps that customize their interface to take full advantage of Dark Mode look right at home and feel great to use.

I’m very proud to say that Denied supports Dark Mode from day one.

Dark Mode

While updating the color palette I took the opportunity to re-evaluate all the buttons, switches and other interface elements. Denied was released in 2014 and with this release it’s more than ready for 2018 and beyond. You’ll notice that it looks stunning in a lighter theme and on previous versions of macOS as well.

Skipping disliked songs

This has been a much requested feature and I’m happy to say that it’s finally here. iTunes and Apple Music allow us to mark specific songs as disliked. It’s a quick and easy way to let iTunes know that you don’t want to hear a specific track. You’ll be surprised to learn that this doesn’t actually prevent iTunes from playing these songs, though.

With the latest update of Denied this can been corrected. If enabled, Denied will will automatically skip over songs being played on iTunes or Apple Music if they’re disliked.

A similar feature exists in Spotify, but the property isn’t accessible to third-party applications (like Denied). I’m regularly checking if this changes.

Skipping explicit songs updated

I’ve switched to a new way of checking songs for explicit content. This updated method should be more reliable with more people using Denied every day. I tested it thoroughly and didn’t notice any downsides.

If you do pick up on a negative (or positive!) change in how Denied handles explicit tracks, send me a message.

Get version 1.5 now

I’m pretty stoked about this update and I think you’ll be too. Get version 1.5 in the App Store and consider leaving a five star review while you’re there. Reviews are immensely helpful in getting more people to notice Denied, plus it’ll make my day.

This post originally appeared on denied.app.

Shipped an update!

July 2018

Denied has been my favorite project since it first came out in 2014. Still, it took a while for this update to arrive. The main reason for the gap in releases is that Denied has been working really, really well for me (and quite a few of you!). It’s been stable (more on that in a bit) and feature-wise it was hard to work on anything new without overhauling the app. I’m commited to change that, though! (The part about not wanting to overhaul the app, obviously. Keeping it stable would be nice.)

Maybe you’ve heard of Apple’s latest iteration of macOS called Mojave, due for release this fall. Besides a lot of behind-the-scenes upgrades, it comes with a brand new Dark Mode. I’m stoked about making Denied look awesome with it enabled.

Keynote in macOS Mojave's Dark Mode

The update I just released also addresses a bug that could cause Denied to crash. According to my information this was the only one in the app and I’m happy that it’s resolved. A side effect is that there’s now a new option: “Pause When Filter Fails” which is off by default. This preference let’s you indicate if you want to pause playback if Denied is unable to execute a filter. Currently, this only applies to the ‘Skip explicit songs’ filter as it could fail to retrieve the information from the internet.

That’s it for now. Contact me on Twitter via @deniedapp for comments, questions or feedback. I’d love to hear from you.

Oh, one last thing: it would be great if you could review Denied on the App Store. Reviews really help me spread the word about Denied. Thanks!

Import and export rules

December 2016

I’ve always wanted for Denied to become a way to share your distate for certain bands, artists, songs and musical genres.

Last week I released Denied v1.4.0 which adds the option to export your existing rules and import those in any other copy of Denied. With this being the Holiday season, it might be the perfect time to compile your list of worst Christmas songs and share them with your friends and family.

The process is as easy as launching Denied, clicking the menu bar icon, selecting “Manage Rules” and then clicking either “Export Rules…” or “Import Rules…”.

Export rules with Denied v1.4.0

After you export your rule sets, you end with with .deniedrules files. You can either go through the menus or just double-click the file to import the rules contained in them. The process could not be more straightforward.

A bunch of .deniedrules files

You can even import multiple sets at once and Denied will ask if you’re absolutely sure. So considerate!

Importing rule sets

I’m a big fan of this feature personally. Stay tuned for more news on cleverly managing rule sets and sharing them with your friends.

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.

Denied version 1.3.0 came out today

February 2016

An update was long overdue and the Spotify album art issue was really getting on my nerves. So, here it is: Denied version 1.3.0!

  • 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.

The update is live on the Mac App Store.

More features for Denied

January 2015

Add songs from the Now Playing info

Denied version 1.2.1 is out today, but last month I shipped a major update that I haven’t posted about on here. It introduces awesome new features and a radical new design. Here’s a short list:

  • Skipping songs that contain explicit lyrics.
  • Skipping songs that you’ve heard before in the past few hours.
  • Seeing which song is currently playing and..
  • Adding rules straight from the Now Playing information.


  • The rules adding/editing interface has been completely revised.
  • Cool animations have been added.
  • Bugs have been fixed and things tweaked.

The best animation is probably the one you’ll never see. It happens when you pause or un-pause your music player.

Animations in the latest build of Denied

The gif above also shows the flow of adding a new rule based on the song that’s currently playing. The final version shows the amount of rules you’ve setup. Pretty neat.

Skipping repeating songs and tracks that contains explicit content are the two major new features. Both are disabled by default, but introduce powerful new methods to passively skip over music you don’t want to hear.

With the repeating song feature, you can set a timeout (between 30 minutes and 24 hours) and Denied will automatically skip over songs that have been played before in the set amount of time. I love this option when I listen to some Spotify Radio stations that have a limited amount of tracks.

Automatically skip repeating songs

The explicit content filter checks if songs are labeled as containing explicit lyrics. If you’re listening with kids, or other sensitive ears, this feature will surely come in handy. Note that while it works with Spotify, Rdio and iTunes, the song has to be available in Spotify’s library and you need to be connected to the internet.

Automatically skip explicit songs

New design & new features!

December 2014

I’ve teased the 1.2.0 update of Denied in a few previous posts and I’m super stoked to tell you that it’s finally here!

Add songs from the Now Playing info

To start of this off, let’s list everything that’s new or changed in this huge update.
Denied now lets you:

  • Skip songs that contain explicit lyrics.
  • Skip songs that you’ve heard before in the past few hours.
  • See which song is currently playing and..
  • Add rules straight from the Now Playing information.


  • The rules adding/editing interface has been completely revised.
  • Cool animations have been added.
  • Bugs have been fixed and things tweaked.

The best animation is probably the one you’ll never see. It happens when you pause or un-pause your music player.

Animations in the latest build of Denied

The gif above also shows the flow of adding a new rule based on the song that’s currently playing. The final version shows the amount of rules you’ve setup. Pretty neat.

Skipping repeating songs and tracks that contains explicit content are the two major new features. Both are disabled by default, but introduce powerful new methods to passively skip over music you don’t want to hear.

With the repeating song feature, you can set a timeout (between 30 minutes and 24 hours) and Denied will automatically skip over songs that have been played before in the set amount of time. I love this option when I listen to some Spotify Radio stations that have a limited amount of tracks.

Automatically skip repeating songs

The explicit content filter checks if songs are labeled as containing explicit lyrics. If you’re listening with kids, or other sensitive ears, this feature will surely come in handy. Note that while it works with Spotify, Rdio and iTunes, the song has to be available in Spotify’s library and you need to be connected to the internet.

Automatically skip explicit songs

A few things I'm working on

October 2014

A new update for Denied is in the works and I’d like to share a few of the features I’m about to add. Read the full article to see what’s coming in the near future.

The way Denied works, is that it picks up when Spotify, Rdio or iTunes change to a different song and then it puts that new track past a list of mechanisms - which I’ve labeled ‘judges’. The current version only has the ‘Rules Judge’ in place, who makes sure songs that match any of the user defined rules don’t get any airtime. In the upcoming update, Rules Judge gets some company.

I hate listening to the same song twice. Unless it’s my favorite song that day, then I can listen to it all the time on repeat. Anyway, some of Spotify’s (Artist) Radios have a limited supply of songs and you’ll notice the same song playing three or four times a day. The new ‘Originality Judge’ will put an end to this. It checks if a song was played before in the past x hours and will skip tracks that aren’t original enough.

Filter explicit songs with Denied

The ‘Explicit Content Judge’ has been requested quite a few times and I’m happy to say he’s on schedule to make his appearance in the next update as well. Trying to play most Hip Hop and Rap playlists and a few of my favorite Eminem tracks is impossible when he’s on duty. Any song that’s labeled explicit will be skipped automatically.

Keep an eye out for more news and maybe a due date for this update. In the meantime, are there any judges that you’d like to see? Let me know!

Denied is on sale and now supports Rdio & iTunes

October 2014

Denied’s version 1.1.0 is available for download. In addition to Spotify, it now automatically skip tracks in Rdio and iTunes as well! It also features an improved add-rule-flow that lets you create new rules much faster.

Get the update from the Mac App Store, or by checking for updates in the trial version.

Denied is on sale for a limited time for just $2.99, down from $6.99!

Reign in your Bonjour bookmarks

August 2014

A new version of Reign just came out. Yes, really. And it even has a few cool new features (not a new theme though, sorry). I want talk one of them here: having Reign show up in Safari’s Bonjour Bookmarks or Favorites.

/Reign servers on the network automatically show up!

There’s a magic menu in Safari, disabled per default, that will automatically show websites that announce themselves over [Bonjour](http://en.wikipedia.org/wiki/Bonjour_(software). Bonjour is basically “a group of technologies that includes service discovery, address assignment, and hostname resolution”. In short: it will let your Reign server show up in anyone’s Safari, without needing to install Reign! Here’s how to set it up.

Open Safari's preferences

First open Safari’s preferences.

Click Advanced and then enable Bonjour Favorites

Click Advanced and then enable Bonjour Favorites.

Enable the Favorites bar

Enable the Favorites bar.

Reign servers on the network automatically show up!

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.

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!

AirVLC v.1.1.1, still better with VLC 2.0.x

November 2013

It feels like an update for AirVLC has been overdue. Even though it’s been working very well for me and even made the transition to Mavericks like it was nothing.

The changes in this update are mostly behind the scenes; I updated the frameworks and project to work with Xcode 5. Besides that I’ve made some tweaks to accomodate a few changes Videolan made in VLC 2.1.0.

Unfortunately there is no way to test if those changes work yet, because the AirPlay support in 2.1.x still seems to be completely broken. Even in the nightly builds. So if you intend to use AirVLC to watch your movies on your Mac and play the audio in sync over AirPlay, stick to VLC 2.0.9 or downgrade if you’ve updated already.

Glow for updates

October 2013

Everybody knows software updates. A window pops up to notify you an update is available, you accept and a few seconds later you have new features (and less bugs, hopefully).

Automatic software updates are great and generally make everybody’s lives better. As a developer I can be sure most of my customers are using the latest version. As a user you press a single button to update, instead of going to the website, downloading a new package and overwriting the previous version.

All Danger Cove apps (except the ones on the App Store) use Sparkle for automatic updates. Sparkle checks a feed every day and lets you know when a new version is available. Getting that feed online is what I want to talk about today.

Previously I manually edited these feeds and manually wrote the release notes in a text editor. Knowing that I have to look up version numbers, file sizes and sign the update (for security, nobody should be able to release an update in my name). This can take some time.

That’s why I’ve made Glow and if you’re a software developer, it might come in handy for you as well. That’s why I’ve released it on GitHub. Here’s my description of it.

Glow is a tool that generates Sparkle-compatible Appcast update feeds and html release notes for your Mac projects. It’s not a full blown, database driven, multiple project supporting, update releasing laser canon. Rather it’s a clean, easy to use script that will automate 90% of releasing updates to your users.

The GitHub page contains a very detailed walkthrough on how to get started.

Automating the process of creating these updates leaves more time to work on fixing bugs and adding cool new features. Also, I might have some more time to style those release notes :).

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.

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.

Reign v1.0.3

January 2013

Reign v1.0.3

We’ve released Reign version v1.0.3. You can now use the remote to search for songs (contributed by @daentech)!

Want to make Reign more awesome like Dean did? Fork the repo on Github.