All blogs / Mobile / iOS / Android
NSBlog
Mac OS X and Cocoa programming
Mobile / iOS / AndroidPerformance / optimizationAssemblyEngineering blogs
- 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
2018 2
2017 15
- Friday Q&A 2017-12-08: Type Erasure in Swift
- Friday Q&A 2017-11-10: Observing the A11's Heterogenous Cores
- Friday Q&A 2017-10-27: Locks, Thread Safety, and Swift: 2017 Edition
- The Complete Friday Q&A Volumes II and III Are Out!
- Friday Q&A 2017-10-06: Type-Safe User Defaults
- Friday Q&A 2017-09-22: Swift 4 Weak References
- The Best New Features in Swift 4
- Corporate Training, NYC Workshop, and Book Update
- Friday Q&A 2017-08-25: Swift Error Handling Implementation
- Friday Q&A 2017-08-11: Swift.Unmanaged
- Friday Q&A 2017-07-28: A Binary Coder for Swift
- Friday Q&A 2017-07-14: Swift.Codable
- Friday Q&A 2017-06-30: Dissecting objc_msgSend on ARM64
- More Advanced Swift Workshop, and Blog and Book Updates
- Advanced Swift Workshop in New York City
2016 6
2015 20
- Friday Q&A 2015-12-25: Swifty Target/Action
- Friday Q&A 2015-12-11: Swift Weak References
- Friday Q&A 2015-11-20: Covariance and Contravariance
- Friday Q&A 2015-11-06: Why is Swift's String API So Hard?
- Friday Q&A 2015-09-18: Building a Gear Warning System
- Friday Q&A 2015-09-04: Let's Build dispatch_queue
- Friday Q&A 2015-08-14: An Xcode Plugin for Unsmoothed Text
- Friday Q&A 2015-07-31: Tagged Pointer Strings
- Friday Q&A 2015-07-17: When to Use Swift Structs and Classes
- Friday Q&A 2015-07-03: Address Sanitizer
- Friday Q&A 2015-06-19: The Best of What's New in Swift
- I Do Not Agree To Your Terms
- Friday Q&A 2015-05-29: Concurrent Memory Deallocation in the Objective-C Runtime
- Friday Q&A 2015-05-01: Fuzzing with afl-fuzz
- Friday Q&A 2015-04-17: Let's Build Swift.Array
- Friday Q&A 2015-03-20: Preprocessor Abuse and Optional Parentheses
- Friday Q&A 2015-02-20: Let's Build @synchronized
- Friday Q&A 2015-02-06: Locks, Thread Safety, and Swift
- Comments RSS feed for this page
- Friday Q&A 2015-01-23: Let's Build Swift Notifications
2014 21
- Friday Q&A 2014-11-07: Let's Build NSZombie
- A Brief Pause
- Friday Q&A 2014-08-29: Swift Memory Dumping
- Friday Q&A 2014-08-15: Swift Name Mangling
- Friday Q&A 2014-08-01: Exploring Swift Memory Layout, Part II
- Comments RSS feed for this page
- RSS feed
- full text feed
- fridayqna
- Pyblog
- Friday Q&A 2014-07-18: Exploring Swift Memory Layout
- Book
- Friday Q&A 2014-07-04: Secrets of Swift's Speed
- Friday Q&A 2014-06-20: Interesting Swift Features
- Friday Q&A 2014-06-06: Secrets of dispatch_once
- Friday Q&A 2014-05-23: A Heartbleed-Inspired Paranoid Memory Allocator
- Friday Q&A 2014-05-09: When an Autorelease Isn't
- Friday Q&A 2014-03-14: Introduction to the Sockets API
- Tales From The Crash Mines: Issue #1
- Friday Q&A 2014-01-24: Introduction to libclang
- Friday Q&A 2014-01-10: Let's Break Cocoa
2013 23
- Friday Q&A 2013-12-06: Network Protocol Design
- VoodooPad Acquisition
- Friday Q&A 2013-10-25: NSObject: the Class and the Protocol
- Friday Q&A 2013-10-11: Why Registers Are Fast and RAM Is Slow
- Friday Q&A 2013-09-27: ARM64 and You
- Friday Q&A 2013-09-13: A Library for Easier Property List Type Checking and Error Reporting
- Friday Q&A 2013-08-30: Model Serialization With Property Lists
- Friday Q&A 2013-08-16: Let's Build Dispatch Groups
- Friday Q&A 2013-08-02: Type-Safe Scalars with Single-Field Structs
- Friday Q&A 2013-06-28: Anatomy of a Compiler Bug
- Friday Q&A 2013-06-14: Reachability
- Friday Q&A 2013-05-31: C Quiz
- Friday Q&A 2013-05-17: Let's Build stringWithFormat:
- Friday Q&A 2013-05-03: Proper Use of Asserts
- Friday Q&A Is On Vacation
- Friday Q&A 2013-04-05: Windows and Window Controllers
- Objective-C Literals in Serbo-Croatian
- Friday Q&A 2013-03-22: Let's Build NSInvocation, Part II
- Friday Q&A 2013-03-08: Let's Build NSInvocation, Part I
- Friday Q&A 2013-02-22: Let's Build UITableView
- Friday Q&A 2013-02-08: Let's Build Key-Value Coding
- Friday Q&A 2013-01-25: Let's Build NSObject
- Friday Q&A 2013-01-11: Mach Exception Handlers
2012 36
- Friday Q&A 2012-12-28: What Happens When You Load a Byte of Memory
- Friday Q&A 2012-12-14: Objective-C Pitfalls
- Friday Q&A 2012-11-30: Let's Build A Mach-O Executable
- Friday Q&A 2012-11-16: Let's Build objc_msgSend
- Friday Q&A 2012-11-09: dyld: Dynamic Linking On OS X
- Friday Q&A 2012-11-02: Building the FFT
- Friday Q&A 2012-10-26: Fourier Transforms and FFTs
- Friday Q&A 2012-10-12: Obtaining and Interpreting Audio Data
- Friday Q&A 2012-09-28: Optimizing Flood Fill
- Friday Q&A 2012-09-14: Implementing a Flood Fill
- Friday Q&A 2012-08-31: Obtaining and Interpreting Image Data
- Friday Q&A 2012-08-24: Things You Never Wanted To Know About C
- Friday Q&A 2012-08-10: A Tour of CommonCrypto
- Friday Q&A 2012-07-27: Let's Build Tagged Pointers
- Friday Q&A 2012-07-06: Let's Build NSNumber
- Friday Q&A 2012-06-22: Objective-C Literals
- Friday Q&A 2012-06-01: A Tour of PLWeakCompatibility: Part II
- Friday Q&A 2012-05-18: A Tour of PLWeakCompatibility: Part I
- Solving Simulator Bootstrap Errors
- Friday Q&A 2012-05-04: PLCrashReporter and Unwinding the Stack With DWARF, Part 2
- Friday Q&A 2012-04-27: PLCrashReporter and Unwinding the Stack With DWARF
- Friday Q&A 2012-04-13: Nib Memory Management
- Introducing PLWeakCompatibility
- Friday Q&A 2012-03-16: Let's Build NSMutableDictionary
- Friday Q&A 2012-03-09: Let's Build NSMutableArray
- Friday Q&A 2012-03-02: Key-Value Observing Done Right: Take 2
- Friday Q&A 2012-02-17: Ring Buffers and Mirrored Memory: Part II
- Deadlocks and Lock Ordering: a Vignette
- Friday Q&A 2012-02-03: Ring Buffers and Mirrored Memory: Part I
- Friday Q&A 2012-01-20: Fork Safety
- The Mac Toolbox: Followup
- Plausible Labs is Hiring
- Friday Q&A 2012-01-13: The Mac Toolbox
- Buy Videos of My VTM Presentations
- Friday Q&A 2012-01-06: The Hopper Disassembler
- Avoid Apress
2011 35
- Friday Q&A 2011-12-30: Disassembling the Assembly, Part 3: ARM edition
- Friday Q&A 2011-12-23: Disassembling the Assembly, Part 2
- Friday Q&A 2011-12-16: Disassembling the Assembly, Part 1
- Friday Q&A 2011-12-02: Object File Inspection Tools
- Testing Hashcash-Based Anti-Spam Measures
- No Article For you!
- Friday Q&A 2011-11-11: Building a Memoizing Block Proxy
- Friday Q&A 2011-10-28: Generic Block Proxying
- Friday Q&A 2011-10-14: What's New in GCD
- Friday Q&A 2011-09-30: Automatic Reference Counting
- Friday Q&A 2011-09-16: Let's Build Reference Counting
- Friday Q&A 2011-09-02: Let's Build NSAutoreleasePool
- Friday Q&A 2011-08-19: Namespaced Constants and Functions
- See Me Speak at Voices That Matter in Boston
- Friday Q&A 2011-08-05: Method Signature Mismatches
- Friday Q&A 2011-07-22: Writing Unit Tests
- Friday Q&A 2011-07-08: Let's Build NSNotificationCenter
- Friday Q&A Delayed Again
- Friday Q&A 2011-06-17: gdb Tips and Tricks
- Friday Q&A 2011-06-03: Objective-C Blocks vs. C++0x Lambdas: Fight!
- Friday Q&A 2011-05-20: The Inner Life of Zombies
- Friday Q&A 2011-05-06: A Tour of MABlockClosure
- Friday Q&A Falls Behind
- Friday Q&A 2011-04-15: Compile-Time Tips and Tricks
- Link: Implementing imp_implementationWithBlock
- Friday Q&A 2011-04-01: Signal Handling
- Friday Q&A 2011-03-18: Random Numbers
- See Me Speak at Voices That Matter in Seattle
- Friday Q&A 2011-03-04: A Tour of OSAtomic
- Friday Q&A 2011-02-18: Compound Literals
- Complete Friday Q&A Direct-Sell ePub, PDF, and Print on Demand
- Writing the Complete Friday Q&A
- Complete Friday Q&A Now Available
- Rogue Amoeba Is Hiring Again
- Friday Q&A 2011-01-04: Practical Floating Point
2010 41
- Friday Q&A 2010-12-31: C Macro Tips and Tricks
- Friday Q&A 2010-12-17: Custom Object Allocators in Objective-C
- Friday Q&A 2010-12-03: Accessors, Memory Management, and Thread Safety
- Friday Q&A 2010-11-19: Creating Classes at Runtime for Fun and Profit
- Summary of the Current State of my Publications
- Friday Q&A 2010-11-6: Creating Classes at Runtime in Objective-C
- Friday Q&A Will Return
- Cocoa Unbound
- Friday Q&A 2010-08-27: Defensive Programming in Cocoa
- Friday Q&A 2010-08-12: Implementing NSCoding
- Friday Q&A 2010-07-30: Zeroing Weak References to CoreFoundation Objects
- Friday Q&A 2010-07-16: Zeroing Weak References in Objective-C
- Introducing MAZeroingWeakRef
- Friday Q&A 2010-07-02: Background Timers
- Blocks and GCD in Russian
- Friday Q&A 2010-06-18: Implementing Equality and Hashing
- Friday Q&A 2010-05-28: Leopard Collection Classes
- Some Light Reading
- iPhone Apps I Can't Have
- Friday Q&A 2010-05-14: What Every Apple Programmer Should Know
- Another Week Without Friday Q&A
- Friday Q&A 2010-04-30: Dealing with Retain Cycles
- Friday Q&A 2010-04-23: Implementing a Custom Slider
- Mistakes and Chains of Events
- Friday Q&A 2010-04-16: Implementing Fast Enumeration
- An Objective-C Continuations Library
- Friday Q&A 2010-04-09: Comparison of Objective-C Enumeration Techniques
- Friday Q&A 2010-04-02: OpenCL Basics
- And Again
- Friday Q&A Skips a Week
- Friday Q&A 2010-03-12: Subclassing Class Clusters
- Friday Q&A 2010-03-05: Compound Futures
- Friday Q&A 2010-02-26: Futures
- Friday Q&A 2010-02-19: Character Encodings
- Friday Q&A 2010-02-12: Trampolining Blocks with Mutable Code
- Friday Q&A 2010-02-05: Error Returns with Continuation Passing Style
- Friday Q&A 2010-01-29: Method Replacement for Fun and Profit
- Friday Q&A 2010-01-22: Toll Free Bridging Internals
- Friday Q&A 2010-01-15: Stack and Heap Objects in Objective-C
- Friday Q&A 2010-01-08: NSNotificationQueue
- Friday Q&A 2010-01-01: NSRunLoop Internals
2009 55
- Rogue Amoeba Is Hiring
- Friday Q&A 2009-12-18: Highlights From a Year of Friday Q&A
- Friday Q&A 2009-12-11: A GCD Case Study: Building an HTTP Server
- Friday Q&A 2009-12-04: Building Standalone iPhone Web Apps
- Friday Q&A 2009-11-27: Using Accessors in Init and Dealloc
- Friday Q&A 2009-11-20: Probing Cocoa With PyObjC
- Deconstructing Apple's Copyright and Trademark Guidelines
- Friday Q&A 2009-11-13: Dangerous Cocoa Calls
- Friday Q&A 2009-11-06: Linking and Install Names
- Friday Q&A 2009-10-30: Generators in Objective-C
- Friday Q&A 2009-10-23: A Preview of Coming Attractions
- Friday Q&A 2009-10-16: Creating a Blocks-Based Object System
- Friday Q&A 2009-10-09: Defensive Programming
- XBolo is Out!
- Friday Q&A 2009-10-02: Care and Feeding of Singletons
- Friday Q&A 2009-09-25: GCD Practicum
- Friday Q&A 2009-09-18: Intro to Grand Central Dispatch, Part IV: Odds and Ends
- The iPhone Development Story: One Year Later
- Friday Q&A 2009-09-11: Intro to Grand Central Dispatch, Part III: Dispatch Sources
- GCD Is Not Blocks, Blocks Are Not GCD
- Friday Q&A 2009-09-04: Intro to Grand Central Dispatch, Part II: Multi-Core Performance
- Objective-C Runtime Podcast Episode at Mobile Orchard
- Friday Q&A 2009-08-28: Intro to Grand Central Dispatch, Part I: Basics and Dispatch Queues
- Unicode Comments Support
- Friday Q&A 2009-08-21: Writing Vararg Macros and Functions
- Reading Between the Lines of Apple's FCC Reply
- Friday Q&A 2009-08-14: Practical Blocks
- Friday Q&A 2009-07-17: Format Strings Tips and Tricks
- Friday Q&A 2009-07-10: Type Specifiers in C, Part 3
- Friday Q&A 2009-07-03: Type Specifiers in C, Part 2
- Friday Q&A 2009-06-26: Type Qualifiers in C, Part 1
- Friday Q&A 2009-06-19: Mac OS X Process Memory Statistics
- Friday Q&A 2009-06-05: Introduction to Valgrind
- Friday Q&A 2009-05-22: Objective-C Class Loading and Initialization
- Use NSOperationQueue
- Nanogolf
- Friday Q&A 2009-05-01: On Hold
- Friday Q&A 2009-04-24: Code Generation with LLVM, Part 2: Fast Objective-C Forwarding
- Friday Q&A 2009-04-17: Code Generation with LLVM, Part 1: Basics
- Friday Q&A 2009-04-10: Multithreaded Optimization in ChemicalBurn
- Friday Q&A 2009-04-03: On Hold
- Friday Q&A 2009-03-27: Objective-C Message Forwarding
- Friday Q&A 2009-03-20: Objective-C Messaging
- Friday Q&A 2009-03-13: Intro to the Objective-C Runtime
- Friday Q&A 2009-03-06: Using the Clang Static Analyzer
- Friday Q&A 2009-02-27: Holistic Optimization
- Friday Q&A 2009-02-20: The Good and Bad of Distributed Objects
- Friday Q&A 2009-02-13: Operations-Based Parallelization
- Late Night Cocoa: NSOperationQueue Problems
- Friday Q&A 2009-02-06: Profiling With Shark
- Friday Q&A 2009-01-30: Code Injection
- Friday Q&A 2009-01-23
- Friday Q&A 2009-01-16
- Friday Q&A 2009-01-09
- Friday Q&A 2009-01-02
2008 24
- Friday Q&A 2008-12-26
- Friday Q&A 2008-12-19
- Friday Q&A
- RAOperationQueue, an open-source replacement for NSOperationQueue
- Don't Use NSOperationQueue
- Key-Value Observing Done Right
- The How and Why of Cocoa Initializers
- It's a Poor Carpenter Who Blames His Tools or: Xcode Sucks Again
- The iPhone Development Story
- NetAwake
- Late Night Cocoa
- Welcome to iPhone: Your Crappy Mac of Tomorrow, Today!
- WWDC 08 Followup
- Worst. Keynote. Ever.
- WWDC 2008
- Tales from the Sausage Factory: Why Those Big Downloads for Simple Updates?
- Deconstructing the iPhone SDK: Malware
- Performance Comparisons of Common Operations, iPhone Edition
- Use strnstr
- Deconstructing the iPhone SDK: No Multitasking
- Code Signing and You
- Goodbye, Nibs
- A Tool for Editing Version-Controlled Bundles
- Performance Comparisons of Common Operations, Leopard Edition