Skip to content

Instantly share code, notes, and snippets.

View atomkirk's full-sized avatar

Adam Kirk atomkirk

View GitHub Profile
atomkirk /
Last active December 17, 2015 09:39
Download Heroku DB
  1. Use heroku pgbackups to get url of latest backup:

     heroku pgbackups:url
  2. Download the .dump file.

  3. Create a db to restore into:

     psql -c "create database firehose_live_backup"

(note: show current dbs with psql then \list)

atomkirk /
Created May 16, 2013 02:08
Duplicate a postgres DB

To create a copy of a database, first make sure the destination doesn't exist:

psql -c "DROP DATABASE firehose_development;"


psql -c "CREATE DATABASE firehose_development WITH TEMPLATE firehose_test;"

atomkirk /
Last active December 17, 2015 10:29
weak self

There really needs to be an easier way to do this built into the language, but until then, I use my handy CodeBox app to paste in this whenever I need a weak reference to self:

__weak typeof(self) celf = self;
[self block:^{ = bar;

It's a nifty trick, but Apple, please... I shouldn't have to declare a weak self, I should be able to use self with a predefined symbol for "self" that the compiler will then write the weak self declaration for me.

atomkirk /
Created May 24, 2013 22:41
NSMutableURLRequest timeout problem on lion

If you set the timeoutInterval value on NSMutableURLConnection to -1, on mountain lion, it'll never time out, on Lion, it'll time out immediately.

atomkirk /
Last active August 1, 2016 15:00
Remove a Git Submodule

How to completely remove a submodule:

  1. Run git rm -rf path/to/submodule (use --cached if it's already gone)
  2. Remove entry in .gitmodules
  3. Remove entry in .git/config
  4. Run rm -rf .git/modules/
atomkirk /
Created May 27, 2013 17:05
Submodule notes

To a parent project, a submodule is essentially a subdirectory in your project that is viewed by the parent repo as a simple text file with a name and a commit number. So, when you pull down a project that uses submodules:

git submodule add <path to repo>

It will add that sub directory and an entry to its .gitmodules file (with the name and commit number). So when you git add . and git commit -am 'message' in the parent repo, the only thing you are adding and committing is the current commit of the submodule.

The git submodule command is how to work beyond this narrow view of a text file with a commit message. As shown above, you would use git submodule add <path to repo> to ADD it, but all you're adding is the text file with a name and commit. To actually pull down the files, you would run:

git submodule update --init --recursive
atomkirk /
Created May 27, 2013 18:20
core graphics & application services

You can't mix CoreGraphics and ApplicationServices on mac. If you have two targets, and you want to use things like CGFloat, etc. link to CoreGraphics on iOS and ApplicationServices on OSX. On 10.8, it's fine, it'll work, but you're still suppose to use ApplicaitonServices. On 10.7, it'll build, launch and crash with an error about mismatched ApplicationServices versions because CoreGraphics is calling 10.8's ApplicationServices version. (or some such...)

atomkirk /
Created May 27, 2013 20:53
Cocoapod dependency trees

After wresting the traditional git submodule + static library dependency chain, it became a giant headache. I tried to get it all to work for a long time. You must:

  1. Create a workspace and drag your child projects in.
  2. Add their targets as binary linked libraries.
  3. Manually add header search paths.
  4. And all your dependency projects must be set up a certain way for this to work too. So that's a lot of work.

A much better way is to use submodules to include the child projects into the parent project and then use cocoapods to include those child projects (instead of linking them in statically and dealing with the millions of headaches that brings).

For example, I've added my dependency tree as a series of git submodules and then I have a Podfile that looks like this:

atomkirk /
Created May 29, 2013 01:44
Sparkle Mac Updater

I forgot that I had turned on this:


And so the Sparkle.framework for auto updating mac apps was offering to update, downloading, offering to install and relaunch and then would just quit and not update. It said finish_installation' failed: 22 which was because gatekeeper was keeping the app from updating itself.

Turned off entitlements and it works great.

atomkirk /
Created May 29, 2013 01:50
Custom Fonts on Mac

On iOS, to use custom fonts, you add them to your plist:


on Mac, you just add: