AnyObject

When is AnyObject not AnyObject? When it’s a protocol type.

XZ Gon' Give It To Ya

Last Friday the internet was rocked with the discovery of an exploit in xz-utils that was not only well-put-together technically, but also an example of extremely effective long game social engineering. I could share my opinions, but the takes I’ve seen have actually been fairly nuanced and thoughtful, if (justifiably!) pessimistic, from people with more experience and more familiarity than I have.

So instead I did this. Which, if you recognize the title, is exactly what you think it is.

Run-time Polymorphism in Swift

This has come up several times on the forums over the years, but I’ve never written it up in a standard place, so here it is: There are only three ways to get run-time polymorphism in Swift. Well, three and a half.

Older Posts

  1. 2024-01-20 Online Communication
  2. 2024-01-07 The Biggest Smallest PNG
  3. 2023-12-28 CellLVM
  4. 2023-12-14 Protobuf Is Almost Streamable
  5. 2023-12-13 Daylight Saving Is Temporal Time Zones
  6. 2023-11-26 GitMounter
  7. 2023-10-23 Type Erasure in Rust
  8. 2023-10-09 Soft Orders of Magnitude
  9. 2023-10-04 There's No Such Thing As "Implicitly Atomic"
  10. 2023-04-01 sNaNs and qNaNs
  11. 2023-02-12 Setting up GoToSocial
  12. 2023-01-22 Rescuing Files From Classic Mac OS...with Swift!
  13. 2022-11-28 The Two Faces of Codable/Serde
  14. 2022-10-09 Swift was always going to be part of the OS
  15. 2022-05-14 Relative References in ARM64 Disassembly
  16. 2022-04-24 Default Arguments and Label-based Overloading
  17. 2022-03-19 #TalkPay
  18. 2022-02-21 Dynamic Linking Is Bad For Apps And Static Linking Is Also Bad For Apps
  19. 2021-12-31 Swift Regrets: Wrap-up
  20. 2021-12-30 Swift History: Assignment Methods
  21. 2021-12-28 Swift Regret: inout Syntax
  22. 2021-12-26 Swift Delight: Optional Conveniences
  23. 2021-12-23 Swift Regret: try?
  24. 2021-12-21 Swift Delight: try
  25. 2021-12-17 Swift Regret: Operator Function Lookup Rules
  26. 2021-12-15 Swift Regret: "Double" rather than "Float64"
  27. 2021-12-10 Swift Delight: Implicit Member Syntax
  28. 2021-12-08 Swift Regret: Weak Vars in Structs
  29. 2021-12-03 Swift Regret: Lazy Vars in Structs
  30. 2021-11-30 Swift Delight: No Unused Results
  31. 2021-11-24 Swift Regret: Open Protocols
  32. 2021-11-21 Swift Regret: Retroactive Conformances
  33. 2021-11-18 Swift Delight: Library Evolution
  34. 2021-11-10 Swift Mangling Regret: Private Discriminators
  35. 2021-11-05 Swift Mangling Regret: The "Old" Mangling
  36. 2021-11-03 Swift Mangling Regret: Library Evolution
  37. 2021-10-29 Swift Delight: #available
  38. 2021-10-22 Swift Regret: Implicitly-Hashable Payloadless Enums
  39. 2021-10-20 Swift Regret: Top-Level Decls in Script Mode
  40. 2021-10-15 Swift Delight: Names for Generic Parameters
  41. 2021-10-13 Swift Regret: Generic Parameters Aren't Members
  42. 2021-10-08 Swift Regret: OpaquePointer
  43. 2021-10-06 Swift Regret: Unannotated C Enums
  44. 2021-10-01 Swift Delight: Value Semantics Collections
  45. 2021-09-29 Swift Delight: guard
  46. 2021-09-24 Swift Regret: Inferred Property Types
  47. 2021-09-22 Swift Regret: Implicit Optional Initialization
  48. 2021-09-17 Swift Regret: Subscript Trailing Closures
  49. 2021-09-15 Swift Regret: Subscript Argument Label Rules
  50. 2021-09-10 Swift Regrets
  51. 2021-09-10 Swift Regret: Unapplied Instance Methods
  52. 2021-09-08 Swift Regret: Bound Methods
  53. 2021-08-29 Swift Regret: Type-based Overloading
  54. 2021-08-25 Swift Regret: AnyObject Dispatch
  55. 2021-08-20 Swift Regret: Labeled Tuple Elements
  56. 2021-08-18 Swift Regret: Tuples and Argument Lists
  57. 2021-08-13 Swift Regret: Sequence
  58. 2021-08-11 Swift Regret: mutating Protocol Methods vs. Classes
  59. 2021-08-06 Swift Regret: NSUInteger
  60. 2021-08-04 Swift Regret: Protocol Syntax
  61. 2020-11-15 Negotiate Your Offers!
  62. 2020-10-20 The Swift Runtime: Enums
  63. 2020-10-06 The Swift Runtime: Class Metadata Initialization
  64. 2020-09-29 The Swift Runtime: Class Metadata
  65. 2020-09-21 The Swift Runtime: Uniquing Caches
  66. 2020-09-14 The Swift Runtime: Type Metadata
  67. 2020-09-07 The Swift Runtime: Type Layout
  68. 2020-08-31 The Swift Runtime: Heap Objects
  69. 2020-08-26 Objective-Rust
  70. 2020-07-07 Suffusion: Playing with Filesystems
  71. 2020-05-24 ROSE-8 on Mac OS 9
  72. 2020-04-03 Shallow Git Repositories
  73. 2020-04-01 Swift on Mac OS 9
  74. 2020-02-06 Flexible Identities in git
  75. 2020-02-04 Introducing the Game 'by Color
  76. 2020-01-28 ROSE-8: Console Mode
  77. 2020-01-22 Setting up gitweb on Shared Hosting
  78. 2020-01-13 ROSE-8
  79. 2019-12-24 quasiquarantine
  80. 2019-08-01 > go east
  81. 2018-04-29 Misleading Metrics and UX Tradeoffs
  82. 2018-04-03 "FIXME" Doesn't Always Mean "Fix Me"
  83. 2018-03-22 My Little (String) Optimization, Part 2
  84. 2018-03-15 My Little Optimization: The Compiler Is Magic
  85. 2018-02-26 Many-to-Many Protocols
  86. 2018-01-29 Color Palette #8
  87. 2017-09-07 The New Kingdom of Nouns
  88. 2017-09-05 Over-abstraction
  89. 2016-08-21 Macromancy, Part 2
  90. 2016-08-07 Macromancy
  91. 2016-06-19 Pronoun Buttons
  92. 2016-05-29 Webmailer's Update Bar
  93. 2016-05-23 So You Want to Be a (Compiler) Wizard
  94. 2015-12-29 Re: Contempt Culture
  95. 2015-11-18 Recommendations
  96. 2015-05-09 Nibblesort: Adventures in Optimization
  97. 2015-02-22 AlterConf SF/Oakland
  98. 2015-01-24 “Skip the FFI”
  99. 2012-12-08 How to Write a Checker in 24 Hours
  100. 2012-10-02 Git Tricks
  101. 2012-04-26 Keyboard Adventures
  102. 2011-08-10 "Little Big Details"
  103. 2011-07-29 Weak Linking
  104. 2011-07-25 Using Clang from SVN in Xcode
  105. 2011-07-22 rm vs. Time Machine
  106. 2011-07-14 Priorities
  107. 2011-06-27 git add
  108. 2011-06-20 Automatic Reference Counting
  109. 2011-06-16 Dealing with "Sandwich Code"
  110. 2011-06-05 gdba
  111. 2011-06-03 Chrome vs. Safari
  112. 2011-05-31 User-Side Troubleshooting
  113. 2011-05-30 Auspicious Continuation
  114. 2009-07-21 Scripting Bridge
  115. 2009-07-08 What Happened to Dockyard?
  116. 2009-06-26 Garbage Collectors and Stack Drawers
  117. 2009-06-21 Z shell
  118. 2009-05-22 “Several New Features”
  119. 2009-05-05 C++ Templates are Turing-Complete
  120. 2009-04-21 [Meme] How Many HTML Elements Can You Name in 5 Minutes?
  121. 2009-04-16 Safer Plugin Categories
  122. 2009-04-02 Hacking Safari 4...for Great Convenience
  123. 2009-03-27 Const Correctness
  124. 2009-03-19 Categories and +load
  125. 2009-03-15 Subversion Checksum Problems
  126. 2009-03-06 JavaScript Tetris
  127. 2008-09-04 Objective-J and Objective-C
  128. 2008-08-28 HTTPS and Name-based Virtual Hosting
  129. 2008-03-08 Alerts Without Apps (or nibs)
  130. 2008-01-14 NSNumber, CFNumber, and CFBoolean
  131. 2007-12-13 GenericToolbar and IB3
  132. 2007-10-27 Performance Optimization: Why We Can't Use valueForKeyPath:
  133. 2007-09-01 Short Xcode Tip: Plugins
  134. 2007-07-15 Port 25 Blocked?
  135. 2007-06-27 GenericToolbar Icon
  136. 2007-04-13 The Symbolism of Pretty URLS
  137. 2007-03-07 Flexible PHP
  138. 2007-01-12 Inauspicious Beginnings

Possibly Related Tags