- Selling the Dream - Guy Kawasaki
- The Business Value of Developer Relations - Mary Thengvall
- Developer Relations: How to build and grow a successful developer program - Caroline Lewko & James Parton
- The Developer Advocacy Handbook - Christian Heilmann
- previously, The Developer Evangelism Handbook (out of print as a book, but available online)
- The Art of Community - Jono Bacon
- People Powered - Jono Bacon
- Buzzing Communities - Richard Millington
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| "Test_a" = "AAAAA"; | |
| "Test_b" = "BBBBB"; | |
| "Test_c" = "CCCCC"; | |
| "Test_d" = "DDDDD"; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Demonstrates how to trace a path using SKShapeNode, CGMutablePath and Update | |
| // Swift 4.0 | |
| import SpriteKit | |
| import PlaygroundSupport | |
| import AVFoundation | |
| let start = CGPoint(x: 100, y: 50) | |
| let end = CGPoint(x: 200, y: 50) | |
| let control = CGPoint(x: 150, y: 100); | |
| var motion: SKAction = SKAction(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Foundation | |
| extension Data { | |
| var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription | |
| guard let object = try? JSONSerialization.jsonObject(with: self, options: []), | |
| let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]), | |
| let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil } | |
| return prettyPrintedString | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import SwiftUI | |
| /// Example of how to get Dynamic Type with custom fonts in SwiftUI. | |
| struct ContentView: View { | |
| var body: some View { | |
| VStack(spacing: 20) { | |
| Text("A large title").customFont(.largeTitle) // "Optima-ExtraBlack", 28 | |
| Text("A body").customFont(.body) // "Kailasa", 16 | |
| Text("A caption").customFont(.caption2) // "IowanOldStyle-Italic", 11 | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import SwiftUI | |
| struct ContentView : View { | |
| var body: some View { | |
| PKCanvasRepresentation() | |
| } | |
| } | |
| #if DEBUG | |
| struct ContentView_Previews : PreviewProvider { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * MacEditorTextView | |
| * Copyright (c) Thiago Holanda 2020-2025 | |
| * https://bsky.app/profile/tholanda.com | |
| * | |
| * (the twitter account is now deleted, please, do not try to reach me there) | |
| * https://twitter.com/tholanda | |
| * | |
| * MIT license |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /// An iOS style TabView that doesn't reset it's childrens navigation stacks when tabs are switched. | |
| public struct UIKitTabView: View { | |
| private var viewControllers: [UIHostingController<AnyView>] | |
| private var selectedIndex: Binding<Int>? | |
| @State private var fallbackSelectedIndex: Int = 0 | |
| public init(selectedIndex: Binding<Int>? = nil, @TabBuilder _ views: () -> [Tab]) { | |
| self.viewControllers = views().map { | |
| let host = UIHostingController(rootView: $0.view) | |
| host.tabBarItem = $0.barItem |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| struct HorizontalList<Item, Card, Detail>: View where Item: NSManagedObject, Card: View, Detail: View{ | |
| var items: FetchedResults<Item> | |
| var card: (Item) -> Card | |
| var detail: (Item) -> Detail | |
| // init(items: FetchedResults<Item>, @ViewBuilder card: @escaping (Item) -> Card, @ViewBuilder detail: @escaping (Item) -> Detail) { | |
| // self.items = items | |
| // self.card = card | |
| // self.detail = detail | |
| // } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import SwiftUI | |
| enum Message { | |
| /// A message and OK button | |
| case information(body: String) | |
| /// A message and OK button | |
| case warning(body: String) | |
| /// A question with YES and NO buttons | |
| case confirmation(body: String, action: () -> Void) | |
| /// A question about destractive action with `action` and CANCEL buttons |