Skip to content

Instantly share code, notes, and snippets.

View nickmain's full-sized avatar

Nick Main nickmain

View GitHub Profile
@nickmain
nickmain / Subscriptions-iCloud.opml
Created November 10, 2023 00:41
NetNewsWire Subscriptions
<?xml version="1.0" encoding="UTF-8"?>
<!-- OPML generated by NetNewsWire -->
<opml version="1.1">
<head>
<title>Subscriptions-iCloud.opml</title>
</head>
<body>
<outline text="Reddit" title="Reddit">
<outline text="Forth - The programming language for low-fat computing." title="Forth - The programming language for low-fat computing." description="" type="rss" version="RSS" htmlUrl="https://www.reddit.com/r/Forth/" xmlUrl="http://www.reddit.com/r/Forth/.rss"/>
<outline text="Programming in Logic :- Prolog" title="Programming in Logic :- Prolog" description="" type="rss" version="RSS" htmlUrl="https://www.reddit.com/r/prolog/" xmlUrl="http://www.reddit.com/r/prolog/.rss"/>
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
Process: Python [16800]
Path: /Library/Frameworks/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python
Identifier: org.python.python
Version: 3.10.2 (3.10.2)
Code Type: X86-64 (Native)
Parent Process: zsh [3556]
@nickmain
nickmain / tryToSendFocus.swift
Created January 11, 2022 00:29
Forced focus targetting
// Focus management
private var targetFocusEnv: UIFocusEnvironment?
override var preferredFocusEnvironments: [UIFocusEnvironment] {
if let target = targetFocusEnv {
return [target]
} else {
return []
}
}

1. Clone your fork:

git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git

2. Add remote from original repository in your forked repository:

cd into/cloned/fork-repo
git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
git fetch upstream
@nickmain
nickmain / MiniHTTPServer.swift
Created April 11, 2016 03:28
Minimal Swift HTTP server for unit testing
//: Playground - noun: a place where people can play
import Foundation
class ServerSocket {
private var sockAddrLen = socklen_t(sizeof(sockaddr_in))
private var serverSocket = socket(AF_INET, SOCK_STREAM, 0)
init?(_ port: UInt16) {
var option: UInt32 = 1

OS X Screencast to animated GIF

This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.

Screencapture GIF

Instructions

To capture the video (filesize: 19MB), using the free "QuickTime Player" application:

#lang racket
(define (run-length n)
(let ([run-char #f]
[run-len 0])
(λ(c)
(if (equal? c run-char)
(set! run-len (+ run-len 1))
(begin (set! run-len 1)
(set! run-char c)))
@nickmain
nickmain / Testing optionals
Created June 14, 2014 22:36
Using pattern matching on tuples of Optionals
// Playground - noun: a place where people can play
import Cocoa
func checkOptionals(a:Dictionary<String,Int>,key1:String,key2:String) {
switch (a[key1],a[key2]) {
case (.Some(_),.Some(_)): println("both")
case (.Some(let a),.None): println("first " + String(a))
case (.None,.Some(let b)): println("second " + String(b))
default: println("neither")
@nickmain
nickmain / gist:7269478
Created November 1, 2013 18:14
How can a meaningful unit test be written for this CLIPS rule ? The rule is declarative - it states the preconditions that must exist and is explicit about what the post-conditions are (the asserted facts). How can a unit test add value to this and not be merely a test that CLIPS itself actually works ?
(defrule make-group
(make-graphic ?sheet ?id)
(dict-entry ?id Class "Group")
(not (dict-entry ?id isSubgraph ?))
(dict-entry ?id Graphics ?array)
(array ?array $?graphics)
=>
(assert (group ?id))
(foreach ?graphic $?graphics
(assert (make-graphic ?sheet ?graphic))
@nickmain
nickmain / 8queens.html
Created May 15, 2013 19:04
8 queens problem, handwritten JS and Scheme with the intention of eventually being generated by a Prolog compiler written in Racket
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function makeContext() { return { choices:[], trail:[], halted:false }; }
// Push a new choice point onto the stack
function pushChoice( ctx, choiceThunk ) {
ctx.choices.unshift( { thunk:choiceThunk, trailIndex:ctx.trail.length } );
}