Brent’s Post About Social Anxiety

Brent wrote a post that pretty much describes how I’ve felt my whole life. This part grabbed me:

I hated school even through my couple years in college. And here’s what that kindergartener’s fear turned into: the conviction that most people are likable, but that somehow I’m marked, and people can tell instantly, just by looking, that I’m not likable.

This feeling of being marked, of being obviously unlikable in some fundamental and obvious-to-everyone way, persisted into my early 20s.

The difference for me is that this feeling has continued to persist (I’m 30). There’s a few assumptions I’ve held onto for long enough that I don’t even have to think about them consciously:

  • None of my friends like me as much as I like them.
  • Others have a strong sense there’s something wrong with me.
  • If I ever really needed help, I’d be on my own because no one else deep down really cares what happens to me.

If someone as instantly likable and personable as Brent could have some of those same feelings, then maybe I’m not really all that bad either? I can’t believe I’m actually sharing this with other people.

Overcast 2

Overcast 2 by Marco Arment is now available on the App Store. I’m sure I use Overcast more than any other app on my iPhone, and I think people are going to really dig the new streaming feature. Since I think I’m one of the people for whom streaming isn’t really a big deal, my favorite feature is the ability to support Overcast by actively (and optionally) patronizing the app. None of the features are locked behind a paywall anymore, if you like the app, give what you think it’s worth. I’ve already done it.

Marco explains why he went this way on his blog:

80% of my customers were using an inferior app. The limited, locked version of Overcast without the purchase sure wasn’t the version I used, it wasn’t a great experience, and it wasn’t my best work.

With Overcast 2.0, I’ve changed that by unlocking everything, for everyone, for free. I’d rather have you using Overcast for free than not using it at all, and I want everyone to be using the good version of Overcast.

Auto-Incrementing Build Number Script

I got this from somewhere I can’t remember. I’ve been using it a while and it works very well. I have it setup so that it will happen whenever I archive a new build for beta or release. You’ll want to change those configuration names to whatever your configuration names are in your project.

Add a “run script” phase to your targets build phases with this script and put it just below “Link Binary With Libraries”.

Functions as Factories

Cocoa at Tumblr:

Factories are a fairly well understood design pattern in software development. The benefits of using factories include:

  1. Abstracting constructors away from clients.
  2. Encapsulating data that clients do not need to know about.
  3. Allowing for more testable code by enforcing the idea of passing objects into initializers instead of referencing singletons directly.

This post will show the power of a few Swift features as well as of first­-class functions.

Dynamically Sized Table View Header or Footer Using Auto Layout

I’m trying to support Dynamic Type everywhere I can in my new app. Auto Layout and self sizing table view cells (buggy as they are) makes that a lot easier for the most part. Still, there’s other places that just setting up constraints and changing the font size of a label isn’t enough. The one I’ve just dealt with is a table view header (UITableView().tableHeaderView) with text in it. If I do nothing but set up my constraints and set the header view, the font size changing will just cause extra space to appear or my text to get cut off.

The solution was to override UIViewController().viewDidLayoutSubviews(), get the proper size of the header view based on it’s constraints, set the frame on the header, and reset it as the table header view.

It took me a little while to figure this out, so here’s what I did:

You Can Do This In Swift

This isn’t a hidden feature or anything — it’s just how optional binding works — but I guess what I didn’t get before was that this (responseObject’s type is AnyObject):

Could become:

So much better. So much code to delete now. Put this under the category of “things I can’t believe I didn’t get until now.”

The Growing iOS SDK

David Smith writes about how much the iOS SDK has grown over time. One thing that was interesting is that more “SDK elements” were added in iOS 8 than iPhone OS 2 (which is crazy).

The last paragraph echoes something I’ve felt for a while:

There was a time when I felt like I knew my way around pretty much every non-game SDK available on iOS. Now I often find myself stumbling across frameworks that are completely foreign to me, which is both kind of exciting but also extremely daunting.

I suppose that’s normal. I can’t tell you how often I find out about a “new” API only to realize it’s been around since iOS 5.

NetNewsWire 4

The best is back! The folks at Black Pixel have shipped NetNewsWire 4 for Mac and iOS. I’ve already bought it from the App Store and it looks great.

Congratulations to all of my friends at Black Pixel for getting this out the door. It’s been a long road, and I’m glad to see their work paying off.