The Curious Engineer

All blogs / Mobile / iOS / Android

NSBlog

mikeash.com/pyblog

Mac OS X and Cocoa programming

Mobile / iOS / AndroidPerformance / optimizationAssemblyEngineering blogs

’05’10’15’20’25
Posts
311 from 24 Jan 2005 to 11 Oct 2019
Posting
quiet since 2019
Kind
personal blog
Feed
https://www.mikeash.com/pyblog/rss.py

2019 1

  1. objc_msgSend's New Prototype

2018 2

  1. Friday Q&A 2018-06-29: Debugging with C-Reduce
  2. Friday Q&A 2018-04-27: Generating Text With Markov Chains in Swift

2017 15

  1. Friday Q&A 2017-12-08: Type Erasure in Swift
  2. Friday Q&A 2017-11-10: Observing the A11's Heterogenous Cores
  3. Friday Q&A 2017-10-27: Locks, Thread Safety, and Swift: 2017 Edition
  4. The Complete Friday Q&A Volumes II and III Are Out!
  5. Friday Q&A 2017-10-06: Type-Safe User Defaults
  6. Friday Q&A 2017-09-22: Swift 4 Weak References
  7. The Best New Features in Swift 4
  8. Corporate Training, NYC Workshop, and Book Update
  9. Friday Q&A 2017-08-25: Swift Error Handling Implementation
  10. Friday Q&A 2017-08-11: Swift.Unmanaged
  11. Friday Q&A 2017-07-28: A Binary Coder for Swift
  12. Friday Q&A 2017-07-14: Swift.Codable
  13. Friday Q&A 2017-06-30: Dissecting objc_msgSend on ARM64
  14. More Advanced Swift Workshop, and Blog and Book Updates
  15. Advanced Swift Workshop in New York City

2016 6

  1. Advanced Swift Workshop in Washington, DC
  2. Good News, Bad News, and Ugly News
  3. Friday Q&A 2016-04-15: Performance Comparisons of Common Operations, 2016 Edition
  4. Friday Q&A 2016-03-04: Swift Asserts
  5. Friday Q&A 2016-02-19: What Is the Secure Enclave?
  6. Friday Q&A 2016-01-29: Swift Struct Storage

2015 20

  1. Friday Q&A 2015-12-25: Swifty Target/Action
  2. Friday Q&A 2015-12-11: Swift Weak References
  3. Friday Q&A 2015-11-20: Covariance and Contravariance
  4. Friday Q&A 2015-11-06: Why is Swift's String API So Hard?
  5. Friday Q&A 2015-09-18: Building a Gear Warning System
  6. Friday Q&A 2015-09-04: Let's Build dispatch_queue
  7. Friday Q&A 2015-08-14: An Xcode Plugin for Unsmoothed Text
  8. Friday Q&A 2015-07-31: Tagged Pointer Strings
  9. Friday Q&A 2015-07-17: When to Use Swift Structs and Classes
  10. Friday Q&A 2015-07-03: Address Sanitizer
  11. Friday Q&A 2015-06-19: The Best of What's New in Swift
  12. I Do Not Agree To Your Terms
  13. Friday Q&A 2015-05-29: Concurrent Memory Deallocation in the Objective-C Runtime
  14. Friday Q&A 2015-05-01: Fuzzing with afl-fuzz
  15. Friday Q&A 2015-04-17: Let's Build Swift.Array
  16. Friday Q&A 2015-03-20: Preprocessor Abuse and Optional Parentheses
  17. Friday Q&A 2015-02-20: Let's Build @synchronized
  18. Friday Q&A 2015-02-06: Locks, Thread Safety, and Swift
  19. Comments RSS feed for this page
  20. Friday Q&A 2015-01-23: Let's Build Swift Notifications

