The best iPhone case I've ever owned

Thank you, Jerry

The Sheath, the case is a svelte .90mm thick, full coverage case. Caudabe calls the material ShockLite, a soft gel-like flexible polymer with shock protection.

The Caudabe Sheath, on my iPhone 7+, is the best case I've ever used.

I need a case. I drop my phone on a weekly basis and I'm nitpicky. Apple's silicon grips my pocket too much. The leather feels weird when I sweat running. Bumpers are too wide. Other 3rd party cases don't stay on as well

This case nails it all: It feels great in my hand and pocket, its super thin, and so far has survived drop "tests"

Check out Jerry's full review here

Adding Smart Speed to any audio file with Audacity

The Overcast podcast app by Marco Arment has a killer feature called Smart Speed and it has ruined all audio listening for me outside of the app. Smart Speed dynamically shortens silences in talk shows; it saves you time, and makes them feel tighter and more produced. I wish I had it everywhere.

Tekside is a podcast network I'm part of, and while some of our shows are heavily edited, many are not. While doing some audio work for something else, my wife noticed that Audacity (cross platform) has a crud version of this type of audio processing. Here's how to set it up.

Setup

  1. Download Audacity & install it. But don't run it yet. (If it opened as part of install, close it)
  2. If you are working with audio files already, head to "Making it work". If you are pulling in .mov files from Skype Call Recorder see step 3
  3. Install FFMPEG: If you are on a Mac, download and install this Otherwise, see these instructions

Making it work

  1. Open Audacity
  2. Click File -> Import Audio
  3. Choose your audio recording
  4. Optional: If Audacity prompts you to "Select Stream(s) to import", select all of them and hit OK
  5. Select one of the audio streams and hit CMD+A to highlight all of the audio
  6. Click Effect -> Truncate Silence
  7. I currently have duration set to 0.9 and truncate to set to 0.5. What this does is find any silence longer that 0.9 seconds and shorten it to 0.5 seconds
  8. Hit ok & let it run
  9. File -> Export (As a WAV. You may have to hit OK a few times)
  10. Done!

I'm still figuring out which duration will work best for which shows. It depends how fast the people on it already naturally talk and flow which each other. For Show and Tell, our movie podcast, the above settings strip a 55 min recording to 48 mins and it sounds a lot tighter.

Remembering All Those Helpful Stackoverflow Posts

How often has this happened to you?

2 years ago

  • You are spelunking on Google and StackOverflow (SO).
  • You find what you need.
  • You graciously upvote and/or leave a comment.
  • You update your code and leave a comment.
  • You move on

Now

  • You come across the same problem. You remember finding it before. But it's a different job or project. Spelunking begins!
  • You look through your bookmarks
  • You try to remember how you Googled for it the last time
  • You eventually find it after an hour
  • You move on
  • This possibly happens again in the future

Now in the perfect world, we're keeping a programming notebook or remembering to bookmark/tag/organize what we find. If you do, awesome, I wish I was you. For the rest of us mere mortals, read on.

I wanted something that would let me search my collection of SO things so I could find it later. Here's where I ended up: Every SO post I star being automatically bookmarked with full-text search

The Flow

  1. Use an instance of stack2rss to get an RSS feed of SO posts I've starred.
  2. Run a Zap that pulls these in and sends them to my bookmarks (tagged as 'stackoverflow')
  3. Search using Pinboard Premium which downloads the questions and archives them. (this is optional)

This has been working for me and I've already be able to re-find things that helped me before.

Setup

  1. Spin up an instance of stack2rss. There is a demo available, but I've found it tends to go down. I've submitted a PR so you can 1 click install to Heroku. Click this Deploy
  2. Get the url for your starred feeds: https://[YOUR-HEROKU-APP].herokuapp.com/2.2/users/[YOUR-SO-ID]/favorites?order=desc&sort=activity&site=stackoverflow
  3. Login or Register with Zapier
  4. Create a 2 step zap with the trigger being RSS by Zapier and Pinboard's create bookmark action
  5. Set each up as follows

This has already saved me a lot of time. If you'd like help setting up, leave me a comment below

Laravel 5.4 – Higher Order Messaging For Collections

Two words: HELL, YES

The best way of showcasing this new feature is through code samples. Pretend you have a collection and you want to perform an operation on each of the items:

$invoices->each(function($invoice) {
  $invoice->pay();
});

With this new feature you will be able to simplify this into:

$invoices->each->pay();

via Laravel News

Using an Encrypted Realm in a background or notification processes?

Note: This post's primary purpose is to help me think through this problem. I have no prescribed solution at the end of it. The conversation will continue on Stack Overflow. I will update this post once I have a final approach.

Realm has a great write up and sample code for encrypting your database. This documentation and sample work as intended, until you try to decrypt realm when:

  1. A user has a password on their phone
  2. The device is locked
  3. Your app is trying to do work with Realm when a remote notification comes in

This happens because we can't access the keychain to get (or create) the key to en/decrypt the Realm. The default kSecAttrAccessible value is kSecAttrAccessibleWhenUnlocked

There are a few options as I see them:

  1. Change kSecAttrAccessible to kSecAttrAccessibleAlways. I don't like this because it's a) too open and b) it was slated to be deprecated in iOS 9
  2. Change kSecAttrAccessible to kSecAttrAccessibleAfterFirstUnlock or kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. This is better but still feels too open to me, even though the docs state: This is recommended for items that need to be accessed by background applications
  3. Create a second, non-encrypted Realm to use as a staging database. Store notification data here, then when the app wakes up from user interaction (the device would be unlocked), move the data from the staging Realm into the encrypted real one. This doesn't feel right either, as we'll have data temporarily not encrypted
  4. Combine 2 and 3 and encrypt the staging Realm, and protect it's key with kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
  5. ??

I'm currently trying to decide if #2, if #3 is worth putting the time into, or if I can come up with a #5

Using iOS 10 devices with Xcode 7

Peter Steinberger started a GREAT gist on Using Xcode 7.3.1 and iOS 10 devices.

Below is what worked for me to get a few extra test devices (my carry phone runs the 10 beta) working with Xcode 7. Can't upgrade to 8 just yet. Working with a contractor and don't want to move too many pieces.

My Setup

Xcode 7.3.1 and Beta 6 iOS 10 beta 6 (Beta 7 is out, after getting this to work, I don't think I'm upgrading just yet)

Steps

  1. sudo ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0\ \(14A5339a\)/ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
  2. iPhone: Settings > General > Reset > Network Settings
  3. Reboot iPhone (after it wakes back up from the network reset)
  4. Reboot Mac (restarting Xcode alone didn't work)

It these steps don't work for you, check out the gist for other options.