Skip to content

Instantly share code, notes, and snippets.

@ole
ole / keybase.md
Created April 10, 2014 08:53
keybase.md

Keybase proof

I hereby claim:

  • I am ole on github.
  • I am olebegemann (https://keybase.io/olebegemann) on keybase.
  • I have a public key whose fingerprint is 8110 7FC7 27F7 56F5 3693 BA7A 90C7 D328 64A1 CEDF

To claim this, I am signing this object:

@ole
ole / RSSReaderExample.swift
Last active August 29, 2015 14:25
Equatable protocols in Swift. A reply to Brent Simmons’s post "Secret Projects Diary #2: Swift 2.0 Protocols" (http://inessential.com/2015/07/19/secret_projects_diary_2_swift_2_0_prot).
//: Playground - noun: a place where people can play
import Cocoa
protocol Feed : Equatable {
var url: String {get}
}
protocol Folder {
// This is new:
@ole
ole / NSArray+BinarySearch.h
Created April 20, 2010 12:41
A binary search algorithm written in Objective-C/Cocoa for http://reprog.wordpress.com/2010/04/19/are-you-one-of-the-10-percent/
//
// NSArray+BinarySearch.h
// BinarySearch
//
// Created by Ole Begemann on 19.04.10.
// Copyright 2010 Ole Begemann. All rights reserved.
//
#import <Foundation/Foundation.h>
@ole
ole / CDStructures.h
Created October 1, 2012 17:48
MailCompositionService.app class dump from the iOS 6.0 Simulator
/*
* Generated by class-dump 3.3.4 (64 bit).
*
* class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2011 by Steve Nygard.
*/
#pragma mark Named Structures
struct CGPoint {
float _field1;
@ole
ole / FunctionalBankAccount.m
Created February 11, 2013 15:20
FunctionalBankAccount: a simple implementation of a blocks-based object model in (Objective-)C, inspired by a similar Scheme implementation in "Structure and Interpretation of Computer Programs". See http://oleb.net/blog/2013/02/building-blocks-based-object-system-in-objective-c/ for an explanation.
#import <Foundation/Foundation.h>
typedef id(^BankAccount)(char *cmd);
typedef id(^CurrentBalanceMethod)(void);
typedef id(^DepositMethod)(double);
typedef id(^WithdrawMethod)(double);
BankAccount CreateBankAccount(double initialBalance)
{
// Initialization
@ole
ole / osm_cycle_routes.xml
Created April 22, 2013 13:42
A query script for the Open Street Map API explorer at http://overpass-turbo.eu/ to render all the cycle routes in the current map bounding box.
<query type="relation" into="hr">
<has-kv k="route" v="bicycle"/>
<bbox-query {{bbox}}/>
</query>
<query type="way" into="hrp">
<recurse from="hr" type="relation-way"/>
<bbox-query {{bbox}}/>
</query>
<union>
<item set="hr"/>
@ole
ole / stack.swift
Created September 8, 2016 13:12
Compiler segmentation fault in Xcode 8 GM using ExpressibleByArrayLiteral
// Save this to stack.swift, then run
//
// $ xcrun swift stack.swift
//
// Does it compile or does the compiler segfault?
struct Stack<Element> {
var elements: [Element] = []
}
@ole
ole / FontsPlayground.swift
Last active October 7, 2016 14:45
Fonts with monospaced (tabular) digits
// Adopted from: http://stackoverflow.com/a/19976535/116862 by http://stackoverflow.com/users/2547229/benjohn.
import PlaygroundSupport
import UIKit
let baseFont = UIFont.preferredFont(forTextStyle: .body)
let baseDescriptor = baseFont.fontDescriptor
let proportionalFeatures = [
[
@ole
ole / NextDate.swift
Last active December 12, 2016 12:32
Paste into a playground in Xcode 8.
// macOS 10.12.1 or iOS 10, Swift 3.0.1
import Foundation
var calendar = Calendar(identifier: .gregorian)
// GMT+1 (GMT+2 under daylight saving)
calendar.timeZone = TimeZone(identifier: "Europe/Berlin")!
// 2016-10-30 02:30:00 +02:00
// Europe/Berlin switched from daylight saving to winter time on this date, i.e. on 2016-10-30 03:00:00 +02:00 the clock was moved back by one hour.
@ole
ole / SortedArray.swift
Created January 23, 2017 18:22
An array that keeps its elements sorted at all times.
/// An array that keeps its elements sorted at all times.
public struct SortedArray<Element> {
// Not sure if it's a good idea to use `ArraySlice` as the backing store. It lets me make SortedArray.SubSequence == SortedArray, but the price you pay for that is that one small slice, if stored permanently and not just locally inside a function, can easily retain a much larger collection, and this is hard to notice by the developer.
fileprivate var _elements: ArraySlice<Element>
public typealias Comparator<A> = (A, A) -> Bool
/// The predicate that determines the array's sort order.
fileprivate let areInIncreasingOrder: Comparator<Element>