I think this is probably going to be a series. I’ve read enough shitty code (including my own and that of coworkers I have a lot of respect for) that I think I can offer a few tips on how not to write shitty code. This is going to be the first, which I call Intentional Conditions.
Continue reading “How not to write shitty code: Intentional Conditions”Don’t install Zoom
BC School District 34 (Abbotsford) has approved Zoom and wants my son to install it, despite me saying I didn’t want it installed here. If enough of us stand against it, they’ll use something else. Zoom should be disallowed at the provincial level so districts can’t make the decision to use it.
Continue reading “Don’t install Zoom”Encryption Back Doors
There’s much dishonesty around “public requests” for Apple to unlock iPhones.
I don’t want anyone thinking I think Apple should set up a back door. I think it would be stupid. But I also think it’s reframing the argument away from reality. (Technically, I’m sure it would be pretty easy to generate a master decryption key pair and encrypt the device’s local key using the public part of the pair. Keeping the private part of the master pair secure is theoretically possible but entirely impractical.)
Continue reading “Encryption Back Doors”No, it’s not worse
There’s an article in TidBITS I really enjoyed: Six Reasons Why iOS 13 and Catalina Are So Buggy. Unfortunately, while the actual points in the article are great, both the headline and introduction are… sensationalist. It’s a list with a headline designed to grab your intention.
Continue reading “No, it’s not worse”Multithreaded Core Data
This year I worked on a Core Data application. All of the parts of its sync were in a single file, which as a result had too much state tracking. The result wasn’t just complicated, it was dangerous. Should a state change be missed, the operation would never complete.
Continue reading “Multithreaded Core Data”15 months with my Apple Watch
Recently, CBC posted Still don’t own a smartwatch? You’re not alone. First, let me say I agree with the author that not everyone needs or wants a smartwatch. I certainly don’t need one, but did want one. I got an Apple Watch as an early birthday present last September or October. And I really do enjoy it.
Continue reading “15 months with my Apple Watch”We need better
Recently, a number of reporters have put on their very best nostalgic glasses to look at the history of Apple software.
In the last couple of years, however, I’ve noticed a gradual degradation in the quality and reliability of Apple’s core apps, on both the mobile iOS operating system and its Mac OS X platform. It’s almost as if the tech giant has taken its eye off the ball when it comes to these core software products, while it pursues big new dreams, like smartwatches and cars.
It’s just not like Apple to release software that is so broken.
Although the headline is “apps,” both articles actually talk about a wide variety of Apple software including the core OS.
Look, I’m not here to argue that Apple’s software is perfect. I think it’s pretty good and it’s getting better, but that’s beside the point. What I find ridiculous is the assertion that “this used to be great.” Frankly, it’s setting the bar way too low.
Don’t believe me? Let’s look over some quotes about Apple’s software quality. See if you can guess for what Apple release it was written. Most of these are quotes from the time, but some are in retrospect.
Note: Although I’m presenting these as quotes, I’ve stripped the version number, keywords, old application names and technologies. Further, I’ve been bad and have not marked those edits in the text, so please check the original story for the real quote. This is all done to make the game more entertaining. I hope the original authors understand this comes from the very best place.
Our first quote is about a broken installer:
The release was pulled due to a mistake at Apple, in which some components were not included in the installer.
This was said about 1996’s System 7.5.4 (Source: Wikipedia’s System 7 article).
Next is about Wi-Fi problems introduced in an OS update:
The Mac OS X update installed fine but I lost networking including ability to talk to my Apple Airport Extreme.
This was said about 2003’s Jaguar 10.2.8 (Source: CNET’s “Troubleshooting (pulled) Mac OS X 10.2.8″)
Now let’s talk lack of polish:
But that’s not to say that this initial release is all sunshine and daisies. I ran across quite a few bugs and flaws in the software as I tested it, and while none are significant enough to recommend against upgrading, this strikes me as the least polished major iOS update in quite some time.
This was 2011’s release of iOS 5. (Source: iOS 5 Review: Ambitious update rings in the changes)
Next, we’ve got a quote about data corruption:
Just connecting a drive using this technology to a Mac running OS X can ruin the data on the drive. The problem does not occur with earlier versions of Mac OS X, however.
This was said about 2003’s Panther 10.3 (Source: Macintouch’s “Panther FireWire Bug“)
On inconsistent UI:
Such basic design flaws demonstrate a lack of unity among Apple’s development team and a lack of overall coordination and user design standards.
This was said about 2005’s Tiger 10.4 (Source: “Macintoch’s Tiger Review“)
On security problems:
Apple has significantly lowered the bar for malicious entities to install and execute damaging code in OS X.
This was said about 2005’s Tiger 10.4 (Source: blueprint for a widget of mass destruction)
On updates that don’t work:
Apple support drones are getting an earful from Mac users who are experiencing frozen Macs while trying to update to the latest and greatest version of OS X.
This was said about 2007’s Leopard 10.5 (Source: Dreaded Blue Screen of Death mars some Leopard installs)
On applications being broken:
Users are reporting a significant number of applications being affected by the issue, including Microsoft Office, older versions of Adobe Photoshop, and various other applications…
This was said about a 2012 security update to Snow Leopard (Source: Snow Leopard Security Update Kills PowerPC Apps Using Rosetta)
On sideways motion:
It has gotten mixed reviews from customers, so far (like other recent versions of Mac OS X, come to think of it). There are real technical and usability improvements, but these are obscured by interface changes and special effects.
This was said about the 2011 release of Lion (Source: Macintouch’s Mac OS X 10.7 Lion Review)
It’s absolutely true Apple’s shipped some stinkers like discoveryd
, but that’s nothing new. If we want better, the most important thing is to start from reality. A narrative shared by the blogosphere is different from fact.
So let’s start from reality: We don’t need a return to the “golden era” (which may not even have been any better). We need better.
Note: I reserve the right to add new examples if I feel like it. I’m not a reporter, and this isn’t a news story.
Info.plist for command line tools
In the past if you wanted to include data in your command line app, you could either include it in a separate file or do some linker trickery to embed it. Personally, I never really got into the linker trickery (though it’s probably the better solution of the two).
For a while, though, Xcode has supported a build option Create Info.plist Section In Binary, also known as CREATE_INFOPLIST_SECTION_IN_BINARY
. If on, this will embed the target’s Info.plist into the executable as a data segment.
I couldn’t find any documentation on how to get it out, though. After a lot of searching, I came up with getsectbyname
. This is defined in mach-o/getsect.h like so:
Continue reading “Info.plist for command line tools”
How to fix UITableView rows changing size
Do you have an app where the row heights in a table view shift, especially when navigating away from a view controller?
This seems to be an iOS bug and is caused by using autolayout within a table cell without a tableView:estimatedHeightForRowAtIndexPath:
method.
Continue reading “How to fix UITableView rows changing size”
Defending Facebook
You know what I really hate? Defending Facebook.
CBC has a story right now on how Facebook Messanger captures more data than you think. And thanks to how inaccurate that story is, now I have to defend Facebook. Way to make my day, CBC.