alias xcbuild=$(xcode-select -p)/../SharedFrameworks/XCBuild.framework/Versions/A/Support/xcbuild
# THIS DOESNT WORK YET: xcbuild openIDEConsole # … then switch to Xcode ➡️
xcbuild showSpecs
xcbuild build <foo.pif> [—target <target>]
import Foundation | |
@dynamicMemberLookup | |
enum JSON: Codable, CustomStringConvertible { | |
var description: String { | |
switch self { | |
case .string(let string): return "\"\(string)\"" | |
case .number(let double): | |
if let int = Int(exactly: double) { | |
return "\(int)" |
// Created by Caleb Davenport on 7/14/17. | |
import UIKit | |
final class ActionSheetPresentationController: UIPresentationController { | |
// MARK: - Properties | |
private var dimmingView: UIView! |
import Foundation | |
// A lens is a getter and a setter combined | |
struct Lens<Whole, Part> { | |
let get: (Whole) -> Part | |
let set: (inout Whole, Part) -> () | |
} | |
// We can create a lens from a key path | |
extension Lens { |
import Foundation | |
struct HashingSingleValueEncodingContainer : SingleValueEncodingContainer { | |
var owner: HashingEncoder | |
mutating func combineHash<T>(of element: T?) where T: Hashable { | |
if let elt = element { | |
owner.combine(elt, hash: elt.hashValue) { (other: Any) -> Bool in | |
if let otherValue = other as? T { | |
return elt == otherValue |
man() { | |
env \ | |
LESS_TERMCAP_md=$'\e[1;36m' \ | |
LESS_TERMCAP_me=$'\e[0m' \ | |
LESS_TERMCAP_se=$'\e[0m' \ | |
LESS_TERMCAP_so=$'\e[1;40;92m' \ | |
LESS_TERMCAP_ue=$'\e[0m' \ | |
LESS_TERMCAP_us=$'\e[1;32m' \ | |
man "$@" | |
} |
State machines are everywhere in interactive systems, but they're rarely defined clearly and explicitly. Given some big blob of code including implicit state machines, which transitions are possible and under what conditions? What effects take place on what transitions?
There are existing design patterns for state machines, but all the patterns I've seen complect side effects with the structure of the state machine itself. Instances of these patterns are difficult to test without mocking, and they end up with more dependencies. Worse, the classic patterns compose poorly: hierarchical state machines are typically not straightforward extensions. The functional programming world has solutions, but they don't transpose neatly enough to be broadly usable in mainstream languages.
Here I present a composable pattern for pure state machiness with effects,
#!/bin/sh | |
defaults read com.apple.finder CreateDesktop > /dev/null 2>&1 | |
enabled=$? | |
if [ "$1" = "off" ]; then | |
if [ $enabled -eq 1 ]; then | |
defaults write com.apple.finder CreateDesktop false | |
osascript -e 'tell application "Finder" to quit' | |
open -a Finder |
This is what Craft does:
function loadFramework(pluginRoot) {
if (NSClassFromString('PanelsManager') == null) {
var mocha = [Mocha sharedRuntime];
return [mocha loadFrameworkWithName:'Panels' inDirectory:pluginRoot];
} else {
return true;
}
import Cocoa | |
class MyAppDelegate: NSObject, NSApplicationDelegate { | |
let window = NSWindow() | |
var didFinishLaunching: NSWindow -> () = { _ in () } | |
func applicationDidFinishLaunching(aNotification: NSNotification) { | |
didFinishLaunching(window) | |
} | |
} |