Skip to content

Instantly share code, notes, and snippets.

//: Playground - noun: a place where people can play
import Cocoa
// I’m trying to figure out how to add a Notification observer in Swift code where the notification name is defined in a .m file.
//
// This playground won’t actually run, because it assumes an NSString named SomeNotification defined in a .m file. So it can’t actually be used to see the errors. It’s just for illustration.
// The errors are listed in the comments.
class MyClass {
@ricardopereira
ricardopereira / Fastfile-example
Last active March 29, 2020 09:00
Automate some iOS development processes with Fastlane
fastlane_version "1.99.0"
REQUIRED_XCODE_VERSION = "7.3.1"
default_platform :ios
platform :ios do
before_all do |lane, options|
ENV["SLACK_URL"] = "https://hooks.slack.com/services/???"
end
@kean
kean / Promise.swift
Last active February 15, 2019 05:15
Micro Promise under 100 sloc in Swift
// The MIT License (MIT)
//
// Copyright (c) 2016 Alexander Grebenyuk (github.com/kean).
import Foundation
public class Promise<T> {
private var state: State<T> = .pending(Handlers<T>())
private var queue = DispatchQueue(label: "com.github.kean.Promise")
@imax
imax / cheatsheet.markdown
Last active July 25, 2022 11:36
Relocation cheatsheet

Compare cost of living in different locations around the world.

Country (city) Salary (gross) Taxes Apartment Visa More info
Germany (Berlin) €50-60k 27-33% €700-1200/mo Blue Card, 1-3 months, spouse can work de_faq на русском Numbeo
Estonia (Tallinn) €35-45k 41.5% €600-1200/mo 2 months, spouse can work Taxes
xxx

Legend:

@andymatuschak
andymatuschak / States-v3.md
Last active April 14, 2025 22:47
A composable pattern for pure state machines with effects (draft v3)

A composable pattern for pure state machines with effects

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,

@PaulTaykalo
PaulTaykalo / binding.swift
Created July 25, 2016 16:31
Example selector/method binding
public func <~ <Destination, Source: SignalProducerType where Source.Value == Destination>(destinationSelector: (Destination) -> (), sourceProducer: Source) -> Disposable {
return sourceProducer.startWithNext(destinationSelector)
}
// Without binding...
viewModel.deliveryTime.producer
.map { ($0, UIControlState.Normal) }
.takeUntil(rac_willDeallocSignalProducer())
.startWithNext(deliveryTimeButton.setTitle)
// @discardableResult to be added
// @noescape needs to move to type annotation
// needs to add _ for item
public func with<T>(item: T, @noescape update: (inout T) throws -> Void) rethrows -> T {
var this = item; try update(&this); return this
}
//
// AppDelegateHandler.swift
// Pods
//
// Created by Andrey Zarembo on 10.02.16.
//
//
import Foundation
@import UIKit;
NS_ASSUME_NONNULL_BEGIN
@protocol MFBPreviewableCollectionView
- (nullable NSIndexPath *)mfb_previewableCollectionIndexPathForItemAtPoint:(CGPoint)point;
- (CGRect)mfb_previewableCollectionItemRectForIndexPath:(NSIndexPath *)indexPath;
import Cocoa
import MASShortcut
func pow() {
let rect = NSScreen.mainScreen()?.frame
let window = NSWindow(contentRect: rect!, styleMask: NSBorderlessWindowMask, backing: .Buffered, `defer`: false)
window.backgroundColor = NSColor.clearColor()
window.opaque = false
window.alphaValue = 1
window.makeKeyAndOrderFront(NSApplication.sharedApplication())