2014 21

  1. Friday Q&A 2014-11-07: Let's Build NSZombie
  2. A Brief Pause
  3. Friday Q&A 2014-08-29: Swift Memory Dumping
  4. Friday Q&A 2014-08-15: Swift Name Mangling
  5. Friday Q&A 2014-08-01: Exploring Swift Memory Layout, Part II
  6. Comments RSS feed for this page
  7. RSS feed
  8. full text feed
  9. fridayqna
  10. Pyblog
  11. Friday Q&A 2014-07-18: Exploring Swift Memory Layout
  12. Book
  13. Friday Q&A 2014-07-04: Secrets of Swift's Speed
  14. Friday Q&A 2014-06-20: Interesting Swift Features
  15. Friday Q&A 2014-06-06: Secrets of dispatch_once
  16. Friday Q&A 2014-05-23: A Heartbleed-Inspired Paranoid Memory Allocator
  17. Friday Q&A 2014-05-09: When an Autorelease Isn't
  18. Friday Q&A 2014-03-14: Introduction to the Sockets API
  19. Tales From The Crash Mines: Issue #1
  20. Friday Q&A 2014-01-24: Introduction to libclang
  21. Friday Q&A 2014-01-10: Let's Break Cocoa

2013 23

  1. Friday Q&A 2013-12-06: Network Protocol Design
  2. VoodooPad Acquisition
  3. Friday Q&A 2013-10-25: NSObject: the Class and the Protocol
  4. Friday Q&A 2013-10-11: Why Registers Are Fast and RAM Is Slow
  5. Friday Q&A 2013-09-27: ARM64 and You
  6. Friday Q&A 2013-09-13: A Library for Easier Property List Type Checking and Error Reporting
  7. Friday Q&A 2013-08-30: Model Serialization With Property Lists
  8. Friday Q&A 2013-08-16: Let's Build Dispatch Groups
  9. Friday Q&A 2013-08-02: Type-Safe Scalars with Single-Field Structs
  10. Friday Q&A 2013-06-28: Anatomy of a Compiler Bug
  11. Friday Q&A 2013-06-14: Reachability
  12. Friday Q&A 2013-05-31: C Quiz
  13. Friday Q&A 2013-05-17: Let's Build stringWithFormat:
  14. Friday Q&A 2013-05-03: Proper Use of Asserts
  15. Friday Q&A Is On Vacation
  16. Friday Q&A 2013-04-05: Windows and Window Controllers
  17. Objective-C Literals in Serbo-Croatian
  18. Friday Q&A 2013-03-22: Let's Build NSInvocation, Part II
  19. Friday Q&A 2013-03-08: Let's Build NSInvocation, Part I
  20. Friday Q&A 2013-02-22: Let's Build UITableView
  21. Friday Q&A 2013-02-08: Let's Build Key-Value Coding
  22. Friday Q&A 2013-01-25: Let's Build NSObject
  23. Friday Q&A 2013-01-11: Mach Exception Handlers

2012 36

  1. Friday Q&A 2012-12-28: What Happens When You Load a Byte of Memory
  2. Friday Q&A 2012-12-14: Objective-C Pitfalls
  3. Friday Q&A 2012-11-30: Let's Build A Mach-O Executable
  4. Friday Q&A 2012-11-16: Let's Build objc_msgSend
  5. Friday Q&A 2012-11-09: dyld: Dynamic Linking On OS X
  6. Friday Q&A 2012-11-02: Building the FFT
  7. Friday Q&A 2012-10-26: Fourier Transforms and FFTs
  8. Friday Q&A 2012-10-12: Obtaining and Interpreting Audio Data
  9. Friday Q&A 2012-09-28: Optimizing Flood Fill
  10. Friday Q&A 2012-09-14: Implementing a Flood Fill
  11. Friday Q&A 2012-08-31: Obtaining and Interpreting Image Data
  12. Friday Q&A 2012-08-24: Things You Never Wanted To Know About C
  13. Friday Q&A 2012-08-10: A Tour of CommonCrypto
  14. Friday Q&A 2012-07-27: Let's Build Tagged Pointers
  15. Friday Q&A 2012-07-06: Let's Build NSNumber
  16. Friday Q&A 2012-06-22: Objective-C Literals
  17. Friday Q&A 2012-06-01: A Tour of PLWeakCompatibility: Part II
  18. Friday Q&A 2012-05-18: A Tour of PLWeakCompatibility: Part I
  19. Solving Simulator Bootstrap Errors
  20. Friday Q&A 2012-05-04: PLCrashReporter and Unwinding the Stack With DWARF, Part 2
  21. Friday Q&A 2012-04-27: PLCrashReporter and Unwinding the Stack With DWARF
  22. Friday Q&A 2012-04-13: Nib Memory Management
  23. Introducing PLWeakCompatibility
  24. Friday Q&A 2012-03-16: Let's Build NSMutableDictionary
  25. Friday Q&A 2012-03-09: Let's Build NSMutableArray
  26. Friday Q&A 2012-03-02: Key-Value Observing Done Right: Take 2
  27. Friday Q&A 2012-02-17: Ring Buffers and Mirrored Memory: Part II
  28. Deadlocks and Lock Ordering: a Vignette
  29. Friday Q&A 2012-02-03: Ring Buffers and Mirrored Memory: Part I
  30. Friday Q&A 2012-01-20: Fork Safety
  31. The Mac Toolbox: Followup
  32. Plausible Labs is Hiring
  33. Friday Q&A 2012-01-13: The Mac Toolbox
  34. Buy Videos of My VTM Presentations
  35. Friday Q&A 2012-01-06: The Hopper Disassembler
  36. Avoid Apress

