Skip to content

Instantly share code, notes, and snippets.

View tjw's full-sized avatar

Timothy J. Wood tjw

View GitHub Profile
@tjw
tjw / OmniOutliner Transcribe WWDC Notes.applescript
Last active June 8, 2021 20:16
Transscribe WWDC video notes into OmniOutliner
(*
With a QuickTime file open QuickTime Player, and an OmniOutliner file open that matches the title below, if this is invoked:
- If the QT file is playing, it is paused and the current playback speed is recorded (use option-click on the fast forward button to increase playing speed in QuickTime Player)
- If there is not a row starting with the right session number, one is created at the top level (with a link back to the QT file)
- A new row is added with the current time code and the insertion point to the right of it and OmniOutliner is activated.
- Otherwise, playing in the QT file is resumed a couple seconds before the point at which it was paused, with the playback rate restored, and QT is activated
- Setup:
@tjw
tjw / OmniOutliner Transcribe WWDC Notes.applescript
Created June 6, 2019 16:57
OmniOutliner Transcribe WWDC Notes
(*
With a QuickTime file open QuickTime Player, and an OmniOutliner file open that matches the title below, if this is invoked:
- If the QT file is playing, it is paused and the current playback speed is recorded (use option-click on the fast forward button to increase playing speed in QuickTime Player)
- If there is not a row starting with the right session number, one is created at the top level (with a link back to the QT file)
- A new row is added with the current time code and the insertion point to the right of it and OmniOutliner is activated.
- Otherwise, playing in the QT file is resumed a couple seconds before the point at which it was paused, with the playback rate restored, and QT is activated
- Setup:
@tjw
tjw / DispatchWriteSource.m
Created March 28, 2018 22:23
A dispatch write source that is connected to a UNIX domain socket with a full write buffer will fire forever, instead of waiting to fire until there is room in the buffer to write more data.
//
// main.m
// DispatchWriteSource
//
// Created by Timothy J. Wood on 3/27/18.
// Copyright © 2018 The Omni Group. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <unistd.h>
@tjw
tjw / SetPrototype.swift
Created February 14, 2018 23:40
Regression in JSObjectSetPrototype for the global object in a context.
/*
swift SetPrototype.swift
On 10.13.4, the result is 'undefined', but it should be '5'.
*/
import Foundation
import JavaScriptCore
var definition:JSClassDefinition = kJSClassDefinitionEmpty
@tjw
tjw / .swift-build-presets
Last active October 16, 2017 19:34
iOS swift preset file
# Trying to get the fastest incremental build times for small changes to the swift compiler.
# This still rebuilds the stdlib on each change to the compiler (no --skip option I see to avoid that).
[preset: ios]
release
debug-swift
ios
skip-build-ios-simulator
skip-test-ios-simulator
skip-build-osx
skip-test-osx
@tjw
tjw / steps.txt
Created October 15, 2017 18:19
Building swift for iOS?
% ./utils/build-script --release-debuginfo --debug-swift
#### hours pass ####
% ../build/Ninja-RelWithDebInfoAssert+swift-DebugAssert/swift-macosx-x86_64/bin/swift -sdk /Applications/Xcode-9.1b2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -target arm64-apple-ios11.1 /Users/bungi/Desktop/TransitiveAppExtensionAvailable/Example.swift
<unknown>:0: error: unable to load standard library for target 'arm64-apple-ios11.1'
import Foundation
let u = URL(fileURLWithPath: "/tmp/missing-path", isDirectory: true)
let d = FileManager.default.enumerator(at:u, includingPropertiesForKeys: nil, errorHandler: {_,_ in return false})!
print("d \(d)") // --> d <NSURLDirectoryEnumerator: 0x100a01940>
// Crashes, unless the error handler above is replaced with nil
for _ in d {}
import Foundation
/*
xcrun swift objc-throwing-block.swift
objc-throwing-block.swift:20:13: error: method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C
@objc func access(accessor: Accessor) {}
^
objc-throwing-block.swift:20:30: note: throwing function types cannot be represented in Objective-C
@tjw
tjw / Swift on Pi 3.md
Created August 23, 2016 08:32
Swift on Pi 3
@tjw
tjw / Radar-27365520.swift
Created July 15, 2016 04:04
Radar 27365520
import JavaScriptCore
let ctx = JSGlobalContextCreate(nil)
let trueValue = JSValueMakeBoolean(ctx, true)
// This returns false in both Xcode 7.3.1 and 8.0 b2.
JSValueIsObject(ctx, trueValue)
// This returns true in Xcode 7.3.1, and false in 8.0 b2.
JSValueIsBoolean(ctx, trueValue)