Skip to content

Instantly share code, notes, and snippets.

Avatar

Patrick B. Gibson patr1ck

View GitHub Profile
View Caches
Let's Reinvent Modern CPU Caches!
In The Beginning, programs were hard-coded, entered directly with switches. Values would be input, and then results would output,
but couldn't really be stored. We'll draw this like so:
Input -> Fixed Calculations -> Output
An early improvement in generality was the addition of storage (ENIAC eventually gained 100 words of magnetic core memory),
leaving us with something along these lines:
View Signal+Extensions.swift
//
// Signal+Extensions.swift
// Khan Academy
//
// Created by Nacho Soto on 10/1/15.
// Copyright © 2015 Khan Academy. All rights reserved.
//
import ReactiveCocoa
View gist:44b7063110fc423edb4d

Things that programmers don't know but should

(A book that I might eventually write!)

Gary Bernhardt

I imagine each of these chapters being about 2,000 words, making the whole book about the size of a small novel. For comparison, articles in large papers like the New York Times average about 1,200 words. Each topic gets whatever level of detail I can fit into that space. For simple topics, that's a lot of space: I can probably walk through a very basic, but working, implementation of the IP protocol.

@tjw
tjw / readonly-property-analyzer.m
Created Mar 12, 2015
20140181: Regression: clang static analyzer emits spurious warning when releasing strong ivar in -dealloc
View readonly-property-analyzer.m
#import <Foundation/Foundation.h>
/*
clang --analyze readonly-property-analyzer.m
readonly-property-analyzer.m:20:2: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
[_string release];
^~~~~~~~~~~~~~~~~
1 warning generated.
@mattt
mattt / nshipster-new-years-2015.md
Created Nov 25, 2014
NSHipster New Year's 2015
View nshipster-new-years-2015.md

Season's Greetings, NSHipsters!

As the year winds down, and we take a moment to reflect on our experiences over the past months, one thing is clear: 2014 has been an incredible year professionally for Apple developers. So much has happened in such a short timespan, and yet it's hard to remember our relationship to Objective-C before Swift, or what APIs could have captivated our imagination as much as iOS 8 or WatchKit.

It's an NSHipster tradition to ask you, dear readers, to send in your favorite tips and tricks from the past year for publication over the New Year's holiday. This year, with the deluge of new developments—both from Cupertino and the community at large—there should be no shortage of interesting tidbits to share.

Submit your favorite piece of Swift or Objective-C trivia, framework arcana, hidden Xcode feature, or anything else you think is cool, and you could have it featured in the year-end blowout article. Just comment on this gist below!

If you're wondering about what to post, look to

@iosdevzone
iosdevzone / CommonCryptoHack
Created Sep 21, 2014
A shell script to write a dummy CommonCrypto.framework module into the directory where playgrounds look for frameworks.
View CommonCryptoHack
#!/bin/bash
if [[ $BASH_SOURCE != $0 ]]; then echo "$BASH_SOURCE must be executed, not sourced."; return 255; fi
#
# A script to fool iOS playgrounds into allowing access to CommonCrypto
#
# The script creates a dummy CommonCrypto.framework in the SDK's System
# Framework Library Directory with a module map that points to the
# umbrella header
#
# Usage:
@b3ll
b3ll / MaybeRevolutionary.swift
Created Jul 3, 2014
Revolutionizing YES / NO
View MaybeRevolutionary.swift
import Cocoa
var MAYBE: Bool {
get {
return Bool(Int(arc4random_uniform(2)))
}
}
var thisIsTotallyAGoodIdea = MAYBE
@staltz
staltz / introrx.md
Last active Jan 22, 2022
The introduction to Reactive Programming you've been missing
View introrx.md
View ArrayHelpers.swift
extension Array {
func first() -> Element? {
if isEmpty {
return nil
}
return self[0]
}
func last() -> Element? {
@tadast
tadast / ssl_puma.sh
Last active Dec 13, 2021 — forked from trcarden/gist:3295935
localhost SSL with puma
View ssl_puma.sh
# 1) Create your private key (any password will do, we remove it below)
$ cd ~/.ssh
$ openssl genrsa -des3 -out server.orig.key 2048
# 2) Remove the password
$ openssl rsa -in server.orig.key -out server.key