2011 35

  1. Friday Q&A 2011-12-30: Disassembling the Assembly, Part 3: ARM edition
  2. Friday Q&A 2011-12-23: Disassembling the Assembly, Part 2
  3. Friday Q&A 2011-12-16: Disassembling the Assembly, Part 1
  4. Friday Q&A 2011-12-02: Object File Inspection Tools
  5. Testing Hashcash-Based Anti-Spam Measures
  6. No Article For you!
  7. Friday Q&A 2011-11-11: Building a Memoizing Block Proxy
  8. Friday Q&A 2011-10-28: Generic Block Proxying
  9. Friday Q&A 2011-10-14: What's New in GCD
  10. Friday Q&A 2011-09-30: Automatic Reference Counting
  11. Friday Q&A 2011-09-16: Let's Build Reference Counting
  12. Friday Q&A 2011-09-02: Let's Build NSAutoreleasePool
  13. Friday Q&A 2011-08-19: Namespaced Constants and Functions
  14. See Me Speak at Voices That Matter in Boston
  15. Friday Q&A 2011-08-05: Method Signature Mismatches
  16. Friday Q&A 2011-07-22: Writing Unit Tests
  17. Friday Q&A 2011-07-08: Let's Build NSNotificationCenter
  18. Friday Q&A Delayed Again
  19. Friday Q&A 2011-06-17: gdb Tips and Tricks
  20. Friday Q&A 2011-06-03: Objective-C Blocks vs. C++0x Lambdas: Fight!
  21. Friday Q&A 2011-05-20: The Inner Life of Zombies
  22. Friday Q&A 2011-05-06: A Tour of MABlockClosure
  23. Friday Q&A Falls Behind
  24. Friday Q&A 2011-04-15: Compile-Time Tips and Tricks
  25. Link: Implementing imp_implementationWithBlock
  26. Friday Q&A 2011-04-01: Signal Handling
  27. Friday Q&A 2011-03-18: Random Numbers
  28. See Me Speak at Voices That Matter in Seattle
  29. Friday Q&A 2011-03-04: A Tour of OSAtomic
  30. Friday Q&A 2011-02-18: Compound Literals
  31. Complete Friday Q&A Direct-Sell ePub, PDF, and Print on Demand
  32. Writing the Complete Friday Q&A
  33. Complete Friday Q&A Now Available
  34. Rogue Amoeba Is Hiring Again
  35. Friday Q&A 2011-01-04: Practical Floating Point

