Skip to content

Instantly share code, notes, and snippets.

Neil Pankey neilpa

Block or report user

Report or block neilpa

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View ui.sh
#!/bin/bash
# Universal Install Script
# https://xkcd.com/1654/
pip install "$1" &
easy_install "$1" &
brew install "$1" &
npm install "$1" &
yum install "$1" &
View RACSignal+continueInBackground.m
- (RACSignal*) continueInBackground
{
return [[RACSignal createSignal:^(id<RACSubscriber> subscriber) {
UIApplication* app = UIApplication.sharedApplication;
__block UIBackgroundTaskIdentifier taskID;
RACCompoundDisposable* compoundDisposable = [RACCompoundDisposable compoundDisposable];
RACDisposable* backgroundTaskDisposable = [RACDisposable disposableWithBlock:^{
[app endBackgroundTask:taskID];
}];
@neilpa
neilpa / CollectionViewDataSource.swift
Created Oct 28, 2015 — forked from andymatuschak/CollectionViewDataSource.swift
Type-safe value-oriented collection view data source
View CollectionViewDataSource.swift
//
// CollectionViewDataSource.swift
// Khan Academy
//
// Created by Andy Matuschak on 10/14/14.
// Copyright (c) 2014 Khan Academy. All rights reserved.
//
import UIKit
@neilpa
neilpa / concatSplices.swift
Last active Oct 8, 2015
Building collections from signals[-of-signals] of collection mutations
View concatSplices.swift
//
// A half-baked approach (not thread-safe, poor disposable management) for creating
// aggregate collections from multiple signals of collection mutations. In this
// case we are concating multiple mutation streams into a single container. So for
// each inner signal we need to offset subsequent splices by the count of preceding
// items (which can be recovered by scanning previous splices).
//
// Example:
//
// let (first, sink1) = SignalProducer<Splice<Int>, NoError>.buffer()
View iterate.swift
// Similar to `enumerate` but provides the collection's index type
// rather than an Int for the position
public func iterate<C: CollectionType>(collection: C) -> SequenceOf<(C.Index, C.Generator.Element)> {
var index = collection.startIndex
// type-inference doesn't want to work without this
return SequenceOf { _ -> GeneratorOf<(C.Index, C.Generator.Element)> in
return GeneratorOf {
if index == collection.endIndex {
return nil
@neilpa
neilpa / Random.swift
Last active Aug 29, 2015
Randomness
View Random.swift
protocol Randomizable {
static func random() -> Self
}
protocol IntervalRandomizable: Randomizable, Comparable {
static func random(interval: HalfOpenInterval<Self>) -> Self
static func random(interval: ClosedInterval<Self>) -> Self
}
extension CGFloat: Randomizable {
@neilpa
neilpa / bootstrap.log
Created Feb 14, 2015
Build failure running `carthage bootstrap --platform Mac` on carthage itself
View bootstrap.log
Build settings from command line:
SDKROOT = macosx10.10
=== BUILD TARGET Argo-Mac OF PROJECT Argo WITH CONFIGURATION Release ===
Check dependencies
Write auxiliary files
/bin/mkdir -p /Users/neilpa/Library/Developer/Xcode/DerivedData/Argo-czmyyxcfvpfzykehbpwpttdwpnbh/Build/Intermediates/Argo.build/Release/Argo-Mac.build
write-file /Users/neilpa/Library/Developer/Xcode/DerivedData/Argo-czmyyxcfvpfzykehbpwpttdwpnbh/Build/Intermediates/Argo.build/Release/Argo-Mac.build/unextended-module-overlay.yaml
View zipWith.swift
private enum Either<T, U> {
case Left(Box<T>)
case Right(Box<U>)
}
public func zipWith<T, U, E>(otherSignal: Signal<U, E>)(signal: Signal<T, E>) -> Signal<(T, U), E> {
return Signal { observer in
var lock = NSRecursiveLock()
lock.name = "org.reactivecocoa.ReactiveCocoa.zipWith"
@neilpa
neilpa / translit.swift
Created Feb 5, 2015
Simple CLI around CFStringTransform for Unicode to ASCII transliteration
View translit.swift
#!/usr/bin/env swift
//
// Naive wrapper around CFStringTransform that attempts to transliterate
// Unicode strings to lower-case ASCII
//
// http://nshipster.com/cfstringtransform/
//
import Foundation
@neilpa
neilpa / nv21-convert.sh
Last active Apr 15, 2019
Use ffmpeg to convert raw Android camera frame buffers
View nv21-convert.sh
# Assuming the raw byte[] buffer from onPreviewFrame was written at $1
INPUT=$1
# Need preview size since we dumped to a raw file w/out header info
SIZE=1280x960
# Converting to JPEG
ffmpeg -f image2 -vcodec rawvideo -s $SIZE -pix_fmt nv21 -i $INPUT out.jpeg
# Converting to PNG
You can’t perform that action at this time.