All blogs / Mobile / iOS / Android
Roadfire Software
- Posts
- 225 from 12 Jan 2009 to 16 Dec 2025
- Posting
- now and then (4 in the last year)
- Kind
- personal blog
- Feed
- https://roadfiresoftware.com/feed/
2025 7
- How to Create a 30-Day Personal Action Plan for AI Safety
- Your open-source project is losing contributors before they even start. Here’s why – and how to fix it.
- How a Closed GitHub Issue Led to My First Contribution to Inspect AI
- A path into AI safety for software engineers
- 44 Attorneys General Stand Up to AI Companies. Is it enough?
- The Future of AI from BlueDot Impact
- The Search for More Meaningful Work
2024 1
2020 1
2019 1
2018 21
- Running unit tests from the command line with xcodebuild
- Xcode 9.4.1 cannot run unit tests for Frameworks on macOS Mojave
- WWDC 2018 What’s New in Testing Recap
- WWDC 2018 What’s New in Swift Recap
- WWDC 2018 What’s new in Cocoa Touch Recap
- WWDC 2018 Platforms State of the Union Recap
- WWDC 2018 Keynote Recap
- When to unit test private methods
- Can I unit test private methods?
- Roadfire Software
- How to unit test button taps on a view controller with XCTest
- What’s the difference between a mock and a stub, and how do you use them in Swift?
- How to write unit tests in Swift 4 with XCTest
- What are the benefits of unit testing?
- Not Using Automated Tests: Still a Systemic Problem for iOS Developers
- Why iOS developers don’t write unit tests
- What framework should I use to start unit testing on iOS?
- What’s the biggest mistake new iOS developers make when coding?
- How to parse JSON with Swift 4
- What’s the best way to learn iOS development with Swift?
- How to write a singleton in Swift
2017 6
2016 13
- How to parse JSON with Swift 3
- Cut your Swift build times in half with this one weird trick
- Testing asynchronous code in Swift with XCTest expectations
- WWDC 2016 podcast episodes for iOS developers
- Key takeaways for iOS developers from the WWDC 2016 Platforms State of the Union
- Key takeaways for iOS developers from the WWDC 2016 Keynote
- Navigating Apple’s WWDC from home
- How do you unit test REST calls in Swift?
- Recipe: Using Anchors to Place Views in iOS
- Avoid using class names in Swift’s #selector
- Tiny Swift Tip: Initializing Empty Arrays
- How to handle null JSON values in Swift
- Debunking the myths about parsing JSON in Swift
2015 38
- Year in Review 2015: The Year of Parsing JSON in Swift
- Reducing clutter in your JSON parser through proper typing
- How to test your JSON parser
- Why test your JSON parser?
- APOD App Rejection: Postmortem
- How to parse JSON with Swift 2
- Notes from WWDC 2015: Building Watch Apps
- Which books should I get to learn iOS?
- How to enable and view test coverage reports in Xcode 7
- How can you do TDD with Swift?
- How to refactor your Swift code using TDD
- Automatically resolving git merge conflicts in Xcode’s project.pbxproj file
- How to get components from a date in Swift
- Save your future self from broken apps by asking these questions BEFORE adding a third-party framework to your app
- Why not make the ViewModel the table view’s data source?
- Notes from WWDC 2015: Cocoa Touch Best Practices
- How to use typealias to make JSON parsing more readable in Swift
- How to get Xcode to stop generating copyright headers on your Swift files
- The Best Resources for Getting Things Done with iOS Development
- Top 10 things you need to know from WWDC 2015 as an iOS developer
- How generics in Swift can lead to safer, cleaner code
- How to Make Your Users Awesome: What I Learned from Reading BADASS
- 11 Xcode Keyboard Shortcuts to Make You More Productive
- How to size a table header view using Auto Layout in Interface Builder
- Will an iOS app run on a device the same way it does on the iOS simulator?
- How to scale an image view based on device size with Auto Layout in Interface Builder
- How to Change the Font for a Size Class in Interface Builder
- When you’re programming, how do you decide which approach to take to solve a problem?
- How to get an image to fill an image view – without any clipping
- Why you should sketch out your app before you ever open Xcode
- Should you use Storyboards on more complex apps?
- “Can I instantiate multiple instances of the same view controller from a Storyboard?”
- Top 10 tools I use to build iOS apps
- Land an iOS job by focusing on relationships
- The easy way to dismiss the keyboard in iOS
- What skills would I need for a job as an iOS developer?
- iOS Essentials: UITableView
- iOS Essentials: The UIViewController Lifecycle
2014 28
- Year in Review 2014: What I learned about building an audience, selling products, and productized consulting
- Wrap your head around optionals in Swift
- How do you distribute beta iOS apps to your team?
- What third-party libraries do you use for iOS development?
- Will Apple reject your app if it’s not unique?
- iOS UI: Choosing between Pickers and Table Views
- How to use git for iOS projects
- A safer approach to JSON parsing in Swift
- Swift’s var is not Objective-C’s id
- Swift: Strings aren’t objects
- Working with Generics in Swift
- How to write unit tests in Swift 1.x with XCTest
- From Banker to Freelance iOS Developer
- How to send messages (aka call methods) in Objective-C
- How to implement methods in Objective-C
- How to read (and write!) method declarations in Objective-C
- The problem with learning via gamification
- How to build a hybrid iOS app
- Everything you need to know about Xcode, Objective-C, and iOS to build iOS apps
- Five Great Reasons to Learn iOS and Objective-C
- When to use PhoneGap versus developing a native iOS app
- How to become a professional iOS developer
- Can I learn Objective-C without knowing C?
- How I Reduced a View Controller by ~100 Lines (from 400 to 300)
- Learn to build any iOS app you want with the Big Nerd Ranch Beginning iOS Bootcamp
- What’s your favorite service for tracking usage statistics in an iOS app?
- How to add Facebook and Twitter sharing to an iOS app
- The right way to check the iOS version in an app
2013 14
- Year in Review 2013: What I learned from launching one failed and one successful product (and a bit about coauthoring a book and consulting)
- Screencast: Testing Objective-C with the XCTest Framework
- Logging class and method names in Objective-C
- Using Regular Expressions to replace text in Xcode
- Developing for iOS 7 (and supporting iOS 6)
- Fonts in iOS 7
- Zero Inbox is available on the App Store!
- Increasing Your Productivity with Zero Inbox
- The Problem with Using LGPL v2.1 Code in an iOS App
- A case for switching to CocoaPods from Git Submodules
- Roadfire has a new address!
- Setting up Continuous Integration for iOS projects with Jenkins, CocoaPods, and Kiwi
- Switching from Git Submodules to CocoaPods
- How To Be a Better Freelancer: Listen to Your Clients
2012 8
2011 27
- iFonts 1.5 released with VoiceOver support
- Learn Thai Squiggles 1.1 released!
- New fonts in iOS 5
- The Solio Bolt
- Thanks, Steve
- Mac App Store & Xcode
- iPhone 4S
- Core Data – Getting more from your errors
- Your branch is ahead of ‘origin/master’ by 1 commit
- iFonts 1.4 has fonts in the email
- 7 Mac Apps I Love
- Why Kiwi for iOS testing
- Two Keyboard Shortcuts for 1Password in Safari
- Learn Thai Squiggles released!
- Learn Thai iPhone app submitted
- Backups
- Learning Thai on your iPhone
- Xcode 4 – Running a nib file in the iOS Simulator
- Xcode 4 issue with git
- Resident Dirty Memory in iOS
- Downgrading iPad from 4.2 to 3.2.2 on OS X
- iFonts 1.3
- Removing NSLogs on Release Builds
- How to Win Friends and Influence People
- GitHub fork of ShareKit
- Finding crash logs from your iPhone, iPad, or iPod touch
- MacBook + Samsung P2370HD
2010 43
- What did you ship in 2010?
- ClipMenu
- blockBUZZter 1.1!
- The story behind iFonts
- iFonts Price Change
- iFonts 1.1
- Git Delete Last Commit
- Blog Action Day 2010
- Fonts for iPad & iPhone
- iFonts 1.0 released!
- Downgrading iPad from 4.2 to 3.2.2 on OS X
- Undoing the last git commit
- NSZombieEnabled
- Shopify
- Google Apps is awesome!
- Sliding UITextFields around to avoid the keyboard
- iPhone – Flipping a view
- Why is my list black?
- Android XML include
- [UILabel sizeToFit]
- Essential Keyboard Shortcut for Numbers
- Build script for iPhone ad-hoc distribution
- Android – ignoring files from version control
- Tutorial: Turn Your Mac Into an AirPort Base Station
- The commuting paradox
- Quote: A very good senior programmer…
- Resolution for “fatal: unable to run ‘git-svn'”
- git gc: cleaning up after yourself
- Rework Trailer: Staying Late
- Review: Microsoft Office 2008 (Mac)
- Quote: OS X is the most productive development environment that I’ve ever used
- Git Aliases
- A case for git-svn (Git + Subversion)
- Subversion global-ignores
- Rework
- Martin Fowler: VcsSurvey
- Irrational
- Running an effective meeting
- Mac OS X tip: open current Terminal path in Finder
- A case for automated tests
- Cisco VPN on Snow Leopard
- Keyboard Shortcut for Maximizing a Window in XP
- SnakeYAML and Groovy
2009 17
- Running Linux commands from history
- We can be lifelong learners
- Making decisions
- Twitter is a waste of time
- Determining which versions of the iPhone SDK are installed
- The Duct Tape Programmer
- Who needs a mock framework?
- Brain Rules – Exercise boosts brain power
- Automation
- Leadership
- Decisions
- Failure
- Purple Cow: Transform Your Business by Being Remarkable
- Why TDD?
- Never Eat Alone
- Story time with easyb
- CodeMash 2009 Recap