Thursday, July 19, 2018

The 2018 MacBooks Pros are Out, Time to Buy a 2015 MacBook Pro Retina 13"

I've been concerned about how little time I spend on my home software projects these days, and have been thinking that maybe a MacBook Pro would allow me to quietly get some work done in the early hours when I wake up but don't want to wake my wife up with the noise of the mechanical keyboard and the beacon of light from the big monitor on my Mac Mini across the room. So, I was in the market for a new personal MacBook Pro, as the other portable Macs in the house are claimed by children.

The 2018 speed bump version of the Touch Bar MacBook Pros came out last week, so I diligently customized my dream machine: the 16GB, 1TB configuration of the new quad core  13".

Which while a lot of money, would be fine as I do pretty well, and this would be a daily device, and I'd get a discount via my day job at a large corporation. Still it's a lot of money; and I just put a new roof on the house, and the children might want to go to college someday.

So, I browsed my company's used computer page, and found they were selling used 2015 MacBook Pros with Retina Display 8GB, 128GB.

Now, I might be able to get along with 8GB as all I'm really doing is compiling small Swift projects, but 128GB would not even store my Xcode folder after all the simulators and whatnot are installed. Spending my days managing storage is not worth my time. This particular model takes a custom SSD, but it is easily replaceable. After getting scared off of a 3rd party SSD by the reviews on Amazon, I found a used 512GB OEM SSD on eBay.

The two components arrived over the last couple days and I popped in the replacement drive—lost a case screw, ugh—did a clean install of High Sierra, installed my development tools on it. This is not going to be a video editor, a photo manager, or a repository of my iTunes content. I'll code and browse the web, and that's about it, not even the distraction of eMail. It's only a dual core, so it isn't going to compile as fast as the quad core in my 2012 Mac Mini, but it will drive my 38" ultra wide screen monitor (3840×1600) at 60Hz when docked unlike the 30Hz the Mini brings. Geekbench 4 gives it 3734 single, 7158 multi, so a bit faster at single than my Mini (3,382), a lot slower at multi (11,360); gotta love those old quad cores.

I setup the Mini to act as a Time Machine server, so the MacBook will be backed up automagically.

It has an escape key, not that I am one of those developers that use the escape key much, an SD reader, dual ThunderBolt 2 ports, and an HDMI port, so when attached to my desktop, it'll be pretty wired up with MagSafe, USB 3, DisplayPort and a Thunderbolt Ethernet adaptor. Not quite the simplicity of a single USB-C cable going into an eGPU I could have bought.

I lucked out with used. Its previous owner cared. You have to look closely at the MagSafe connector to even tell it's been used. It's spotless. The keyboard might not be my preferred mechanical, but has decent travel and doesn't have the poor reputation of subsequent models. The Retina display is flawless and beautiful. Not a True Tone with a P3 gamut, but a treat compared to the displays in my children's 2009 MacBook Pro and 2011 MacBook Air. Is compact and light so it won't be cumbersome using in bed, or slipping into my backpack with my corporate 15".  Just a beautiful machine. Still half the RAM, disk, and cores of the pricier new model, but a lot of ports, MagSafe, nicer keyboard, SD Card reader. A perfectly adequate app developer machine.

For less than half the money, I got more than half the machine.

Monday, July 16, 2018

Filing a Bug Against Core Graphics [Update: fixed]

So, I was verifying that my Chemistry Keyboard works with the iOS 12 beta, and I immediately noticed that the Globe button's icon looked like this:
As I render all my artwork with my own SVGgh library, I had stumbled across a bug in Core Graphics. After much checking and simplifying I figured out that it was possible to add an arc to a CGMutablePath with parameters such that a subsequent call to CGPathCloseSubpath would not maintain the path's current point, and instead revert it to (0.0, 0.0). 

Filed a bug (42266130) with the Apple bug reporter and I hope they can get around to fixing it by release. 

[Update: Fixed in the 5th beta. Thanks for the responsiveness.]