|Home » Learning Curve » Developers Workshop
There is a future. It's just not here yet.
So I'm starting on a fresh boot from the night before. You have to do that regularly with OS X. What with Adobe Flash all over the place.
Get this straight from the beginning: Adobe Flash sucks and everything indicates Adobe as a whole sucks too. Comparing load times at YouTube between HTML5 and Flash says all. Adobe Flash is a horrible kludge.
Virtual memory goes all over the place. Things start slowing down on the machine. That beloved spinning beach ball of death rears its head. Things freeze.
Safari doesn't crash or hang on Adobe Flash. Not often. That might not be readily apparent as the SBOD can sit there for half a minute or more. But Safari isn't crashing or hanging - Safari's just busy. And it's busy because the virtual memory system is busy. Very busy.
So right on the fresh boot I follow a link to a PDF file. Now loading PDF right in the browser is good. Very good. It's a pain to have to download PDFs to open in Preview. It's really dumb that some sites set PDFs as 'binary' in their access files so you have no choice but to download. Being reminded of Microsoft norms is never pleasant.
But a minute or more to load a PDF file in Safari? Yes, if the PDF is 24 MB like this one. Spinning beach ball of death. Spin spin spin. Check with Swapwatch and see the system's going nuts. Swap on disk jumps from 64 MB to half a gig in one fell swoop. Then tops out at a full gig. So much fun on a fresh boot. Because you know what it means - it means the system will slow down and sag right away. And you'll be forced to reboot again.
But the ultimate insult is what happens when you close the tab with the PDF. Safari again hangs with the spinning ball, again a minute's wait as Apple's virtual memory system decides what to do. Something's not right here. Systems should never hang that long. And you can't blame Adobe.
How can something be wrong? Ask yourself that. Wouldn't the engineers at Apple, the engineers working diligently on Safari, have done the best possible job? Would they really have left the system wide open to this type of annoyance if they could prevent it?
Remember: that Safari team - led by Camino's David Hyatt - are the ones who initially put in an access timeout of 30 seconds. And this back in the day when a lot of people were still on dial-up. And Safari would report sites as inaccessible. And evidently punters complained. So the Safari team changed the timeout from 30 seconds to *one year*. That was brilliant. Suddenly you had websites experiencing what appeared to be minor DoS attacks. It was Safari.
It's this kind if ingenious thinking that always plagues Apple. Look at the table view control. That control behaved perfectly until 10.5 Leopard. It followed rules that had been set down by Apple and then Microsoft 20-30 years earlier. For it's necessary to be able to correctly select things in a table view.
Take navigating to /Applications as an example. Suppose you want to see the total size of all application bundles in /Applications - but not in Utilities. How do you do that?
Well in the old days you simply start at /Applications, enumerate everything, then exclude the files in the middle from Utilities. You start from the top and select. Then you scroll down to the section in the list where the files from Utilities appear. You hold down shift and click on the last row above them. Now all your files in /Applications above the section with Utilities are selected. Groovy.
Then you scoot down below the Utilities section, hold down cmd, and click again on the first file beyond the Utilities section. Now finally you scroll to the end, hold down shift, and click the last item. Done. All your files belonging to /Applications (but not belonging to Utilities) are now selected. And you can now drag them wherever you want to see how much disk space they're using.
This works on 10.4. But it hasn't worked on OS X since 10.5. Whenever that monstrosity came out. And that change is so immensely dumb it's not funny. Leopard 10.5 went through some remarkable changes in that regard. It was obvious that the engineers tasked with fixing the issue didn't grasp what was going on. They'd taken perfectly good code and once again they'd ruined it.
They could have gone back to the 10.4 code to see how it was supposed to be done. That code could have been over twenty years old and come from NeXT. (It shouldn't have been touched either.) They could have grokked the code and put it back in 10.5.
But no. Someone was lazy in Cupertino. Someone didn't want to bother going all the way back. Someone was shockingly inexperienced in using graphical interfaces. Some engineer with zip experience understood he wasn't going to be identified, that his boss wasn't going to fully understand the issue, that a 'quick fix' would make it past quality control. And so we're left with what we have today.
You can't perform the above selection in /Applications on OS X today. Not if you're using TFF in table view mode, not if you're using any other application like that. Transmit won't do it. Xfile can't do it. No application using the venerable table view can do it. Apple engineers fucked the code.
It's ridiculous beyond description but it's also something we've come to expect with Apple. Steve Jobs - RIP - wasn't Apple. And this isn't said from a nitwit PR point of view. Engineers don't care about that. Steve Jobs wasn't Apple in the sense that he didn't necessarily represent all the values (and quirks) Apple people represented. He knew there was only so much he could influence the way Apple people did business. He could apply the broad brush strokes and he could micromanage better than anyone but he couldn't control it all. He couldn't sit in the software labs and detect each time his crews screwed up.
The table view goes a long way back in computer science. Twenty years ago or more Microsoft introduced a file manager aptly called File Manager. It might not have looked like much out of the box but it was a real file manager. It could substitute for Program Manager as the Windows shell.
File Manager was built so it could be completely used without a pointing device. Hit F8 and a couple of shift keys and the app went into selection mode. Scroll down through a list with the arrow keys, stop on a desired item, hit the space bar and it was selected. The old rules of click, hold shift, click again - as used in text editors for at least as long a time - make themselves remembered.
Want a second range of files selected? No problem. Hold down ctrl and click again. You just started a new selection. Without interfering with the first selection. And this worked of course with the F8 non-pointing method as well: hold down ctrl and hit the space bar - your substitute for a click when in F8 mode. Then scroll a bit more, hold down ctrl+shift, click or hit the space bar again, and you have your second selection range. Simple as that.
That's early 1990s. And the method follows what was used at Apple and NeXT. It's an industry standard. That's how you create multiple selection ranges in a list.
That's something you can't accomplish today on Apple's dazzling OS X and haven't been able to accomplish since the introduction of 10.5 Leopard years ago. The code got messed up. By an engineer who didn't understand it, who changed it for no good reason.
There are too many examples of that at Apple. Examples of perfectly good code going down the tubes because the supervisors aren't watching what's going on and the engineers don't have the chops to touch other people's work. Things were touchy back in the days of the NeXT/Apple merger where egos were being bruised by the newcomers. But that's nothing compared to today. And no, Steve Jobs can't be blamed for it. We all know where his heart was. And it wasn't in crappy code that's never fixed.
What happened to the better engineers at Apple? Where did they go? What was it happened in 2004-2005 that resulted in quality going out the window? Scott Forstall says he took the best engineers to his iPhone project. But who did he leave behind? Steve Jobs said he didn't believe in hiring on more people, that Bill Gates had tried that and it hadn't worked for him. And we all know OS X was left on the 'back burner' for years. So obviously they didn't have the manpower to push forward with OS X or fix so many bugs for that matter. But what we never expected was seeing the engineers stuck behind tinkering with code they didn't understand and ruining it.
The 'find' box in Terminal was screwed up for years. It took three successive versions (and not point updates) to get it fixed. Now selections in table views are borked - but here it's a question of good code gone bad when that code shouldn't be touched at all. And of course the miserable virtual memory system. And of course the unbelievable one year timeout on Safari accesses.
Things are too relaxed in the Apple camp. There are fewer users (by a mile) than with that other monster system out there. There's nearly no enterprise to huff and puff when things go wrong. There are far fewer computer science departments of any pedigree working full time on the platform. The end users don't detect a tenth of a percent of what's going wrong and they wouldn't object if they did - they'd assume it was their mistake, not Apple's engineers.
Things can't remain like this if ever Apple's OS X is to go mainstream with a comfortable double digit demographic. As soon as the enterprise and the pros start coming over - as soon as corporate clients start asking for software for the platform and consultants start going on training courses so they can write it - you're going to see an entirely different attitude. It won't be a school playground anymore.
[Note: the above doesn't necessarily apply to 10.7 Lion. But there are other issues there that haven't been resolved yet.]
Developers Workshop: NSTableView
Developers Workshop: TFF & Its 'List View'