502 articles ∙ 100 categories
- Blogging
- Octopress
- Mac
- Python
- iOS
- macOS
- API
- Design
- Testing
- Scala
- Play!
- Heroku
- Books
- Startups
- Tools
- Git
- Cloud
- AppEngine
- Graphics
- Mobile
- Java
- GAE
- Dotcloud
- AWS
- Android
- Opensource
- OpenCV
- WWDC
- Node
- App Review
- PHP
- Localization
- Marketing
- VPS
- Wordpress
- node
- Parse
- CoreData
- HTML
- Swift
- fastlane
- Golang
- Website
- Github
- Tests
- vim
- ruby
- git
- Docker
- Jekyll
- Instruments
- Architecture
- Coding
- Apple
- Softskills
- Xcode
- Pitfalls
- Development
- Product
- UIKit
- bash
- React Native
- startup
- watchOS
- Rant
- Playground
- UI
- Tips
- Carthage
- Database
- Certs
- Foundation
- Notifications
- Apps
- bug
- xcode
- tips
- App Store
- Rejections
- Apple Search Ads
- Singapore
- Life
- Conference
- SwiftUI
- Core Data
- Algorithm
- Combine
- SPM
- Photo
- UIScene
- deeplink
- WidgetKit
- Interview
- iPhone
- HealthKit
- Blockchain
- CI
- Advertising
- Safari
Blogging
- Transferring Domains From Namecheap to Google Domains
- I bought samwize.com for 99 cents
- Switched Wordpress to Octopress
Octopress
- Migrating Octopress to Jekyll with Github Pages
- New Theme for samwize.com
- Migrating Octopress 2 to Octopress 3
- Reinstall Octopress on a new system
- Updated Octopress - twitter no longer working
- How to remove a commit that is already pushed to Github
- Fix rake error: You have already activated rake x.x.x
- New Theme for Octopress
- Octopress would not deploy
- Octopress Table Stylesheet
- I bought samwize.com for 99 cents
- How to setup Octopress on Github Pages
- Switched Wordpress to Octopress
Mac
- Use SMB (and Disable AFP) to Connect your Mac to NAS
- How to Enable Sidecar for the Unsupported Macbooks
- Mac Tips: Using Finder to Rename Multiple Files, Etc
- Guide to Booting Up macOS in Other Modes, and Troubleshooting
- The correct way to type quotation marks (the curly kind)
- Know the actual exact commands for an alias
- Install Rupa z to replace your command line CD
- Load dotfiles .aliases in zsh
- Getting Started with Zsh
- Getting Started with Dotfiles
- iMac Shutdown Suddenly and Randomly
- Mac Right Click using Keyboard Shortcut
- Show hidden files in Finder for Mountain Lion
- Clean install iMac on Mountain Lion
- Apple Trackpad 4 finger swipe up/down not working
- Migrating old Mac to new Mac
- Wifi Scanner for Mac OSX (Mountain Lion)
- Xcode 4.5 Tips & Tricks
- Hide "All My Files" in Mac's Finder
Python
- A Python Tool to extract email
- Phewtick API - Message to any user you want
- Python Unit Testing with nosetests
- What is Python's Lambda and Closure
- How to write Getter/Setter for static variables
- How you should write getter/setter for Python
- Non-ASCII Character in Python File
- Sphinx – Documentation for Python
iOS
- Improve App Launch Time 2022 Edition
- How to Handle 3D Touch Shortcut for UIScene
- Pitfall: URL for Local Files
- iOS Conf SG 2020 Videos
- Supporting Dark Mode in iOS 13
- How to Rotate Only Selected Views (like Camera app)
- Setup SceneDelegate Without Storyboard
- How to Animate Auto Layout Constraints (2019)
- Spotlight Indexing for Your App Content
- How my iOS Code evolved in Last 10 Years
- What is Bundle?
- Setup AppDelegate Without Storyboard
- Setting Up Travis CI With Fastlane for iOS Project
- Localization - Fallback to Base Language
- Developer Guide to Support iPhone X
- Guide to Universal Links
- How to Change iOS App Icon Programmatically (iOS 10.3)
- Tip: Debugging UI Calls in Background Threads
- Creating a Autoresizing UITableView Programmatically
- Guide to UICollectionView With Custom Layout
- UIKit Dynamics Guide
- Core Animation Guide
- Pitfall: Using WKWebView for Facebook Login
- On-Demand Resources Guide
- UISearchController Development Guide
- Continue Network Fetching Even When App Goes to Background
- Pitfall With Opening Universal Link
- The Thing About Top & Bottom Autolayout Guide
- Drawing Images With UIBezierPath
- Out of Memory Crashes
- MVVM for iOS & Swift
- How to Capture Multiple Groups in a Regex With Swift
- Good Architecture for iOS App
- Complete Guide to Implementing WKWebView
- Resize UIImage in Swift
- Finding Retain Cycle With Instruments
- Finding Memory Leak Using Instruments
- NSAttributedString, HTML and Unicode Encoding
- Auto Adjust UITableViewCell Height
- Dynamic Type to Adjust Text Sizes & Fonts Automatically
- Integrating Static Library With Cocoapods Use_frameworks
- Making Tab Bar Slide When Selected
- Pitfall: Handling Core Data NSManagedObjectContext in Threads
- Tutorial on Creating App Shortcut With 3D Touch
- Pitfall: Core Graphics Drawing Blurry Lines
- Using Custom UICollectionViewCell Xib in Storyboard
- About App Link (branch.io)
- The bug with UICollectionView Content Offset
- How to Handle Button/views Interaction in a UITableViewCell
- Everything About ErrorType - the Thing That Swift Throw
- Using UIPageViewController With Custom UIPageControl
- How to Create Multiple Tappable Links in a UILabel
- Everything About UIActivityViewController
- Everything About Xcode UI Testing
- Pitfall With UI Testing Record Button Disabled
- Everything About UITableView and UITableViewCell
- Adding Header/Footer to UICollectionView Using Storyboard
- Pitfall With Unwrapping Optional of an AnyObject
- Using Swift Code in Existing Objective-C Project
- What I Know About Provisioning Profile
- Automate Screenshots Capture Using Snapshot (via Xcode UI Testing)
- The Buggy UISplitViewController
- Understanding UICollection Flow Layout
- Guide to Customizing UITableView Section Header/Footer
- A Guide to NSNumberFormatter
- Implementing NSFetchedResultsController in Swift
- How to Handle Units (Such as Mass & Length) Using HealthKit
- Guide to Using UIPageViewController
- How to Create UIPageViewController in Storyboard
- Guide to Hosting Your Own Private Cocoapods Framework
- How to handle remote notification with background mode enabled
- How to really clean your Xcode build
- Pitfall: Parse Circular Dependency Error and Bidirectional Relationship
- Guide on using OCMock
- Pitfall: Using UIActionSheet (or UIAlertController) and first tap does not work
- Pitfall: Creating Parent/Abstract Entitiy in Core Data
- How to create retina banner ads for MoPub line item
- How to make an expandable header image in a UIScrollView
- Everything About NSDateFormatter
- How to handle keyboard hide/show events in your view
- Using appledoc to generate documentation for project
- Guide to using Unwind Segues
- Guide to using PromiseKit
- UIScrollView Content View Contraints
- Always Needed Guide to Customize UINavigationBar
- Long Standing Bug With Using UIScreenEdgePanGestureRecognizer Created with Xcode Interface Builder
- ITMS-90203 iTunes Connect Error: Require arm64 architecture
- Loading (Encrypted) Custom Fonts in iOS
- Using SWRevealViewController together with RBStoryboardLink
- Setting up SWRevealViewController
- Xcode Commands to build app and run on simulator
- Pitfall: NSLayoutConstraint breaking in UICollectionView
- Pitfall: Release Scheme optimizes code
- How to break into multiple storyboards in a project
- Pitfall: Extensions MUST be built for iPhone/iPad
- Bumping Build Number
- Fastlane - replacing ui-screen-shooter and screenshot uploader
- Projects, Workspace, Embedded Framework and CocoaPods
- How to make Swift, Objective-C and Cocoapods work together
- Pitfall - If Xcode does not show simulators to run, or think it is a Mac app
- Everything about UIStatusBar
- What is Build Active Architecture Only
- UIStatusBar with light content style not working - pitfall
- How to securely store secret keys in iOS app
- How to solve Error 3014 when updating your iPhone/iOS got stuck?
- The new iPhone 6 Plus device resolution
- Error with Facebook Login using test users
- Error: CoreData could not fulfill a fault. NSObjectInaccessibleException
- Animating Autolayout Constraints
- How to add, edit and remove iOS calendar events
- Implementing NSFetchedResultsController for UICollectionView
- The Rules for using External Storage in Core Data
- Where is your Simulator database stored on your Mac?
- Auto Increment Build Number in Xcode
- How to upload (many) localized screenshots to iTunes Connect
- Create Multiple Targets/Apps for 1 Xcode Project
- Resolving CocoaPods build error due to targets building for only active architecture
- First taste with visual language format
- Deep Copying of NSArray/NSDictionary/Any Object
- Tutorial on using AFNetworking 2.0
- The Package Manager for Xcode - Alcatraz
- What happens when you change your minimum deployment target?
- Internal error. Cannot find an outgoing row head for incoming head
- Difference between Build and Version in iOS
- Everything about iOS Localization
- If your base storyboard with localizable.strings is not working
- Implementing NSFetchedResultsController with MagicalRecord
- How to save using MagicalRecord
- Copy and move sqlite database from device to simulator
- Step-by-step Guide to using MagicalRecord and mogenerator
- Dismiss keyboard when tap outside a UITextField/UITextView
- Tip: Use Xcode Snippets
- How to use UIScrollView with Autolayout
- Why I am not going to use ReactiveCocoa
- How to add your own library to cocoapods
- Everything about custom fonts for iOS development
- Camera Programming for iOS 7
- Mobile Developer Economics 2014
- iOS Support Matrix
- Where to store CoreData sqlite file - and avoid Apple App review rejection
- Auto-renewable Subscription will expire much quicker in sandbox environment
- iTunes File Sharing - Expose Documents Directory
- iOS Data Storage Guidelines - and how to resolve iTunes Connect Reject
- Crash when using ChartboostInterstitialCustomEvent in MoPub: unrecognized selector requestAdWithSize
- Remember to enable iAd for new iOS apps after uploading binary
- Fix cocoapod error: the platform of the target pods is not compatible
- Using OpenCV to match template multiple times
- armv7s build for tesseract and opencv2
- What is the replacement for iOS UDID?
- How to run iOS 4.3 Simulator on Mountain Lion?
- POST Request to UIWebView
- Auto fill Username & Password fields in UIWebView
- Set User Agent for UIWebView
- Queue HTTP Operations with AFNetworking
- Code Change Needed in iOS 6
- How to replicate iOS Crash feedback from Apple
- iOS Developer Tips 2013
- iOS Devices Cheat Sheet
- Enable NSZombie for Debugging Crashes
- 7 iOS Custom Popup Views
- Tips on making iOS App Icons
- Create Async Test with GHUnit
- WARNING: Do not use Base Internationalization in iOS 5
- iOS Adhoc Distribution with the new Xcode
- Which Ad Network to use in iOS?
- My Custom Localization and genstrings
- iOS Accessibility Guide for Developers
- iOS Guide to Multiple Device Resolutions
- Simple GET/POST AFNetworking
- Error: Application Executable Missing Required Architecture
- Updating App for iPhone 5
- How to setup GHUnit with CocoaPods
- SenTestingKit does not support wait for blocks
- App Store Changes in iOS6
- Unit Tests with CocoaPods
- Singleton/SharedInstance Template for iOS 5 (ARC and GCD)
- API Design Rules for iOS/OS X
- Xcode 4.5 Tips & Tricks
- Paros - a mitmproxy with GUI for sniffing HTTP traffic
- Adding and Using Custom Font in iOS
macOS
- Issues with macOS Catalyst
- Info.plist for a macOS Command Line App
- Catalina Beta Bug: Deleting Files Did Not Free Up Disk Space!
- Binding With Array Controller
- Rejection: App Name Not Good Enough
- Closing a Modal Window
- Tools for macOS App Development Is Limited
- Guide to Binding NSTableView to Core Data
- Drag and Drop to Reorder NSTableView
- Creating a Custom NSView With Xib
- Guide to NSFetchedResultsController With NSTableView (macOS)
- How to Tab to Next Row in NSTableView (View-based Solution)
- Unit Tests with CocoaPods
- API Design Rules for iOS/OS X
API
- How to use URLProtocol to mock networking API
- Guide to Moya for API Services and Testing
- How Oracle screwed me for 2 months with an UNDERSCORE
- API Design Rules for iOS/OS X
Design
Testing
- Disconnect your app from unit testing
- Guide to in-app purchase testing (sandbox & production)
- Guide to Moya for API Services and Testing
- UI Testing With BrowserStack Cloud Devices
- Create Async Test with GHUnit
- SenTestingKit does not support wait for blocks
- Unit Tests with CocoaPods
Scala
- Why I hate Scala
- Scala Tutorial (Part II)
- Scala + Play! Development Guide
- Configure your local environment for Scala on Heroku
- A short Scala tutorial for Java Developers
Play!
- Scala Tutorial (Part II)
- Scala + Play! Development Guide
- Configure your local environment for Scala on Heroku
Heroku
Books
Startups
Tools
Git
- How to Use Git Bisect to Find the First Bad Commit
- Squashing Multiple Commits into One
- How to setup git server (GitLab), with SSL
- Add git submodule to a local repos url
- Difference between Git checkout, revert and reset
- How to remove a commit that is already pushed to Github
- Find all .git in a directory
- Where is global gitignore?
- How to migrate SVN to Git
- Common Git Usage
Cloud
AppEngine
- Migrating App Engine to Go 1.12
- Installing Java 7 for Eclipse
- App Engine Unused Discounted Instance Hour
Graphics
Mobile
Java
GAE
Dotcloud
AWS
Android
- Android Workshop 2013
- Android use-feature element is case sensitive
- Why an Android app is not supported for a particular device?
- Android Developement Refresher 2013
Opensource
OpenCV
WWDC
- Download All WWDC 2020 Videos
- My First WWDC
- Swift Script to Download All WWDC 2016 Videos and PDFs Automatically
- How to download all WWDC 2015 PDF Slides Only
- Download all WWDC 2014 PDF Slides only
- WWDC 2013 - download sessions directly
Node
- Fix npm/bower install with su
- Node.js request module with gzip/gunzip
- What mongoose never explain to you (on case sentivity)
- How to use Node.js Debugger
- Bus error when grunt watch - Update your node
- Guide to creating a command line tool with node.js
- A guide to mocha's describe(), it() and setup hooks
- Relative path when using require and fs for node.js
- The best documentation generator for Node
- Mocha - the most popular testing framework for node
- Use Async Library to Improve your spaghetti-nested-asynchronous-functions
- How to use Jade templating in Express
- How to pass a variable into a callback function in Node.js
- Simple HTTP GET/POST Request in Node.js
- Getting started with node.js scripting
App Review
- Do NOT Implement Google UMP for iOS 14 IDFA
- Rejection: App Name Not Good Enough
- App Review Now Bans Facebook Single Sign-On
- Where to store CoreData sqlite file - and avoid Apple App review rejection
PHP
Localization
- Localization - Fallback to Base Language
- How to upload (many) localized screenshots to iTunes Connect
- Everything about iOS Localization
- If your base storyboard with localizable.strings is not working
Marketing
VPS
- Setup Your Own $5 VPN With Docker, OpenVPN and Digital Ocean
- Increase Ubuntu Swap Space
- How to setup git server (GitLab), with SSL
- Setting up an email server for multiple subdomains (on Digital Ocean)
- Cannot restart mysql for Digital Ocean server (low memory)
- Installing multiple node apps on VPS
- Running Nginx with Apache, with reverse proxy
- How to setup multiple Wordpress (or domain) with 1 server instance
- Migrating from shared webhost to VPS (for Wordpress)
Wordpress
- How to setup multiple Wordpress (or domain) with 1 server instance
- Migrating from shared webhost to VPS (for Wordpress)
node
Parse
- Error with Facebook Login using test users
- Terrible Parse Error Object
- Pitfall with using Anonymous User in Parse
- Parse Custom Error Not Possible
- Parse error 141: Uncaught userId must be a string
CoreData
HTML
Swift
- How to get/set keypath using string
- Swift public vs final vs open
- Should you add final to all your Swift classes?
- Replacing if let in Swift 5.7
- PITFALL: Beware of retain cycle when passing a func as a closure parameter
- How to inject a property
- How to use URLProtocol to mock networking API
- When should you raise your iOS Deployment Target/minimum version?
- Swift 5.6 warning on self
- URLSession with new async/await
- Structured Concurrency in Swift 5.5
- New Property Wrapper in 2020
- How to Add a Local Swift Package
- How to Generate PDF With Images
- Integrate Swift Package Manager for iOS & macOS Projects
- Swift Lint to Improve Code Quality
- Steps to Create Swift Framework + Cocoapods
- Guide to Using Codable Struct for JSON
- Migrating to Swift 4 and @objc
- WWDC 2017 - What's New in Foundation
- Access Levels in Swift
- Migrating an iOS Project From Objective-C to Swift
- Swift Package Manager Development Guide
- The Thing About Responder Chain
- Swift Protocol Development Guide
- Swift Is a Protocol Oriented Programming Language
- Reference Cycle for Closures
- Mocking in Swift
- Swift Script to Download All WWDC 2016 Videos and PDFs Automatically
- Advanced Swift Scripting
- Resize UIImage in Swift
- Introduction to Scripting in Swift
- Pitfall: Swift Variadic Parameters and Array
- Using Swift in Existing Objective-C Project
- How to make Swift, Objective-C and Cocoapods work together
fastlane
- The best way to bump build number in CI
- Fastlane is in shambles
- Bump Version Numbers
- How to Renew Cert for Fastlane Match
- Bumping Build Number
Golang
- Migrating App Engine to Go 1.12
- How to use Reflect to set a struct field
- Golang Testing
- Golang: interface is also a type
Website
- Load Web Fonts Asynchronously (for Webpages)
- Embedding YouTube on Website and Loading Lazily
- How to Setup Free SSL for Github Pages
- How to host a website on Github Pages
Github
- Speed up pods & gem install in Github Action
- Run Github Action when tag is pushed on a specific branch
- How to create a GitHub Action to upload dsyms
- Managing multiple github SSH keys on mac
- How to Setup Free SSL for Github Pages
- How to host a website on Github Pages
Tests
vim
ruby
git
- How to git clone all repositories of a user
- Should you squash merge in a pull request (PR)?
- How to resolve merge conflicts for long-lived branches
- A gitattributes template for Xcode projects
- Have Fun With Git Lol Commits
Docker
Jekyll
Instruments
Architecture
- Complexity & Out of the Tarpit
- MVVM for iOS & Swift
- Good Architecture for iOS App
- Refactor a Mega View Controller - A Live Coding!
Coding
Apple
Softskills
Xcode
- Why you should use OSLog in 2023
- No more Info.plist & Launch Storyboard
- Xcode Header Template for Swift Packages
- The dumbest thing about imageLiteral
- Reducing Xcode debugger logs
- How to launch iPhone simulator with arguments
- Asset Catalog and Dark Mode
- A gitattributes template for Xcode projects
- How to use a different Swift toolchain in Xcode
- How to code sign on CI along with Xcode auto sign
- Using xcconfig to Configure to Your Developer Account
- Navigating Xcode 12 and Tabs
- Regex Replace Using Atom
- What Is Wrong With Xcode 12 Tabs
- Ideal Xcode Project Structure
- Additional Tools for Xcode
- How to Make Xcode Run Faster
- Migrating to Swift 4 and @objc
- Xcode 8 File Templates
- Guide to Installing KZPlayground/Code Injection for Xcode
Pitfalls
Development
Product
UIKit
- PITFALL: Removing arranged subview in UIStackView
- How to create table using UICollectionView
- UIKit Dynamics Guide
bash
React Native
- What Steve Jobs Thinks of React Native
- Calling a View Controller Function From React Native
- Why I Hate React Native
- Guide to Integrating CodePush for iOS React Native Project
- React Native for iOS Swift Developer
startup
watchOS
Rant
Playground
UI
- Improve UI Performance: Render Hitch
- Nested UIViewControllers Using Container
- Guide to Creating Custom UIView
Tips
Carthage
Database
Certs
Foundation
- URLSession with new async/await
- Structured Concurrency in Swift 5.5
- Exponential Power in Swift
- Fundamentals of Swift Collections
- Guide to Using FileManager
- Using URLSession for simple HTTP GET & POST
- UndoManager
- App Group for Sharing Between Apps and Extensions
Notifications
Apps
bug
xcode
tips
App Store
- App Store changes in EU, allowing alternative marketplace
- PITFALL: App Tracking Transparency prompt not showing
- Warning if You Use HealthKit, Another App Review Rejection
- App Store Expects Developers to bring in Revenue 🤣
- Bet You Didn't Know: You Don't Need 5.5 Inch Screenshots for App Store
- Guide to Submitting Promotional Artwork to App Store Connect
- I'm Not Surprise With App Store Review Rejections Anymore
Rejections
- PITFALL: App Tracking Transparency prompt not showing
- Warning if You Use HealthKit, Another App Review Rejection
- Bet You Didn't Know: You Don't Need 5.5 Inch Screenshots for App Store
- I'm Not Surprise With App Store Review Rejections Anymore
Apple Search Ads
Singapore
Life
Conference
SwiftUI
- SwiftUI Observable in iOS 17
- AppDelegate template for a multiplatform SwiftUI app
- Pitfall of Nested ObservableObject
- AppStorage, and observing a Binding
- How to use Factory (DI) in SwiftUI
- How to use Combine
- How to communicate between SwiftUI and UIKit?
- NavigationView for iOS and macOS
- How to Present Full Screen Modal in SwiftUI
- SwiftUI and Data Flow
- New Property Wrapper in 2020
- 42 Most Common SwiftUI API That I Can't Remember
- Subscribing to @Published
- Wrapping UIView in SwiftUI
- Algorithm, and Moving Elements in an Array
- How to Bind an Array to Multiple TextFields?
- A Few Things About @State
- How to Use SwiftUI and Core Data
- Everything About List in SwiftUI
- How to use Binding in SwiftUI
- How to Use Preference
- How to use Environment and EnvironmentObject
- How to Layout in SwiftUI?
- Getting Started With SwiftUI
Core Data
Algorithm
Combine
SPM
Photo
UIScene
deeplink
WidgetKit
Interview
iPhone
HealthKit
Blockchain
CI
- The best way to bump build number in CI
- Speed up pods & gem install in Github Action
- How to code sign on CI along with Xcode auto sign
- Run swiftlint in pre-commit hook
- How to create a GitHub Action to upload dsyms
Advertising
- How to add Google interstitial ad
- How to add Google anchor ad
- Guide to integrating Google Ad Manager