Skip to content

Instantly share code, notes, and snippets.

View wildthink's full-sized avatar

Jason Jobe wildthink

  • 00:12 (UTC -04:00)
View GitHub Profile
@wildthink
wildthink / script.swift
Created January 16, 2022 16:43 — forked from chriseidhof/script.swift
SwiftUI
import SwiftSyntax
import SwiftSemantics
import Foundation
let source = try! String(contentsOf: URL(fileURLWithPath: "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks/SwiftUI.framework/Modules/SwiftUI.swiftmodule/arm64e.swiftinterface"))
var collector = DeclarationCollector()
let tree = try SyntaxParser.parse(source: source)
tree.walk(&collector)
@wildthink
wildthink / Always.swift
Created December 12, 2021 09:51 — forked from sharplet/Always.swift
A Combine publisher that repeatedly emits the same value as long as there is demand
// Copyright (c) 2019–20 Adam Sharp and thoughtbot, inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
//
// CompoundUnit.swift
//
// Created by Jason Jobe on 11/7/21.
//
// https://github.com/ole/Ampere
import Foundation
public protocol CompoundUnitProtocol: Dimension {
@wildthink
wildthink / latency.txt
Last active September 21, 2021 13:57 — forked from jboner/latency.txt
Latency Numbers Every Programmer Should Know
Latency Comparison Numbers (~2012)
----------------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
@wildthink
wildthink / ResultBuilder.swift
Last active April 14, 2022 23:32
Default @resultBuilder implementation makes make Result Builder easy
import Foundation
// WildThink
// https://gist.github.com/wildthink/386305f84d1e3ec0e1a198656733babe
// refs:
// https://github.com/apple/swift-evolution/blob/main/proposals/0289-result-builders.md#virtualized-abstract-syntax-trees-asts
public indirect enum ResultBuilderTerm<Expression> {
case expression(Expression)
case lambda(() -> Expression)
case block([ResultBuilderTerm])
@wildthink
wildthink / Dieter_Rams.md
Created September 17, 2021 09:38
Dieter Rams' principles of good design applied to software engineering

Dieter Rams' principles of good design applied to software engineering

1. Good software is innovative

Rebuild old software using new technology. Build new software using old and stable technology.

Strive to bring something new into the world, even when building a clone. Observe the users for inspiration. Try to anticipate them: what will they really need next?

2. Good software is useful

@wildthink
wildthink / DraggableView.swift
Last active October 2, 2021 10:02 — forked from ohayon/DraggableView.swift
Example of making a reusable `draggable()` modifier for SwiftUI Views
//
// DraggableView.swift
// Created by Jason Jobe on 9/15/21.
//
import SwiftUI
public struct DraggableView: ViewModifier {
public enum Axis { case x, y, xy }
//
// RatingsView.swift
// RatingsView
//
// Created by Jason Jobe on 9/12/21.
//
import SwiftUI
public struct RatingsView: View {
var rating: CGFloat
@wildthink
wildthink / transducer-type.swift
Created September 10, 2021 09:43 — forked from hsavit1/transducer-type.swift
How to get a transducer type without higher kinds
import Foundation
// A bunch of convenience things
func const <A, B> (b: B) -> A -> B {
return { _ in b }
}
func repeat <A> (n: Int) -> A -> [A] {
return { a in
return map(Array(1...n), const(a))
}
@wildthink
wildthink / SnapCarousel.swift
Created September 8, 2021 09:54 — forked from xtabbas/SnapCarousel.swift
A carousel that snap items in place build on top of SwiftUI
//
// SnapCarousel.swift
// prototype5
//
// Created by xtabbas on 5/7/20.
// Copyright © 2020 xtadevs. All rights reserved.
//
import SwiftUI