Skip to content

Instantly share code, notes, and snippets.


Andrew Madsen armadsen

View GitHub Profile
armadsen / 2019_apps_using_swift.csv
Created Feb 17, 2019
Data generated by analysis of the top 110 iOS apps as of January 15, 2019
View 2019_apps_using_swift.csv
app_name bundle_id sdk deployment_target uses_swift percentage_swift main_binary_uses_swift is_game executable
30 Day Fitness com.vigorapps.30DayFitness iphoneos12.0 10 TRUE 31% TRUE FALSE ThirtyDaysFitness
8 Ball Pool com.miniclip.8ballpoolmult iphoneos11.3 8 FALSE 0% FALSE TRUE pool
Amazon iphoneos11.4 9 FALSE 0% FALSE FALSE Amazon
Amazon Alexa iphoneos11.2 10 TRUE 28% TRUE FALSE AlexaMobileiOS-prod
Astro Palmistry & Horoscope com.gfb.horoscope iphoneos12.1 8 FALSE 0% FALSE FALSE horoscope
Ball Blast com.nomonkeys.ball-blast iphoneos12.1 9 FALSE 0% FALSE TRUE ball-blast
BetterMen com.betterme.bettermen iphoneos12.0 10 TRUE 74% TRUE FALSE BetterMen
BitLife com.wtfapps.apollo16 iphoneos12.1 8 FALSE 0% FALSE TRUE Apollo16
Bitmoji com.bitstrips.imoji iphoneos11.4 10 TRUE 20% TRUE FALSE imoji
armadsen /
Created Feb 15, 2019
Script to analyze Swift usage in iOS or Mac apps
from pathlib import Path
import plistlib
import subprocess
import re
import csv
def app_uses_swift(path):
libswiftPath = path / 'Frameworks' / 'libswiftCore.dylib'
return libswiftPath.exists()
armadsen / MIKMIDISynthesizer+Volume.swift
Created May 12, 2018
Extension to add a volume property to MIKMIDISynthesizer on iOS
View MIKMIDISynthesizer+Volume.swift
// MIKMIDISynthesizer+Volume.swift
// Created by Andrew Madsen on 3/22/16.
// Copyright © 2016 Mixed In Key. All rights reserved.
import Foundation
import CoreAudio
import MIKMIDI
View MIDIPacketNextTest.m
/* Compile this with:
clang -std=c99 -framework CoreMIDI -fed MIDIPacketNextTest.m
armadsen /
Created Jul 19, 2017
Quick and dirty bash script to recursively commit submodules
if [[ "$#" -ne 1 ]]; then
echo "You must specify a commit message as an argument."
exit 1
git submodule foreach "echo 'Adding all files.'; git add ."
git submodule foreach "echo 'Stashing.'; git stash"
git submodule foreach "echo 'Checking out master branch.'; git checkout master"
git submodule foreach "echo 'Applying stash.'; git stash apply"
View brewconfig.txt
$ brew --config
ORIGIN: (none)
HEAD: (none)
Last commit: never
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: single-core 32-bit g4e
armadsen /
Created Jul 5, 2016
Simple script for creating a zip and DMG, uploading to S3, and posting a new build to an Appcaster instance.
# Aether
# Created by Andrew Madsen on 11/7/15.
# Copyright © 2015 Open Reel Software. All rights reserved.
armadsen / MIKMIDISequence+BarBeatTime.m
Created Jul 1, 2016
Quick (untested) example of getting bar-beat time for a particular timestamp in an MIKMIDISequence.
View MIKMIDISequence+BarBeatTime.m
@interface MIKMIDISequence (BarBeatTime)
- (CABarBeatTime)barBeatTimeForTimeStamp:(MusicTimeStamp)timeStamp error:(NSError **)error;
@implementation MIKMIDISequence (BarBeatTime)
- (CABarBeatTime)barBeatTimeForTimeStamp:(MusicTimeStamp)timeStamp error:(NSError **)error
error = error ?: &(NSError *__autoreleasing){ nil };
UInt32 timeResolution = 0;
armadsen / deletescreen.rb
Last active Jan 28, 2016
Ruby script using spaceship to delete all existing screenshots for an iOS app on iTunes Connect
View deletescreen.rb
#!/usr/bin/env ruby
require "spaceship"
Spaceship.login('yourusername', 'yourpassword')
Spaceship::Tunes.login('yourusername', 'yourpassword')
du = Spaceship::Tunes.client.du_client
app = Spaceship::Tunes::Application.find ""
armadsen / KVODependentToManyBug.m
Created Nov 5, 2015
Example program attached to Radar #
View KVODependentToManyBug.m
#import <Foundation/Foundation.h>
@interface Foo : NSObject
@property (nonatomic, strong) NSArray *bars;
- (void)addBar:(NSString *)bar;
- (void)removeBar:(NSString *)bar;