For those not familiar, BuildSettingExtractor (BSE) is a free, open-source utility that provides a fast, easy way to extract build settings from an Xcode project into a set of xcconfig files.
(And even that description likely makes very little sense unless you develop software for Apple platforms.)
Reaching milestones like this make me reflect on the passage of time and think things like “How is it possibly ten years?”
So today I take a little walk down memory lane to celebrate the anniversary of BuildSettingExtractor.
Origin story
I was watching an NSScreencast episode by Ben Scheirman (friend and longtime guitarist in the Breakpoints) describing setting up xcconfig files.
Part of the episode demonstrated copying and pasting build settings out of Xcode into xcconfig files.
All of the copying and pasting made for a tedious process. In addition, at the time it also required a lot of manual clean up of the pasted values. (As of Xcode 16, pasted build settings are in valid xcconfig format.)
Months earlier I had been futzing around with some code I had written to extract build settings from an Xcode project but I had no intention of releasing it until I watched that episode.
It bothered me thinking about people going through a tedious, time-consuming, error-prone process, when I already had written some code that would do the same thing quickly and easily.
I cleaned up the existing code, added a user interface, and released BuildSettingExtractor 1.0 just a few days later on January 31, 2015 as an open source project.
A decade with the same simple interface. Drop an xcodeproj file on it—it spits out xcconfig files.
What does that setting do?
About ten days later the second release of BuildSettingExtractor quickly followed the first. This version added one of my favorite features: generating build setting info.
There are dozens upon dozens of build settings and it’s often not obvious how they behave. BuildSettingExtractor can annotate each setting with an explanatory comment gleaned from Xcode.
This info is available wherever you are looking at the xcconfig file—in GitHub, text editors, diff tools. No trip to a reference webpage or Xcode help is required to figure out what a build setting does.
For example:
// Enable Testability
//
// Enabling this setting will build the target with options appropriate for running
// automated tests against its product.
//
// This setting can be enabled when building targets for debugging if their products will
// be tested. This may result in tests running slower than otherwise.
//
// When this setting is enabled:
//
// * `GCC_SYMBOLS_PRIVATE_EXTERN` is disabled (`-fvisibility=hidden` will not be passed
// to `clang`).
// * `-enable-testing` is passed to the Swift compiler.
// * `-export_dynamic` is passed to the linker.
// * `STRIP_INSTALLED_PRODUCT` is disabled (`strip` will not be run on the produced
// binary).
ENABLE_TESTABILITY = YES
// Build Active Architecture Only
//
// If enabled, only the active architecture is built. This setting will be ignored when
// building with a run destination which does not define a specific architecture, such as
// a 'Generic Device' run destination.
ONLY_ACTIVE_ARCH = YES
For those who prefer a pithier xcconfig file, there is also a setting to turn these comments off.
Design goals
A decade ago, I set a few design goals which have guided each version of BuildSettingExtractor:
Safe
Focused
Easily Maintained
The design goals were driven primarily by the following:
The Xcode project file is a proprietary, unpublished format. Although the format has been remarkably stable for many years, it is still subject to change without warning at any time.
Time is limited and always at a premium. The less time required to maintain a piece of software the more likely it can be maintained over a long period of time.
From the beginning, safety has been an explicit goal. A user should never have to worry that BuildSettingExtractor would leave them with a corrupted or incorrectly formatted project file.
For that reason, BSE never changes the original project file. Extracting the build settings is a read-only operation.
This means that BuildSettingExtractor will generate xcconfig files, but it is up to the user to set up their Xcode project to use the configuration files.
I periodically think about adding this functionality to BSE to automate the project setup.
And, every time, I come back to those initial design goals and decide against it.
Beautifully, Unapologetically Objective-C
The app began in Objective-C and has stayed that way.
The initial choice was because the core functionality was already in Objective-C and I was very familiar with the Obj-C AppKit APIs.
At the time Swift 1.0 had only been released for four months and I was trying to use what I already knew well to release the app quickly, as opposed to using the app as a way to learn Swift.
Looking back at the last ten years, developing in Swift and Objective-C have been two very different experiences.
Swift brings with it many great language features as well as a lot of excitement.
But one major benefit of choosing Objective-C has been stability.
If I had written BuildSettingExtractor in Swift a decade ago the code base would have needed to do major migrations to Swift 3, Swift 4, a minor one to Swift 5, and now to Swift 6.
Throughout that time, the Obj-C code has just kept working with a minimum of fuss.
I have considered migrating to Swift and SwiftUI, but as long as the tool continues to work as intended without requiring a great deal of maintenance, there are plenty of other things to spend time on.
And finally, maintaining BuildSettingExtractor keeps me from forgetting how to write Objective-C.
What’s next for BuildSettingExtractor?
The main thing that has been on my to-do list is adding Sparkle support for automatic updates from within the app.
Are there things you would like to see in BuildSettingExtractor? Feel free to file any requests using the project issue tracker.
And if you have yet to experience the glorious build setting extracting splendor that this utility provides, you can download it for free at buildsettingextractor.com.
I’ll be doing a few things this week at WWDC24 and wanted to pass along my schedule. Hope to see you at one or more of these happenings!
Wednesday: LIVE near WWDC 2024
On Wednesday night James Dempsey and the Breakpoints perform LIVE near WWDC in a benefit concert for Techtonica.
The show is a full concert of humorous, original, programming-oriented songs, including favorites from our iTunes chart-topping, #5 Billboard comedy album Backtrace.
I’ll be joined on stage by the Breakpoints—a fabled group of talented techies-by-day and musicians-by-night who make the music and fun come alive!
You can enjoy the show in person or watch the free live stream.
The live stream includes a live chat hosted by Breakpoints Brent Simmons and Steve Hayman. Join the live chat to connect with other folks in the community while enjoying the show!
Full details are at livenearwwdc.com or click below to add the live stream to your calendar so it doesn’t slip your mind.
Bringing back a tradition that started at AltConf, I’ll be closing out the week at the One More Thing conference with a WWDC Week In Review, a lighthearted look back at the announcements and events of the week.
After a week front-loaded with announcements and technical talks—this easy-going closing session of One More Thing combines humor, music, and perspective.
As usual, it will be a busy WWDC week with plenty of new announcements and technology to wrap our heads around. Feel free to follow me on Mastodon and say hello!
I hope you can make it out to one or more of these events—see you at WWDC! •
With less than a week until LIVE near WWDC 2023, we’ve been gearing up for an evening of music, laughter and fun that we think folks are going to really enjoy.
Across multiple timezones, over a dozen Breakpoints have been rehearsing nights and weekends in preparation for our first WWDC-week concert in four years.
Tickets for the event have already sold out, but it looks like we may be able to do a bit of rearranging to accommodate a few more attendees.
In the next day or so, we will be contacting people on the waitlist to give them a chance to purchase tickets.
Join the waitlist and we will notify you as tickets become available.
NOTE: Click the “Get tickets” button on the event page to get to the “Join Waitlist” button.
We‘re all very excited to bring back this WWDC tradition and hope you can join us in person or at our livestream event online!
Join Us Online For The Livestream Event
For the first time ever LIVE near WWDC will be live-streamed so you can be part of the fun no matter where on the planet you happen to be!
The event will be streamed on our YouTube channel. If you subscribe to the channel, you can turn on a notification so you don’t forget to come back for the show!
The online event starts at 7:30 pm Pacific on Wednesday, June 7th.
Chat with others in the community
In addition to the livestream, we’ll have chat open before and during the event. It’s a great way to catch up with folks in the community and maybe make a few new friend as well.
The chat will be hosted by Breakpoint trombonist Steve Hayman. Possibly some other Breakpoints will drop by as well.
Please feel free to spread the word and share the event link with as many people as you like!
2023 Show Poster Revealed!
This LIVE near WWDC 2023 show poster is a visual answer the question, “What if our favorite avian programming language icon decided to perch, relax for a while, and groove to some music?”
Not every Swift programmer realizes that there really are birds known as swifts.
The tradition of LIVE near WWDC show posters goes back to 2017 when WWDC moved from San Francisco back to San Jose.
The poster’s style and color scheme were both suggested by Adrian Eves. Thank you Adrian!
Show posters (11” x 17”) will be on sale at the event with all proceeds going to Women Who Code. If you‘re a VIP ticket holder, we already have you covered, one is included with your ticket.
I’m really happy with how this year’s poster turned out—which is good since it will probably be hanging on my wall for the next few decades. I hope it catches your eye as well!
Looking Forward To A Big Night During A Big Week
Next week is promising to be an exciting WWDC full of announcements and almost certainly some surprises.
And for Wednesday, June 7th, we‘ve been working on a show we hope you’ll really enjoy.
Talking with members of the band over the last few weeks, we are incredibly excited and grateful to be able do this show again; happy to be supporting Women Who Code; and very thankful for the support of our sponsors.
We all hope you can join us on Wednesday night for LIVE near WWDC 2023, whether in person or online. •
And speaking of sponsors—our sponsors make this show possible. Everyone involved in this event, from planning to performing, sends an enormous thank you to our sponsors for their support. Please support our sponsors by clicking through the links below and checking them out!
This will likely be my only post this week not somehow related to next week’s LIVE near WWDC 2023 show.
The blog post I contributed to Swift.org about upcoming feature flags went live today:
Beginning in Swift 5.8 you can flexibly adopt upcoming Swift features using a new compiler flag and compilation condition. This post describes the problem upcoming feature flags solve, their benefits, and how to get started using them in your projects.
Tickets for LIVE near WWDC 2023 are now sold out. Thank you to everyone who purchased a ticket—we're looking forward to seeing you.
But everyone is welcome to join in our livestream event! Details below.
There are still two ways you can join us LIVE near WWDC 2023:
Join the Waitlist
After talking with the venue, we will be able to accommodate a few more attendees!
Click through to join the waitlist and you will be notified of ticket availability in order of joining.
Watch The Live Stream
For the first time ever LIVE near WWDC will be live-streamed so you can be part of the fun no matter where on the planet you happen to be!
The event will be streamed on our YouTube channel. If you subscribe to the channel, you can turn on a notification so you don’t forget to come back for the show!
The online event starts at 7:30 pm Pacific on Wednesday, June 7th.
Chat with others in the community
In addition to the livestream, we’ll have chat open before and during the event. It's a great way to catch up with folks in the community and maybe make a few new friend as well.
The chat will be hosted by Breakpoint trombonist Steve Hayman. Possibly some other Breakpoints will drop by as well.
Please feel free to spread the word and share the event link with as many people as you like!
I am beyond thrilled to announce that after a three-year hiatus LIVE near WWDC will return for 2023!
The show will be a benefit concert for Women Who Code on Wednesday, June 7th at the Tabard Theater in San Jose.
Read on to learn more about how this year’s show is shaping up, but the TL;DR is that tickets may go fast, so sign up for our low-volume mailing list to be among the first to find out when tickets go on sale.
A WWDC Tradition Returns
We’re gearing up for a show during WWDC week that you will not want to miss. We’ve been working hard putting together an amazing evening of mingling, music, and laughs to benefit Women Who Code. The show is a full concert of humorous, original, programming-oriented songs performed by our musical band of nerds, geeks, and community luminaries.
We’re also excited to continue the tradition of supporting diversity in tech by making the show a benefit concert with 100% of ticket and merch proceeds going to not-for-profit organization Women Who Code.
A Bevy of Breakpoints
The lineup of the Breakpoints changes every year, depending on who’s in town.
This year, we‘ll have a full stage with many longtime Breakpoints and a newcomer or two (or three), including our rhythm section of John Fox on drums, Todd Moore on bass, with Shloka Kini and Jonathan Penn trading off on rhythm guitar.
The exact lineup is always in flux—right up until showtime—but so far we’ve got Ken Case, Ken Ferry, Emilie on violin, Rob Napier, Sommer Panage, Daniel Steinberg, and T.J. Usiyan with a few more potential Breakpoints waiting in the wings!
A New Venue
We’ve found a historic theater that should be a great venue for performers and audience members alike.
LIVE near WWDC 2023 will be at The Tabard Theater, located in San Pedro Square in downtown San Jose.
The Tabard Theater in lively San Pedro Square, San Jose
There are lots of restaurants and pubs at San Pedro Square for a bite to eat before or after the show as well as a spacious parking garage nearby for all your temporary vehicular storage needs.
Three big differences this year
A more intimate venue
This is the second year of a hybrid WWDC—a small, invite-only event at Apple Park on Monday combined with a week-long virtual conference.
From last year’s experience, there should be some developers traveling to the area for meetings and networking, but nowhere near the number of folks who would arrive for the week-long in-person WWDC conferences of yore.
To account for less folks being in town, we’ve booked a more intimate venue which seats about 140. Tickets may go fast, so if you’re very interested in attending the show, please sign up for our low-volume mailing list. We’ll notify the mailing list that tickets are on sale before we announce it to everyone else.
It’s a theater, so (almost) everyone will have a seat
UPDATE 6/2/23: Since the show has sold out, we’ve done a little reconfiguring of the venue to accommodate some additional attendees. Seats are available for about 85% - 90% of the tickets sold. The area near the bar is open without seating.
Based on past shows, this should provide a good balance between folks who want to sit and enjoy the show and folks who might like to stand and mingle a bit throughout the evening.
VIP ticket holders have a seat reserved in the cabaret-style seating area near the stage.
In past years, we’ve held the event at clubs like Mezzanine in San Francisco and The Ritz in San Jose. Those spots have had limited seating and—as expected—more of club feel.
This year, with tiered theater seating, bar seating and cabaret-style VIP tables, just about everyone with a ticket will have a seat and be able to sit back, relax, and enjoy the show. (Well, don’t lean back on the bar seats, that won’t end well.)
Live streaming!
For the first time ever the concert will be live-streamed so you can be part of the fun no matter where on the planet you happen to be! We’ll send out the link as soon as we have it. The best way to get it is to follow me on Mastadon or Twitter or by signing up for our oft-mentioned, low-volume mailing list
Sponsors
Our sponsors make this show possible. Everyone involved in this event, from planning to performing, sends an enormous thank you to our sponsors for their support. Please support our sponsors by clicking through the links below and checking them out!
I am really looking forward to performing with everyone in June. Many of us haven’t had a chance to perform together since 2019, so it will be quite a reunion!
I hope you can join us on June 7th, either in-person, or watching the live stream! •