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.
Thursday, July 19, 2018
Monday, July 16, 2018
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:
[Update: Fixed in the 5th beta. Thanks for the responsiveness.]
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.
Tuesday, April 17, 2018
I'd like to take this quote apart and explain its meaning to me.
The general idea is someone develops an idea, something novel and interesting, and creates something new. Someone else, the great artist, comes along becomes familiar with the original idea, groks it, realizes how to bring it to the next level, and is able to create a product that is so much better than the original creator, that the original is a forgotten footnote. At that point, the idea has been stolen by the great artist who understood the idea better than its creator.
Example, via my brother James, at one point opera was invented and its practitioners busied themselves taking this interesting concept and making operas of varying quality, and everybody was pretty happy with what they were doing and congratulating themselves for creating this new art form. And straight out of Amadeus, Mozart came along and revealed what came before as primitive. Mozart took the basic idea of opera and made previous attempts obsolete. He stole opera.
Example. Smart phones existed before the iPhone. The idea is pretty obvious, and Microsoft worked at cramming Windows into a handheld device and were happy enough being the leader in a niche market. Along came Steve Jobs and his team, they thought deeply about the idea of a handheld computer and came up with a design that revealed previous attempts as clumsy, ill thought out toys. They did not try to copy Microsoft by jamming OS X into a 3.5 inch screen. Instead, they stole the smart phone.
I asked—a really quite good—programmer and colleague, "Who invented the smart phone?" He told me "Apple".
The lesson to me is we should strive as creators not to just blindly iterate on each other's work, but to look for our moment, our flash of understanding when we too can steal an idea and make it our own. I'm still looking; someday.