2010 41

  1. Friday Q&A 2010-12-31: C Macro Tips and Tricks
  2. Friday Q&A 2010-12-17: Custom Object Allocators in Objective-C
  3. Friday Q&A 2010-12-03: Accessors, Memory Management, and Thread Safety
  4. Friday Q&A 2010-11-19: Creating Classes at Runtime for Fun and Profit
  5. Summary of the Current State of my Publications
  6. Friday Q&A 2010-11-6: Creating Classes at Runtime in Objective-C
  7. Friday Q&A Will Return
  8. Cocoa Unbound
  9. Friday Q&A 2010-08-27: Defensive Programming in Cocoa
  10. Friday Q&A 2010-08-12: Implementing NSCoding
  11. Friday Q&A 2010-07-30: Zeroing Weak References to CoreFoundation Objects
  12. Friday Q&A 2010-07-16: Zeroing Weak References in Objective-C
  13. Introducing MAZeroingWeakRef
  14. Friday Q&A 2010-07-02: Background Timers
  15. Blocks and GCD in Russian
  16. Friday Q&A 2010-06-18: Implementing Equality and Hashing
  17. Friday Q&A 2010-05-28: Leopard Collection Classes
  18. Some Light Reading
  19. iPhone Apps I Can't Have
  20. Friday Q&A 2010-05-14: What Every Apple Programmer Should Know
  21. Another Week Without Friday Q&A
  22. Friday Q&A 2010-04-30: Dealing with Retain Cycles
  23. Friday Q&A 2010-04-23: Implementing a Custom Slider
  24. Mistakes and Chains of Events
  25. Friday Q&A 2010-04-16: Implementing Fast Enumeration
  26. An Objective-C Continuations Library
  27. Friday Q&A 2010-04-09: Comparison of Objective-C Enumeration Techniques
  28. Friday Q&A 2010-04-02: OpenCL Basics
  29. And Again
  30. Friday Q&A Skips a Week
  31. Friday Q&A 2010-03-12: Subclassing Class Clusters
  32. Friday Q&A 2010-03-05: Compound Futures
  33. Friday Q&A 2010-02-26: Futures
  34. Friday Q&A 2010-02-19: Character Encodings
  35. Friday Q&A 2010-02-12: Trampolining Blocks with Mutable Code
  36. Friday Q&A 2010-02-05: Error Returns with Continuation Passing Style
  37. Friday Q&A 2010-01-29: Method Replacement for Fun and Profit
  38. Friday Q&A 2010-01-22: Toll Free Bridging Internals
  39. Friday Q&A 2010-01-15: Stack and Heap Objects in Objective-C
  40. Friday Q&A 2010-01-08: NSNotificationQueue
  41. Friday Q&A 2010-01-01: NSRunLoop Internals

2009 55

  1. Rogue Amoeba Is Hiring
  2. Friday Q&A 2009-12-18: Highlights From a Year of Friday Q&A
  3. Friday Q&A 2009-12-11: A GCD Case Study: Building an HTTP Server
  4. Friday Q&A 2009-12-04: Building Standalone iPhone Web Apps
  5. Friday Q&A 2009-11-27: Using Accessors in Init and Dealloc
  6. Friday Q&A 2009-11-20: Probing Cocoa With PyObjC
  7. Deconstructing Apple's Copyright and Trademark Guidelines
  8. Friday Q&A 2009-11-13: Dangerous Cocoa Calls
  9. Friday Q&A 2009-11-06: Linking and Install Names
  10. Friday Q&A 2009-10-30: Generators in Objective-C
  11. Friday Q&A 2009-10-23: A Preview of Coming Attractions
  12. Friday Q&A 2009-10-16: Creating a Blocks-Based Object System
  13. Friday Q&A 2009-10-09: Defensive Programming
  14. XBolo is Out!
  15. Friday Q&A 2009-10-02: Care and Feeding of Singletons
  16. Friday Q&A 2009-09-25: GCD Practicum
  17. Friday Q&A 2009-09-18: Intro to Grand Central Dispatch, Part IV: Odds and Ends
  18. The iPhone Development Story: One Year Later
  19. Friday Q&A 2009-09-11: Intro to Grand Central Dispatch, Part III: Dispatch Sources
  20. GCD Is Not Blocks, Blocks Are Not GCD
  21. Friday Q&A 2009-09-04: Intro to Grand Central Dispatch, Part II: Multi-Core Performance
  22. Objective-C Runtime Podcast Episode at Mobile Orchard
  23. Friday Q&A 2009-08-28: Intro to Grand Central Dispatch, Part I: Basics and Dispatch Queues
  24. Unicode Comments Support
  25. Friday Q&A 2009-08-21: Writing Vararg Macros and Functions
  26. Reading Between the Lines of Apple's FCC Reply
  27. Friday Q&A 2009-08-14: Practical Blocks
  28. Friday Q&A 2009-07-17: Format Strings Tips and Tricks
  29. Friday Q&A 2009-07-10: Type Specifiers in C, Part 3
  30. Friday Q&A 2009-07-03: Type Specifiers in C, Part 2
  31. Friday Q&A 2009-06-26: Type Qualifiers in C, Part 1
  32. Friday Q&A 2009-06-19: Mac OS X Process Memory Statistics
  33. Friday Q&A 2009-06-05: Introduction to Valgrind
  34. Friday Q&A 2009-05-22: Objective-C Class Loading and Initialization
  35. Use NSOperationQueue
  36. Nanogolf
  37. Friday Q&A 2009-05-01: On Hold
  38. Friday Q&A 2009-04-24: Code Generation with LLVM, Part 2: Fast Objective-C Forwarding
  39. Friday Q&A 2009-04-17: Code Generation with LLVM, Part 1: Basics
  40. Friday Q&A 2009-04-10: Multithreaded Optimization in ChemicalBurn
  41. Friday Q&A 2009-04-03: On Hold
  42. Friday Q&A 2009-03-27: Objective-C Message Forwarding
  43. Friday Q&A 2009-03-20: Objective-C Messaging
  44. Friday Q&A 2009-03-13: Intro to the Objective-C Runtime
  45. Friday Q&A 2009-03-06: Using the Clang Static Analyzer
  46. Friday Q&A 2009-02-27: Holistic Optimization
  47. Friday Q&A 2009-02-20: The Good and Bad of Distributed Objects
  48. Friday Q&A 2009-02-13: Operations-Based Parallelization
  49. Late Night Cocoa: NSOperationQueue Problems
  50. Friday Q&A 2009-02-06: Profiling With Shark
  51. Friday Q&A 2009-01-30: Code Injection
  52. Friday Q&A 2009-01-23
  53. Friday Q&A 2009-01-16
  54. Friday Q&A 2009-01-09
  55. Friday Q&A 2009-01-02

