Everett / everettjf
Everett’s blog
I’m Everett, also known as everettjf. I write about building software, exploring how things work, and lessons from work and life.
Earlier posts focus on Apple platforms, performance, and developer tools. This blog also has room for new experiments.
Recent thoughts in Chinese also appear on WeChat: 吃灰思考.
No matching articles. Try another title or choose All topics.
2022
2020
- Breakpoint Every UIPasteboard Method with LLDB
- How to Quickly List All +load Methods in an App
- LLDB: How to Set a Breakpoint at a Function's return
- When Does an Objective-C Object Held by a C++ Class Get dealloc'd?
- Exploring the Hidden Character (LRM) in WhatsApp's App Name
- Running Android on an iPhone: My Experience
- Redirecting iOS Standard Output to a UITextView
- Renaming Symbols with __asm__
- Is C++ Static Variable Initialization Inside a Function Thread-Safe?
- Why Does NSAssert Break at dispatch_once?
- Inspecting Objective-C Block Signatures with LLDB
2019
- dirtrace: Visualizing Directory Sizes with Chrome Tracing
- RemoBoard: Adding Browser-Based Typing
- Building RemoBoard: Typing on a Phone from a Computer
- iOS Launch Speed Optimization: Mach-O Binary Layout Reordering
- FolderSizeView: Visualizing Directory Sizes with a Treemap
- Exploring the Internal Implementation of Availability Checking (@available)
- Paste Keyboard: Stop WeChat Moments Text from Being Collapsed
- Messier: Tracing Objective-C Method Calls
- Basic Usage of Nanoscope, an Android Method Tracing Tool
- VSCode Extension: Quickly Open pub.dev Docs from pubspec Dependencies
- "App Version God": A Little App for Querying an App's Historical Versions
2018
- Year-End: Open-Sourcing 3 Little Apps
- iOS Launch Performance: A Reading Guide
- CodeFriend: Developing Xcode Extensions with JavaScript
- Comparing Four Ways to Get the Thread Identifier on iOS
- Exploring SpringBoard with AppleTrace
- Building QVKeyboard: Typing on iOS from a Mac
- A Look at the Simple LRU Cache Implementation in MMKV
- An Initial Exploration of the Relationship Between iOS LaunchScreen and Process Creation
- Analyzing How FastImageCache Works
- iOS Cross-Process Interaction: Dismissing the System Dictionary UI with a Pull-Down Gesture
- Adding a Close Button to the iBooks Word Lookup UI
- A Quick Overview of mmap: Principles and iOS Practice
- Notes on Jailbreaking iOS 11.3.1
- A Simple Model for Scheduling iOS Launch Tasks
- Hook All +load Methods (Including Categories)
- A First Look at the os_signpost API
- Implementing a Simple Thread Pool in C++
- Several Ways to Get the Current Time on the iOS Platform
- A Collection of iOS App Launch Performance Optimization Resources
- Releasing the Command-Line Version of the filterline Log Filtering Tool
- Installing the AppleTrace Tweak via Cydia
- Releasing Filter Line, a VSCode Log Filtering Extension
- iOS App Launch Performance Optimization (Part 1): The premain Stage
- iOS App Reverse Engineering Resource Collection
2017
- 2017 Year in Review
- Azeria Labs ARM Exploitation Challenges Stack1-5 Walkthrough
- MachOExplorer: Visualizing Mach-O Files
- AppleTrace Paired with MonkeyDev to Trace Any App
- AppleTrace: A Performance Analysis Tool
- Manually Decrypting iOS App Store Apps Using LLDB
- Setting Up an iOS 10 Jailbreak Development Environment Chinese
- Getting Started with LLVM Clang Plugins Chinese
- Generating a Framework Dependency Graph for a CocoaPods Project
- Spacemacs Getting-Started Summary
- A Method of Deferring Code Execution in the premain Stage
- A Method of Hooking C++ Static Initializers
- A Method of Hooking the Objective-C +load Method
2016
- 2016 Year in Review: Three Months After Joining Ant Financial
- Inferring the Source Directory Layout of WeChat iOS from __FILE__ Logs
- Exploring Facebook's iOS Client - The FBSessionGKs Section
- Exploring Facebook's iOS Client - The FBInjectable Section
- Exploring Facebook's iOS Client - The RODATA Section
- supotato: A Tool to Auto-Classify class-dump Header Files
- SegmentFault Hackathon 2016 Summary
- One-Year Summary of Switching from Windows to iOS Development
- Reverse Engineering the UI Implementation of WeChat's Chat Screen
- A Small Animation Glitch When the Keyboard Hides in a Chat UI
- iOS Debug Cheatsheet
- How to Build an RSS Reader App
- Debugging Notes on the symbolicatecrash Infinite Loop Bug
- Pitfalls of the Euro Sign € Compatibility Between CP936 and GB18030 Encodings
- Enterprise-Signed App Launches Slowly (Stuck on a Dark Icon for N Seconds)
- An Apple Developer Login Issue: A 2016 Support Experience
- Analyzing Delayed touchesBegan on a Secondary Page Inside the TabBar Area
- YYWebImage Source Code Reading Notes
- SDWebImage Source Code Reading Notes
- UITableView-FDTemplateLayoutCell Source Code Reading Notes
- YYCache Source Code Reading Notes
- The iOSBlog.cc Website: Origins, Goals, and Reflections on an iOS Blog Curation
- Building XSourceNote: Source Notes in Xcode
- In-App Purchase Integration Pitfalls and an Unresolved Question
- Calling a Perl Script via subprocess with Timeout Control under Python 2.7
2015
- Developing a Tweak to Save Alipay Chat Voice Messages
- Simple iOS Anti-Debugging and Anti-Anti-Debugging in Practice
- Defeating the ptrace Anti-Debugging Protection in the AMap iOS Client
- A Summary of Five Months Switching to iOS Development
- Optimizing UITableViewCell Automatic Height Calculation
- Summary of the SegmentFault Hackathon 2015 Beijing Stop
- Building XBookmark: Bookmarks for Xcode
- Building TabPageScrollView
- iOS Crash Collection and Analysis with PLCrashReporter
- iOS Continuous Integration with fastlane
- A Summary of Basic Redis Usage
- My Windows C++ Development Toolkit, 2010–2015
- A Comparison of Common Vim and Emacs Shortcuts
- Getting Started with Emacs: Notes and Pitfalls
- An OSX Getting-Started Notebook for Windows Programmers