Skip to content

Instantly share code, notes, and snippets.

🕶
Encrypting Bits

Richard Stelling rjstelling

🕶
Encrypting Bits
Block or report user

Report or block rjstelling

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@rjstelling
rjstelling / UniformTypeIdentifierExtensions.swift
Created Apr 1, 2020
A couple of extensions to make working with UTI in Swift less painful.
View UniformTypeIdentifierExtensions.swift
import Foundation
// Typesafe UTI, systme APIs are all stringly typed 🙄
public struct UTI: CustomDebugStringConvertible, CustomStringConvertible {
public enum Error: Swift.Error {
case invalidCharachters
}
private let rawUTI: String
@rjstelling
rjstelling / RegularExpressionValidation.swift
Created Mar 23, 2020
A `@propertyWrapper` that validates a string using a regular expression. If the string matches then it is assigned to the property if it does not then the property is net to nil. Also included is an example of validating email addresses.
View RegularExpressionValidation.swift
import Foundation
@propertyWrapper
public struct RegularExpressionValidation {
private var _verifiedString: String?
private let _regexPattern: String
private lazy var _regex: NSRegularExpression? = try? NSRegularExpression(pattern: _regexPattern, options: [.caseInsensitive])
public init(_ regexString: String) {
@rjstelling
rjstelling / PrintIntegerAsBinaryString.swift
Created May 24, 2019
A generic function to print the "binary string" of any `FixedWidthInteger`.
View PrintIntegerAsBinaryString.swift
func print<T: FixedWidthInteger>(asBinary val: T) {
let bitCount = MemoryLayout<T>.size * 8
let binaryStr = String(val, radix: 2)
let zeroPadding = String(repeating: "0", count: bitCount - binaryStr.count)
print("0b\(zeroPadding)\(binaryStr)")
}
@rjstelling
rjstelling / BaseFunctions.swift
Last active Jan 24, 2020
Simple base encoding and decoding in Swift.
View BaseFunctions.swift
import Foundation
public enum StringSearchError: Swift.Error {
case didNotFind(Character)
}
extension String {
static let ReducedDigits = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"
static let DefaultBase36 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
@rjstelling
rjstelling / Data+FNV32.swift
Created May 4, 2018
Data Extension for Fowler–Noll–Vo hash function
View Data+FNV32.swift
import Foundation
extension Data {
public var fnv32Hash: UInt32 {
return UInt32( self.reduce(0x811c9dc5) { 0x00000000FFFFFFFF & ($0 * 16777619) ^ UInt64($1) } )
}
public func fnv32HashString() -> String {
return String(format: "%08x", self.fnv32Hash)
View iOS Device Model Names.markdown

iOS Device Model List

iPhone

  • iPhone1,1 — iPhone
  • iPhone1,2 — iPhone 3G
  • iPhone2,1 — iPhone 3GS
  • iPhone3,1 — iPhone 4 (GSM)
  • iPhone3,3 — iPhone 4 (CDMA/Verizon/Sprint)
  • iPhone4,1 — iPhone 4S
  • iPhone5,1 — iPhone 5 (model A1428, AT&T/Canada)
@rjstelling
rjstelling / TwoLabelButton.swift
Created May 31, 2017
A simple Auto Layout solution for a UIButton with 2 labels.
View TwoLabelButton.swift
class CustomButton: UIButton {
internal required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
internal override init(frame: CGRect) {
super.init(frame: frame)
}
}
@rjstelling
rjstelling / Suggestions
Created Dec 9, 2016
When Host.swift was started, it was before we new too much about Swift 3.0, now it has arrived we have a problem... NSHost has been renamed Host when imported into Swift 3.x. We don't want to be a bad Swift citizen and iOS still doesn't have (NS)Host. so we need to rename the project. At this point I am open to any suggestions... the simpler the…
View Suggestions
When Host.swift was started, it was before we new too much about Swift 3.0, now it has arrived we have a problem...
NSHost has been renamed Host when imported into Swift 3.x. We don't want to be a bad Swift citizen and iOS still doesn't have (NS)Host. so we need to rename the project.
At this point I am open to any suggestions... the simpler the better IMHO.
Add your suggestions here:
@rjstelling
rjstelling / SwiftCastingBug.swift
Created Jun 15, 2016
A Playground that demos a bug where a cast using `as` causes a, "fatal error: can't unsafeBitCast between types of different sizes".
View SwiftCastingBug.swift
//: Playground - Demos a bug where a cast using `as` causes a, "fatal error: can't unsafeBitCast between types of different sizes"
import UIKit
protocol Thingable {
func getStuff()
}
enum MyList: Thingable {
case One
View Apple News Website Wish list
1. No coverage of Stock price... ever.
2. No coverage of carrier contracts or offers... Unless John Legere joins the Apple board I don't want to read his name.
3. Never publish patents as news.
4. I dont care about US only Apple Pay roll outs.
5. Do not commission renderings of UI designs of unreleased products.
6. No wish lists.
You can’t perform that action at this time.