Skip to content

Instantly share code, notes, and snippets.

View tkersey's full-sized avatar
:octocat:

Tim Kersey tkersey

:octocat:
View GitHub Profile
@tkersey
tkersey / combinators.js
Created May 7, 2018 21:19 — forked from Avaq/combinators.js
Common combinators in JavaScript
const I = x => x;
const K = x => y => x;
const A = f => x => f(x);
const T = x => f => f(x);
const W = f => x => f(x)(x);
const C = f => y => x => f(x)(y);
const B = f => g => x => f(g(x));
const S = f => g => x => f(x)(g(x));
const P = f => g => x => y => f(g(x))(g(y));
const Y = f => (g => g(g))(g => f(x => g(g)(x)));
@tkersey
tkersey / xcbuild-debugging-tricks.md
Created February 3, 2018 23:10 — forked from ddunbar/xcbuild-debugging-tricks.md
Xcode new build system debugging tricks

New Build System Tricks

Command Line

# enable internal menu
defaults write com.apple.dt.Xcode ShowDVTDebugMenu -bool YES

alias xcbuild=$(xcode-select -p)/../SharedFrameworks/XCBuild.framework/Versions/A/Support/xcbuild
@tkersey
tkersey / XcodeBuildSettingsReference.md
Created February 3, 2018 23:09 — forked from NSExceptional/XcodeBuildSettingsReference.md
The Xcode Build Settings Reference in a searchable document, as of Xcode 8.3.2

Build settings reference

Active Build Action (ACTION)

A string identifying the build system action being performed.

Additional SDKs (ADDITIONAL_SDKS)

The locations of any sparse SDKs that should be layered on top of the one specified by Base SDK (SDKROOT). If more than one SDK is listed, the first one has highest precedence. Every SDK specified in this setting should be a "sparse" SDK, for example, not an SDK for an entire macOS release.

Alternate Install Group (ALTERNATE_GROUP)

@tkersey
tkersey / HKT.swift
Created December 2, 2017 22:20 — forked from anandabits/HKT.swift
Emulating HKT in Swift
// This example shows how higher-kinded types can be emulated in Swift today.
// It acheives correct typing at the cost of some boilerplate, manual lifting and an existential representation.
// The technique below was directly inspired by the paper Lightweight Higher-Kinded Polymorphism
// by Jeremy Yallop and Leo White found at http://ocamllabs.io/higher/lightweight-higher-kinded-polymorphism.pdf
/// `ConstructorTag` represents a type constructor.
/// `Argument` represents an argument to the type constructor.
struct Apply<ConstructorTag, Argument> {
/// An existential containing a value of `Constructor<Argument>`
/// Where `Constructor` is the type constructor represented by `ConstructorTag`
@tkersey
tkersey / AnimationsAsSemiring.swift
Created November 15, 2017 19:05 — forked from elm4ward/AnimationsAsSemiring.swift
Animations As Semiring
import Foundation
import UIKit
import PlaygroundSupport
// --------------------------------------------------------------------------------
// MARK: - operators
// --------------------------------------------------------------------------------
precedencegroup MonoidComposePrecedence {
associativity: left higherThan: AssignmentPrecedence lowerThan: AdditionPrecedence
Verifying my Blockstack ID is secured with the address 1Pgb6MVcG9qhJ6Tnu86FPs5MtY1znYC3wP https://explorer.blockstack.org/address/1Pgb6MVcG9qhJ6Tnu86FPs5MtY1znYC3wP
@tkersey
tkersey / .2025.md
Last active July 7, 2025 16:46
For future reference but maybe not.

Quick access

2025

July

  • See something, tap something

    ICEBlock is an innovative, completely anonymous crowdsourced platform that allows users to report Immigration and Customs Enforcement (ICE) activity with just two taps on their phone. In recent years, ICE has faced criticism for alleged civil rights abuses and failures to adhere to constitutional principles and due process, making it crucial for communities to stay informed about its operations.

> Modeled after Waze but for ICE sightings, the app ensures user privacy by storing no personal data, making it impossible to trace reports back to individual users. Available exclusively for iOS devices, ICEBlock empowers communities to stay informed about ICE presence within a 5-mile radius while maintaining their anonymity through real-time updates and automatic deletion of sightings after four hours.

@tkersey
tkersey / UIView.swift
Created November 16, 2015 01:12
Calculate preferred height of UIView
extension UIView {
func calculatePreferredHeight(preferredWidth: CGFloat? = nil) -> CGFloat {
let width = preferredWidth ?? frame.width
let widthConstraint = NSLayoutConstraint.constraintsWithVisualFormat("H:[view(==\(width)@999)]", options: .allZeros, metrics: nil, views: ["view": self])
addConstraints(contraint)
let height = systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
removeConstraints(constraint)
return height
}
}
"fundamental constants of human-computer interaction", which can be split into the human and computer halves.
Very roughly:
~16 ms – frame budget for interactive animation
100 ms – user action feels instantaneous
200 ms – typical human reaction time
500+ ms – perceptible delay
3+ seconds – perceived sluggishness
10+ seconds – attention span is broken
Verifying myself: My Bitcoin username is +tk. https://onename.io/tk