2008 24

  1. Friday Q&A 2008-12-26
  2. Friday Q&A 2008-12-19
  3. Friday Q&A
  4. RAOperationQueue, an open-source replacement for NSOperationQueue
  5. Don't Use NSOperationQueue
  6. Key-Value Observing Done Right
  7. The How and Why of Cocoa Initializers
  8. It's a Poor Carpenter Who Blames His Tools or: Xcode Sucks Again
  9. The iPhone Development Story
  10. NetAwake
  11. Late Night Cocoa
  12. Welcome to iPhone: Your Crappy Mac of Tomorrow, Today!
  13. WWDC 08 Followup
  14. Worst. Keynote. Ever.
  15. WWDC 2008
  16. Tales from the Sausage Factory: Why Those Big Downloads for Simple Updates?
  17. Deconstructing the iPhone SDK: Malware
  18. Performance Comparisons of Common Operations, iPhone Edition
  19. Use strnstr
  20. Deconstructing the iPhone SDK: No Multitasking
  21. Code Signing and You
  22. Goodbye, Nibs
  23. A Tool for Editing Version-Controlled Bundles
  24. Performance Comparisons of Common Operations, Leopard Edition

2007 12

  1. The Cults of Programming
  2. Leopard: First Impressions
  3. Algorithmic Optimizations: a Case Study
  4. Perform Better With Garbage Collection
  5. First Post
  6. IOCCC 2006 Winners
  7. Don't use strnstr
  8. Performance Comparisons of Common Operations
  9. Subtle Bugs
  10. Open Source
  11. How To Shrink Your Source Code
  12. More Fun With Autorelease

2006 15

  1. Why CoreAudio is Hard
  2. Hacking C++ From C
  3. Lesson of the Day
  4. Getting Answers
  5. Using Evil for Good
  6. Autorelease is Fast
  7. Making Xcode Better
  8. Custom NSCells Done Right
  9. Cocoa SIMBL Plugins
  10. Fluid Simulation for Dummies
  11. NSOpenGLContext and one-shot
  12. What Every Programmer Should Know
  13. Braaaaaaaains
  14. Bug Reversal
  15. Bolo Ecology

2005 5

  1. Score
  2. Fun With Beowulf Clusters
  3. Using FileMerge with subversion
  4. Dashboard Rant
  5. Name/comment conflict