Pass4sure 9L0-623 dumps | 9L0-623 actual questions |

9L0-623 Mac OS X Deployment 10.6

Study sheperd Prepared by Apple Dumps Experts 9L0-623 Dumps and actual Questions

100% actual Questions - Exam Pass Guarantee with tall Marks - Just Memorize the Answers

9L0-623 exam Dumps Source : Mac OS X Deployment 10.6

Test Code : 9L0-623
Test title : Mac OS X Deployment 10.6
Vendor title : Apple
exam questions : 64 actual Questions

Just try these actual test questions and success is yours.
I looked for the dumps which fulfill my precise wishes at the 9L0-623 exam prep. The dumps in reality knocked out any my doubts in a brief time. First time in my career, I without a doubt attend the 9L0-623 exam with handiest one guidance material and exist successful with a extremely safe marks. I am surely satisfied, however the motive I am here to congratulate you on the excellent back you provided in the configuration of test dump.

wherein will I locate prep cloth for 9L0-623 examination?
This exam coaching package has established itself to exist truely really worth the cash as I passed the 9L0-623 examin promote this week with the score of ninety four%. any questions are legitimate, that is what they promote up with on the exam! I dont recognize how does it, however they beget been keeping this up for years. My cousin used them for some other IT exam years in the past and says they beget been just as precise again within the day. Very dependable and truthful.

a way to setaside together for 9L0-623 examination?
This is to inform that I passed 9L0-623 exam the other day. This questions answers and exam simulator turned into very useful, and I dont think I might beget carried out it without it, with most efficacious every week of guidance. The 9L0-623 questions are actual, and this is exactly what I noticed in the Test Center. Moreover, this prep corresponds with any of the key troubles of the 9L0-623 exam, so I turned into absolutely organized for some questions that had been slightly unique from what provided, yet on the identical matter matter. However, I passed 9L0-623 and satisfied approximately it.

forestall worrying anymore for 9L0-623 prefer a spy at. became a blessing for 9L0-623 exam, because the machine has lots of tiny details and configuration tricks, which may exist difficult in case you dont beget an dreadful lot of 9L0-623 revel in. 9L0-623 questions and solutionsare enough to prefer a seat and pass the 9L0-623 check.

determined maximum 9L0-623 Questions in modern-day dumps that I organized.
I even beget become a 9L0-623 certified final week. This profession direction may exist very thrilling, so in case you are nonethelessconsidering it, ensure you collect questions solutions to setaside together the 9L0-623 exam. This is a gigantic time saver as you collect precisely what you exigency to recognise for the 9L0-623 exam. This is why I selected it, and that i never appeared lower back.

Get these exam questions s and visit holidays to setaside together. presents dependable IT exam stuff, i beget been the consume of them for years. This exam is no exception: I passed 9L0-623 the consume of questions/answers and exam simulator. everything human beings bid is right: the questions are actual, this is a completely dependable braindump, definitely valid. And i beget most efficacious heard suitable matters about their customer service, however in my opinion I by no means had issues that could lead me to feel them inside the first vicinity. simply high-quality.

Real Test 9L0-623 questions.
Very very safe 9L0-623 exam guidance questions answers, I passed 9L0-623 exam this month. is very dependable. I didnt assume that braindumps could collect you this high, however now that i beget passed my 9L0-623 exam, I understand that is extra than a dump. offers you what you want to pass your 9L0-623 exam, and additionally helps you research matters you might need. Yet, it offers you simplest what you REALLY exigency to know, saving it late and power. I actually beget passed 9L0-623 exam and now advocate to every corpse accessible.

it's miles first-rate best to setaside together 9L0-623 examination with ultra-cutting-cuttingmodern dumps.
Felt very haughty to finish answering any questions for the duration of my 9L0-623 exam. Frankly speaking, I owe this achievement to the query & acknowledge through The material protected any of the associated questions to each matter matter and supplied the answers in quick and particular way. Understanding the contents beget become effortless and memorizing was no problem at all. I changed into moreover fortunate enough to collect most of the questions from the guide. ecstatic to pass satisfactorily. powerful killexams

virtually the ones 9L0-623 modern-day day dumps and solemnize sheperd is required to skip the prefer a spy at. Dumps website helped me collect get entry to to numerous exam training material for 9L0-623 exam. i was stressed that which one I should pick out, however your specimens helped me pick out the property one. i Dumps direction, which especially helped me view any the essential ideas. I solved any questions in due time. i am comfortable to beget as my coach. much liked

Where can I find 9L0-623 exam study back on internet? is an revise indicator for a university students and clients functionality to labor and test for the 9L0-623 exam. It is an accurate indication in their potential, particularly with exams taken quick in promote than setting out their academic study for the 9L0-623 exam. offers a dependable up to date. The 9L0-623 tests supply a radical photograph of candidates functionality and talents.

Apple Mac OS X Deployment

Deploying wise contract to Rinkeby testnet using Truffle and mac OS X | actual Questions and Pass4sure dumps

Testnet as a situation to test your sensible solutions

There could exist 2 articles about deploying smart contracts:

  • relocating contract from examine RPC to Rinkeby testnet using truffle and Mac OS
  • Connecting to deployed contract the usage of Infura. (In development)
  • Introduction

    Testnet is a situation to examine your sensible contracts options. basically, it’s a clone of the Ethereum community that allows you to set up and test your smart contracts with out paying suitable expenses.

    There are a couple of leading testnets:

    Metamask trap
  • Ropsten examine network — Proof-of-Work (PoW)
  • Kovan verify network — Proof-of-Authority (PoA)
  • Rinkeby test network — Proof-of-Authority (PoA)
  • right here’s a tiny bit on different consensus protocols.

    One step left to start! before relocating your contract to Testnet, exist unavoidable you beget got installed geth, truffle and Mist.

    set up contract from examine RPC to testnet (Rinkeby)

    firstly, to deploy your challenge, you exigency to down load the entire rinkeby node (containing transactions by clients for any the time).

    To download any chain statistics:

  • Open your finder, for instance at documents.
  • Create fresh folder, rename it as “rinkeby” and open it.
  • Create a brand fresh folder interior rinkeby and discourse to it as “chaindata”.
  • Open your terminal and Go to files/rinkeby with command:
  • $ cd files/rinkeby/
  • and then to down load any chain statistics flee next command:
  • $ geth --datadir=./chaindata --rinkeby

    you'll view whatever thing enjoy this:

    mind about this url. it's your path_to_your_ipc_file
  • reproduction path_to_your_ipc_file somewhere.
  • growth of chain downloading you are going to find in subsequent step in Mist.

    short Tip: Parameter — rinkeby says to geth that chain records has to exist downloaded from rinkeby testnet.

    Create a check wallet with Mist and rinkeby network

    good enough, they ought to pay for deploying out contract, so they exigency create ethereum account, because they ought to pay for this labor with gas (don’t agonize they will pay for now not precise funds). So Mist will aid us to try this.

    short Tip: Mist is an ethereum client the situation you can create your fresh wallets or control them. greater about it you could determine privilege here.

  • To open Mist which may exist linked to their rinkeby community they will consume command (see instance beneath):
  • $ /path_to_your_application_/Contents/MacOS/Mist --rpc /path_to_your_ipc_file

    path_to_your_ipc_file — that you may determine it originally of this text.

    I actually beget installed Mist into my applications. So in my case it looks enjoy this:

    $ /applications/ --rpc /clients/bomalkevych/files/rinkeby/chaindata/geth.ipc

    After this command you're going to view Mist’s banner:

    Mist rise (rinkeby network)
  • tap on «LAUNCH utility». (In some cases it may moreover exist launched instantly)
  • In my case, any packets beget been downloaded (1.655.084)

    Then, you'll view within the left bottom nook how tons chain packets beget been downloaded. it might prefer you from a number of minutes to a number of hours reckoning on your web connection and how lots peers are linked to testnetwork.

    short Tip: in case you wish to view downloading popularity without Mist which you could connect to connection (connection which you opened any the way through step 1) and check it out in a terminal.

    So, to execute this:

  • Open a fresh terminal window (CMD + T)
  • Run next command to connect to the connection:
  • $ geth attach /path_to_your_ipc_file

    path_to_your_ipc_file — you could locate it at the start of this text.

    once more, in my case it seems like:

    $ geth connect /users/bomalkevych/files/rinkeby/chaindata/geth.ipc
  • at terminal in this tab of terminal flee subsequent command:
  • $ eth.syncing

    it could possibly return anything enjoy this:

    currentBlock: 13445,highestBlock: 1604086,knownStates: 32228,pulledStates: 19524,startingBlock: 0

    What aptitude what final obstruct become loaded or can return «false» what skill that complete chain become loaded.

    Create a brand new wallet

    if you beget one which you can pass this step. the way to create a fresh pockets and control money step-through-step which you can determine here.

    adding money to a examine account

    all over their chain is loading, they will add some ether to their account. To execute that, you exigency to:

  • Open Mist, opt for your wallet, and replica it’s tackle.
  • copy address, reproduction anyway

    There are some short and clear suggestions how to collect dollars. In several phrases:

  • opt for some gregarious community: fb, google+ or Twitter.
  • Make a publish with the tackle wallet you copied before.
  • replica hyperlink to the setaside up you made.
  • Paste it within the input box on (see display).
  • Add dollars to your wallet
  • Wait whereas a obstruct along with your transaction might exist delivered to blockchain register (it will probably prefer a number of minutes). To investigate fame of your transaction consume etherscan.
  • Etherscan

    to view particulars of your account transactions (historical past, statuses and so forth).

  • Go to
  • Paste your pockets quantity as proven on screen:
  • Scan transaction particulars
  • Open some transaction and spot reputation. outcomes should soundless exist like:
  • example of transaction particulars install contract with Truffle

    When syncing will cease (in first tab):

  • Go to first tab in terminal and raze syncing with (manage+C) which they flee throughout first step.
  • Run command:
  • $ geth --datadir=./chaindata --rinkeby --rpc --rpcapi db,eth,internet,web3,very own
  • Open your task’s truffle.js file.
  • replace from parameter in code under with your pockets number and paste it for your truffle.js.
  • rinkeby: host: "localhost",port: 8545,network_id: "four", // Rinkeby id 4from: "0x99a4572656eb49FFEEFbe9588f8e7ab0F8D6Eb5e", // account from which to deploygas: 6712390

    In my case, it feels enjoy this:

    remember! replace from together with your wallet handle.

    subsequent step is to attach to the lively connection they did at the begining of this section and release their account. to exist able to execute that:

  • Open a fresh terminal window (CMD + T)
  • Run subsequent command to connect to the connection:
  • $ geth attach --rpc /path_to_your_ipc_file

    path_to_your_ipc_file — which you could locate it originally of this text.

    once more, in my case it appears like:

    $ geth attach /clients/bomalkevych/files/rinkeby/chaindata/geth.ipc
  • ultimately in this tab of terminal flee subsequent command (as a substitute of 0x99a4572656eb49FFEEFbe9588… paste your wallet number):
  • $ own.unlockAccount("0x99a4572656eb49FFEEFbe9588...")
  • input account password and press Enter. (it would return “true”)
  • Open a fresh tab in the terminal and Go to your assignment folder in terminal.
  • ultimately to installation your contract, consume command:
  • $ truffle migrate --community rinkeby Troubleshooting

    First: in case you exigency to redeploy your contract and you collect a message enjoy this:

    the consume of community 'rinkeby'.community up up to now.

    are trying to delete build folder and flee command once more.

    second: if you collect oversight message throughout deploing which related to fuel restrict.

    verify your truffle.js file you situation gas cost as: 6712390

    Are Hackintosh clients greater Passionate concerning the Mac Than Apple? | actual Questions and Pass4sure dumps

    A edition of this publish at first looked on Tedium, a twice-weekly publication that hunts for the sojourn of the long tail.

    we now beget potent opinions about their corporate giants, what they should soundless (or shouldn’t) do, or how they may soundless (or shouldn’t) act.

    We exigency them to prefer heed to us, and prefer note their needs as clients and buyers. however too commonly, they collect too massive and that they ought to steadiness out your hobbies with their personal—in addition to everyone else’s.

    This, every now and then, creates instances in which a few of an organization’s biggest lovers reckon compelled to prefer its ideas in a unique route. It’s with this in intellect that I’d enjoy to focus on why the Hackintosh, a desktop (constantly with an Intel CPU) that runs MacOS on hardware Apple doesn't make, is a fascinating cultural trend, as opposed to just a manner to slash Apple out of a partake of its earnings.

    The roots of the fateful resolution that gave us the Hackintosh date to 2001, when an Apple employee, working remote, spent his time structure a version of Mac OS X, the then-new working gadget Apple adapted from NeXTStep, that became compatible with Intel’s x86 platform.

    This proved a key circulation, creating a backup diagram in case PowerPC obtained long in the tooth (as it eventually did), and when Apple leadership discovered about this far off employee’s solo recreation, the commerce immediately did some thing surprising: It tried to convince one other enterprise to get Mac clones.

    At a Hawaii golf direction, Steve Jobs met with Sony executives to betray them what may technically exist called the primary “Hackintosh,” a Sony VAIO computer that changed into working OS X on an Intel processor.

    Jobs, keen on Sony’s, had famously been hostile to Macintosh clones, shutting down a clone software that had harmed Apple’s foundation line, but turned into interestingly willing to get an exception for Sony, whose VAIO line become neatly-viewed at the time. however despicable timing on Sony’s piece killed the deal. The problem? The VAIO line was already successful with windows, so it didn’t want OS X.

    The outcomes changed into that the world didn’t collect an Intel Mac unless 2006. however regardless of Apple’s most advantageous early efforts, there became only so a lot it could execute to sojourn away from other PCs from being capable of flee its iconic operating gadget.

    this might later prove principal for some of the operating device’s biggest fanatics.

    “Your karma investigate for today: There as soon as turned into a person that whined his current OS become so blind, he’d execute stronger to pirate an OS that ran first rate but establish his hardware declined. gladden don’t lift Mac OS! basically, that’s means uncool. (C) Apple computer Inc.”

    — A passage from a kernel extension, courting to 2006, referred to as “Don’t lift Mac OS X.kext”. This file, a blanketed binary that Apple designed, practically, to office a confirmation that the computer changed into operating actual hardware, has proven to exist pretty vulnerable insurance policy over time, with rig hackers getting past its restrict lengthy in the past. (you should definitely no longer collect rid of it from your machine, incidentally, even if you’re running a actual Mac. It’s the flawless manner to cease your Mac from working in one fell swoop.) regardless of this, Apple has made tiny pains to get stronger the vulnerable safety within the decade-plus when you reckon that then, with some speculating that it’s partly as a result of the incontrovertible fact that these users are very frequently Apple customers who're deeply embedded in the ecosystem—i.e. the very individuals an organization enjoy Apple wouldn’t are looking to piss off.


    comedian and entrepreneur Paul Chato, who has been the usage of Macs for a long time. picture: YouTube

    amongst Hackintosh’s more high-profile users: A comedian with an extended inheritance in tech

    The Hackintosh neighborhood is, admittedly, surprisingly small—in no wee piece on account of the technical studying curve that frequently comes with the observe. It’s comfortably a subculture borne from the combination of two other subcultures: Apple superfans and hobbyists who construct their own computers.

    nonetheless it does attract some extremely passionate users, a lot of whom are experts at creative events, in piece as a result of the consumer foundation Apple’s machines long fostered. Case in aspect: Paul Chato.

    this present day, Chato is an entrepreneur who runs an internet design company, but returned in the late ’70s and ’80s, he became most dependable referred to as a first-rate member of a well-liked Canadian comedy troupe named The Frantics, which had a weekly collection on CBC Radio that introduced sketches enjoy the legendary “closing Will (Boot to the pinnacle).”

    At its height, the troupe even had its personal tv show, 4 on the flooring, which mainly added a truly Canadian superhero, Mr. Canoehead.

    notwithstanding his early success changed into in sketch comedy, Chato’s profession has mostly been in expertise, together with, at one element, because the producer of a well-liked Myst-trend event video game. more these days, even though, Chato has establish a flush of success as a YouTuber, operating a vlog that presents up his irreverent prefer on the in the main tech-related things he’s passionate about.

    In an e mail interview, Chato defined that the combo of tech and humor got here naturally, appearing in Frantics sketches corresponding to “I promote computer systems.”

    “The Frantics beget been likely the first to deal with humour in comedian books and nerd existence lengthy before The huge Bang conception popularized it,” Chato spoke of. “So, it’s a piece of my continuum.”

    The Hackintosh-driven coverage, nevertheless, turned into whatever of a cheerful accident, a byproduct of his tech-linked pet peeves, a lot of that are involving the incontrovertible fact that Apple doesn’t get a laptop for him.

    Two years ago, in one of his earliest clips on the channel, Chato drew consideration to the undeniable fact that he has used Apple items for greater than 30 years—from the common all-in-one to lots of contemporary-day MacBook pros—however moved to producing Hackintosh machines as an alternative. “I feel completely abandoned with the aid of Apple in terms of meeting my needs,” he brought up within the video.

    considering that then, he’s recorded loads of Hackintosh-related content (along with theories as to what the lengthy-promised Mac seasoned reboot should look like), with one particular spotlight coming a couple of months in the past, when Chato used his soapbox to focus on the way that Hackintosh brings him joy—partly on account of the entire difficulty-fixing and tweaking concerned.

    He cited the system of constructing a Hackintosh helped collect him nearer to his son. “Apple benign of ignores the bonding points of constructing a DIY Mac,” he instructed me.

    DIY and Apple don’t specifically Go hand-in-hand, but having said that, didn’t the enterprise simply inform us to “share your presents”?

    Some individuals who partake their gifts can’t execute it particularly neatly with Apple’s current lineup.

    5 different ways that individuals can flee MacOS devoid of owning a Mac
  • Patching the operating system. in the early days of Hackintoshing, it turned into universal for individuals within the community to consume a literal “hacked” version of Mac OS X that they downloaded from a domain, however in fresh years, it’s develop into more typical to alter the bootloader (also called the EFI partition) to get it compatible with MacOS. essentially the most conventional device, Clover, has removed a safe deal of the guesswork around installing—although really now not any of it. but even though you collect it in addition, the job commonly isn’t finished, as machines must almost exist modified to deploy kernel extensions that readily office drivers or patches to sheperd divorce pieces of hardware, comparable to video, sound, or even USB-C ports. with the aid of modifying the innards of the gadget code, Hackintosh clients can spotless out the particulars and get a desktop sheperd lots of the creature comforts of a Mac. That said, now not every tiny thing will moreover exist without difficulty mounted—a working SD card slot in a computer is rare, as an example, and a microphone could no longer labor via your headphone jack. likely essentially the most intricate thing for many pc users is the Wi-Fi, as Apple tends to get consume of chips from Broadcom in its machines, as opposed to Intel, as most computer producers do. This commonly requires a hardware swap or using a 3rd party device, notably on laptops.
  • The “Vanilla” formula. This class of Hackintosh flips the model of the heavy kernel tweaking of the extra average Hackintosh strategy, leaving the operating system itself by myself whereas placing the necessary modifications into the boot manner. The profit of this approach is that it basically allows for the operating rig to labor in its purest benign without adding lots of additional kernel extensions, or kext files, within the working device itself.
  • Renting a person else’s, practically. For years, the cloud company MacStadium has establish itself within the odd condition of constructing an infrastructure-as-a-provider providing round gadgets that don’t truly hale into the server elbowroom aesthetic. compared to a Linux laptop from DigitalOcean, it’s not cheap—at $150 a month for an i3 Mac Mini, you’re not acquiring this provider unintentionally. however the enterprise then again has a crucial zone of interest, underlined via the fact that it has patented its own server infrastructure in particular designed to cling Mac Minis and Mac professionals, and even has taken steps to back the iMac seasoned, which has the brought complication of together with a screen that might exist completely unnecessary within the server room.
  • Leaning exquisite into virtualization. for people that beget a exigency to get consume of a Mac every once in a long time however don’t exigency to quit their extra customary world of home windows or Linux, it’s feasible to consume virtualization equipment, akin to VirtualBox, to flee a complete Mac install on their desktop, much because it’s eddy into yardstick to flee Parallels to carry home windows to the Mac. This strategy is technically now not allowed by the sojourn user License settlement until you’re basically operating it on a Mac, however then once more, most of this other stuff breaks the EULA, too.
  • Leaning difficult into virtualization. more these days, there was an multiplied pastime in using low-level hardware virtualization to without problems exchange the manner of Hackintoshing straight privilege into a bootloader—anything that goes beyond an effortless verify and greater into complete system replacement. This approach is just a tiny simpler to deploy than the greater everyday Hackintosh route (notwithstanding nonetheless very technical), and additionally creates much less abilities risk of blowing up the complete desktop. regularly, this takes the configuration of the Linux-based mostly KVM (kernel-primarily based virtual laptop), with a hardware virtualization emulator enjoy QEMU managing the device photograph. There are technical advantages here: whilst you don’t collect the entire pace of the underlying desktop, you collect nearly any of it. moreover, with the arrogate amount of tweaking, it’s possible to consume peripherals that aren’t any the time utterly suitable with up to date Macs, similar to Nvidia pix playing cards. There become one user, an worker of MacStadium, who successfully setaside together a working installation of MacOS on KVM that may well exist accessed via a cloud-primarily based AMD EPYC device.
  • Why the Hackintosh group can moreover now not issue just enjoy the most welcoming place

    if you’ve ever asked a tech assist question on the information superhighway, you probably are watchful that sheperd forums are often overloaded, complete of people who quiz evident questions about their contraptions and application.

    Now think about attempting to offer tech sheperd to people who're willingly messing with bootloaders and attempting to edit vague gadget data to get their computer execute something it technically isn’t designed to do.

    This has resulted in greater aggressive moderation policies on some of the most prevalent boards in Hackintosh-land. Tonymacx86, as an instance, is an incredibly useful site for Hackintosh builds, however’s worth noting that the discussion board can think sortof standoffish in case you’re fresh to it, if only as a result of their platform has to prefer supervision of loads of repeated questions. a powerful deal.

    a lot of the time, a Tonymacx86 thread takes a unavoidable form:

    A user has fairly technical difficulty that a layperson may under no circumstances get heads or tails of however an authority should exist would becould very well exist able to spot revise away.

    A moderator tells the user they deserve to partake their reporting information to highlight in aspect what the desktop goes via. also, they should study the FAQ, which is totally particular, and that they should soundless consume the search device, which goes returned many years.

    The person responds, either efficaciously following the suggestions or begging for mercy. in the latter case, they don't collect mentioned clemency often and are instructed to stagger read the FAQ once more.

    This goes on and on every so often for days, and reflects both a tall degree of persistence among moderators (critically, kudos), and a wierd punch dynamic in contrast to any I’ve seen on the internet: In a means, the approach almost discourages the group from getting too huge.

    I asked Chato for his insights on this, and his suggestion, in fact, is to RTFM.

    “I reckon the frustration of the ‘experts’ comes from the indisputable fact that many questions promote from people who beget not achieved any research at any or half-read an installation,” he defined. “So, my first bit of information is to analysis the crap out of what you should comprehend, read it all, after which quiz your question.“

    His 2nd piece of assistance offers with motivation: commonly, he notes, these websites beget a contingent of americans making an attempt to with ease pirate application who aren’t doing their research, “and that they quiz questions about [motherboards] and CPUs that are so far off the Hackintosh ticket that it’s just undeniable insulting.”

    There’s a chasm of kinds within the Apple community, not not enjoy the one which existed when jailbreaking changed into a greater everyday ensue among iPhone owners: Some simply desired to consume the tools to enrich their journey, as a result of Apple wasn’t giving them whatever they desired; others desired a straightforward solution to collect whatever thing for free.

    “that you can inform a actual enthusiast since it’s evident they soundless own a Mac,” Chato argued. “They aren’t inquiring for a pirated distro of the MacOS.”

    Hackintoshing is an enchanting manner because, in circumstances enjoy Chato’s and (admittedly) my very own, it highlights a dichotomy between the company and its supporters: It’s a user base, one technical enough to bounce through numerous hoops, that loves a company’s product so a safe deal that they’re willing to subvert it to collect that product in its unvarnished form, since the company’s growth has left them in the back of.

    In 2006, it may beget been the case that individuals Hackintoshing beget been making an attempt to scan or collect a deal. at the moment, I feel there are a lot more individuals in this community who effectively want Apple to give them what they want with the end to execute their jobs, after which to collect out of the way. These people nevertheless covet iPhones and iPads, will soundless purchase Apple add-ons, and gladly are looking to exist a piece of the enterprise’s ecosystem. but if they could’t collect within the front door, emotion burned by way of thin keyboards and sluggish updates, they’ll Go in through the again, in spite of the fact that there’s more broken glass on that facet of the building.

    suppose of it enjoy computing’s version of the “Rural Purge”—that notorious situation where the tv networks determined to reboot their programming to meet the needs of advertisers, who wanted young, urban viewers. besides the fact that the networks had moved on to Mary Tyler Moore, individuals nevertheless desired to solemnize Lawrence Welk and Hee Haw, so the reveal’s creators establish alternate paths to the airwaves, in addition to fresh effortless methods to get a buck. Callous company choice-making can’t assassinate the activity that effectively.

    possibly enjoy those historical Buck Owens and Roy Clark performances, this Hackintosh stuff doesn’t appeal to each person, however it contains a gap that cares enough about this platform to disregard the arrogate route and deal with the entire minefields that promote with it.

    In that easy, the every now and then brusque nature of the Hackintosh group is understandable, past americans being ailing of newbies. they've an investment to offer protection to.

    There’s this phenomenon that has defined the manner that the tech neighborhood has reacted to issues, called the “Hug of death,” moreover called the Slashdot effect.

    almost, the theory is this: in case you flee a website that receives picked up on a accepted aggregator, so many americans are prostrate to Go talk over with that it disables your web site absolutely. In a way, it’s an inversion of the Streisand effect, in that its becoming recognition in reality chokes its success by means of overexposing it.

    In a method, Hackintosh survives since it’s now not too overexposed. It now and again shows up on everyday tech YouTube channels enjoy Snazzy Labs and Linus Tech information and often receives highlighted in mainstream expertise publications, nonetheless it’s whatever thing that is just too challenging for a regular Mac consumer to execute and has the unintended aspect effect of teaching Apple about technical issues that it is looking to sojourn away from in later iterations of its hardware. now not adequate individuals are hugging it to assassinate it just yet.

    certain, there are worries that Apple will consume its T2 protection chip, which it has introduced to its concurrent gadgets, to close out Hackintosh users one day, or that the business’s include of a custom ARM chipset will at terminal render the Hackintosh out of date. That talked about it will exist cited that some hardware virtualization innovations for the ARM-based iOS exist already, with one being provided through a startup named Corellium. (Corellium’s consume case, focused at cellular developers and security researchers, was obtained with the aid of the boutique hacking shop Azimuth protection remaining yr.)

    As rig enjoy KVM can replicate chipsets enjoy ARM on x86 systems, it’s no longer out of the realm of possibility that alternate options will soundless exist if Apple does trade things up in a few years, besides the fact that it alterations what precisely a Hackintosh is.

    Apple can gain erudition of technical issues from the issues Hackintosh breaks internally, even if through highlighting flaws interior the kernel or by means of introducing hardware that may additionally ultimately betray up in a future Apple equipment, however the existence of this gray-area market in the first zone highlights the disparities between Apple’s advertising—skinny and light machines, even if on a desk or in a bag—and what its most engaged energy users truly desire.

    “within the conclusion, I don’t feel Apple trusts the OS,” Chato argues. “That’s what basically bothers me. I don’t reckon they recognize that if they setaside MacOS in a pleasant, simple box that doesn’t thermal throttle it'll sell basically well. It’s the OS, stupid.”

    For a company everyday for its histrionic risks, possibly the riskiest circulation it may get is taking note of this fan foundation that certainly isn’t served by using its present choices.

    It’s no butterfly keyboard mechanism, but it surely generally is a online game changer.

    Mac Deployment equipment: an overview of the top of the line the way to Roll Out a brand fresh Mac Lab or replace an ancient One | actual Questions and Pass4sure dumps

    New Macs, fresh types of Mac OS X, fresh application, and fresh faculty years any translate to at least one component for Mac IT group of workers: opting for the ideal option to roll out the brand fresh computers, software, school rooms, or configurations. Ryan Faas offers you an profile of the diversity of rig available from Apple and third parties, and tells you how to roll out with much less bother and fewer headaches.

    Like this text? They hint 

    Deployments are a piece of lifestyles for IT staff, exist they deployments of latest workstations, fresh functions or other configuration alterations, or deployments of complete fresh labs and networks. these working in training commonly disburse the days earlier than a school 12 months or fresh school semester readying school rooms and computing device labs with the aid of doing computer cleanup and updates (almost, wiping the complicated drives of workstations and then deploying a brand fresh gadget configuration onto them). sadly, deployments can either exist hassle-free or riddled with complications with out each suitable planning and the suitable equipment. this article focuses on the proper rig for Mac IT corpse of workers charged with planning and managing deployments and rollouts.

    There are a number of rig and methods which are, by this factor, regarded tried and actual, together with the venerable Apple software fix in both community and local disk variations (together with a number of GUI entrance ends to ease the deployment manner), Mac OS X Server’s NetInstall feature, Apple remote computing device, and the open source Radmind utility. additionally protected are computing device management tools similar to FileWave and NetOctopus. We’ll spy in brief at every alternative, its methodology, and its pros and cons for a lot of sorts of deployments.

    Apple application restoration (ASR) has been a appliance for Mac administrators and technicians for practically twenty years. In Mac OS X, ASR is a command-line device that is a component of every Mac OS X unlock. ASR uses disk pictures created with the Apple Disk Utility (or the identical tool) as a source of goal workstations. it may well overwrite an existing disk with a unavoidable image. because disk photographs accommodate a fully configured rig (Mac OS X, installed utility, system configuration, and the like), ASR means that you can privilege now deploy examine-to-use workstations. It isn't, despite the fact, a particularly safe device for making consume of software updates or rolling out a unique or restricted quantity of functions.

    ASR can consume a disk lifelike saved on a indigenous disk (equivalent to a difficult oblige or CD/DVD) as a supply for deployments or it could consume a disk image this is kept on a server. Being a command-line software, it's feasible to stimulate ASR operations remotely. besides the fact that children, since the target complicated oblige or partition could exist overwritten as piece of the ASR system, workstations should exist any started from an alternate Mac OS X boot disk (customarily an exterior challenging drive or alternate partition).

    to consume a disk photograph as a source for ASR, the picture exigency to first exist "scanned" with the ASR software. The scanning technique optimizes the image for consume with ASR and might reorder portions of the image for quicker copying. reckoning on the measurement of the image, this procedure might get the effort.

    Unquestionably it is difficult assignment to pick dependable certification questions/answers assets regarding review, reputation and validity since individuals collect sham because of picking incorrectly benefit. ensure to serve its customers best to its assets concerning exam dumps update and validity. The vast majority of other's sham report dissension customers promote to us for the brain dumps and pass their exams joyfully and effortlessly. They never trade off on their review, reputation and property on the grounds that killexams review, killexams reputation and killexams customer certainty is imperative to us. Uniquely they deal with review, reputation, sham report objection, trust, validity, report and scam. On the off haphazard that you view any False report posted by their rivals with the title killexams sham report grievance web, sham report, scam, protest or something enjoy this, simply recollect there are constantly dreadful individuals harming reputation of safe administrations because of their advantages. There are a huge number of fulfilled clients that pass their exams utilizing brain dumps, killexams PDF questions, killexams hone questions, killexams exam simulator. Visit, their specimen questions and test brain dumps, their exam simulator and you will realize that is the best brain dumps site.

    Back to Bootcamp Menu

    HP0-M44 mock exam | PMI-002 exam prep | HP2-Z19 free pdf | A2010-571 VCE | FM0-308 test questions | HP2-N48 brain dumps | 1Z0-528 rehearse test | 1Z0-899 braindumps | 1Z0-219 exam prep | MB5-199 brain dumps | 920-262 free pdf | 1Z0-481 study guide | JN0-662 questions answers | 000-N32 test prep | 000-341 braindumps | 1Z0-034 rehearse questions | 642-241 study guide | E20-065 rehearse questions | C2140-820 actual questions | C2090-102 braindumps |

    9L0-623 Dumps and rehearse programming with actual Question Apple Certification think about aides are setup by IT specialists. Packs of understudies beget been whimpering that there are an over the top number of questions in such a noteworthy number of preparing exams and study help, and they are as of late can not stand to deal with the expense of any more. Seeing masters labor out this sweeping version while soundless affirmation that any the learning is anchored after significant research and exam.

    If you are inquisitive about success passing the Apple 9L0-623 exam to commence earning? has forefront developed Mac OS X Deployment 10.6 test questions that will get positive you pass this 9L0-623 exam! delivers you the foremost correct, current and latest updated 9L0-623 exam questions and out there with a 100 percent refund guarantee. There are several firms that offer 9L0-623 brain dumps however those are not revise and latest ones. Preparation with 9L0-623 fresh questions will exist a best thing to pass this certification test in straightforward means. Discount Coupons and Promo Codes are as under; WC2017 : 60% Discount Coupon for any exams on website PROF17 : 10% Discount Coupon for Orders larger than $69 DEAL17 : 15% Discount Coupon for Orders larger than $99 SEPSPECIAL : 10% Special Discount Coupon for any Orders We are any cognizant that a significant drawback within the IT commerce is there's an absence of property study dumps. Their test preparation dumps provides you everything you will beget to exist compelled to prefer a certification test. Their Apple 9L0-623 exam offers you with test questions with verified answers that replicate the actual test. These Questions and Answers offer you with the expertise of taking the particular exam. prime property and worth for the 9L0-623 exam. 100% guarantee to pass your Apple 9L0-623 exam and acquire your Apple certification. they beget a current at are committed to assist you pass your 9L0-623 exam with tall scores. the probabilities of you failing your 9L0-623 exam, once memorizing their comprehensive test dumps are little.

    We beget their experts working reliably for the gregarious concern of actual exam questions of 9L0-623. any the pass4sure questions and answers of 9L0-623 collected by methods for their association are reviewed and updated by methods for their 9L0-623 guaranteed gathering. They remain identified with the opposition appeared in the 9L0-623 test to collect their surveys about the 9L0-623 exam, they procure 9L0-623 exam indications and traps, their delight in around the systems used as a piece of the actual 9L0-623 exam, As they performed inside the actual test and after that help their material suitably. When you get the most of their pass4sure questions and answers, you'll feel positive roughly every one of the themes of test and feel that your erudition has been massively advanced. These pass4sure questions and answers are not without a doubt rehearse questions, those are actual exam questions and answers which will exist adequate to pass the 9L0-623 exam before any else attempt.

    Apple certifications are extremely required across finished IT organizations. HR managers spare toward candidates who've an appreciation of the topic, notwithstanding having completed certification exams in the circumstance. any the Apple certification back provided on are related round the field.

    It is actual to specify that you are attempting to determine actual exams questions and answers for the Mac OS X Deployment 10.6 exam? They are ideal here to offer you one most breakthrough and first-class resources is, They beget amassed a database of questions from actual test with a reason to furnish you with a hazard free arrangement and pass 9L0-623 exam on the significant endeavor. any preparation materials at the site are creative and verified by ensured experts.

    Why is the Ultimate determination for insistence arranging?

    1. An attractive question that back You Prepare for Your Exam: is an authoritative making arrangements hotspot for passing the Apple 9L0-623 exam. They beget purposely assented and collected actual exam questions and answers, fully informed regarding an undefined restate from actual exam is a la mode, and examined through gigantic commerce experts. Their Apple authorized specialists from several organizations are skilled and certified/certified people who beget examined each request and acknowledge and clarification portion keeping up as a primary concern the cease intend to enable you to grasp the thought and pass the Apple exam. The most extreme ideal way to deal with diagram 9L0-623 exam isn't scrutinizing a course perusing, anyway taking activity actual questions and data the revise answers. rehearse questions enable set you to up for the musings, and the approach in questions and acknowledge picks are presented during the actual exam.

    2. Simple to perceive Mobile Device Access: give to an unbelievable certification smooth to apply collect privilege of passage to things. The centralization of the site is to exhibit real, updated, and to the immediate material toward empower you to examine and pass the 9L0-623 exam. You can quickly locate the actual questions and acknowledge database. The site is adaptable agreeable to permit prepare anyplace, insofar as you beget web association. You can really stack the PDF in all-around and focus wherever.

    three. Access the Most Recent Mac OS X Deployment 10.6 actual Questions and Answers:

    Our Exam databases are frequently updated for the span of an opening to incorporate the most extreme current actual questions and answers from the Apple 9L0-623 exam. Having Accurate, actual and current actual exam questions, you may pass your exam on the primary attempt!

    4. Their Materials is Verified through Industry Experts:

    We are doing battle to giving you actual Mac OS X Deployment 10.6 exam questions and answers, nearby clarifications. Each exam questions on has been appeared by Apple certified professionals. They are sortof qualified and certified people, who've several times of expert delight in related to the Apple exams.

    5. They Provide any Exam Questions and include particular Answers with Explanations:

    Not in the least enjoy various other exam prep sites, gives updated actual Apple 9L0-623 exam questions, notwithstanding low down answers, clarifications and outlines. This is essential to enable the confident to comprehend the best possible answer, notwithstanding proficiency roughly the alternatives that were mistaken. Huge Discount Coupons and Promo Codes are as under;
    WC2017: 60% Discount Coupon for any exams on website
    PROF17: 10% Discount Coupon for Orders greater than $69
    DEAL17: 15% Discount Coupon for Orders greater than $99
    DECSPECIAL: 10% Special Discount Coupon for any Orders

    Since 1997, we have provided a high quality education to our community with an emphasis on academic excellence and strong personal values.

    Killexams 310-110 dumps | Killexams HP0-065 free pdf download | Killexams 350-024 braindumps | Killexams E20-375 rehearse questions | Killexams COG-642 cram | Killexams NS0-145 VCE | Killexams 700-037 test prep | Killexams 000-219 cheat sheets | Killexams M2140-649 study guide | Killexams 920-105 rehearse test | Killexams SC0-501 questions answers | Killexams 1Z0-605 sample test | Killexams 4H0-200 brain dumps | Killexams CCB-400 test prep | Killexams 2D00056A actual questions | Killexams VCAN610 dump | Killexams HP0-D15 test prep | Killexams 000-957 bootcamp | Killexams 700-802 actual questions | Killexams 98-383 brain dumps |

    Exam Simulator : Pass4sure 9L0-623 Exam Simulator

    View Complete list of Brain dumps

    Killexams 000-530 questions and answers | Killexams P2060-002 exam prep | Killexams A2040-910 actual questions | Killexams MSPF dumps questions | Killexams C2180-184 exam questions | Killexams 000-M02 sample test | Killexams HP2-B104 cram | Killexams 1Z0-964 test prep | Killexams 000-855 actual questions | Killexams 190-983 VCE | Killexams 310-016 braindumps | Killexams TB0-116 pdf download | Killexams 156-215.65 rehearse questions | Killexams 9A0-042 actual questions | Killexams HP0-436 rehearse exam | Killexams MB5-627 brain dumps | Killexams CCSA rehearse test | Killexams 250-407 braindumps | Killexams HP0-451 rehearse test | Killexams HP2-B80 brain dumps |

    Mac OS X Deployment 10.6

    Pass 4 positive 9L0-623 dumps | 9L0-623 actual questions |

    Siri Deployed on Mac OS X via Air decree | actual questions and Pass4sure dumps

    Developer Avatron Software has released a two-piece utility that allows anyone who uses an iPhone and a Mac to deploy Siri Dictation on Mac OS X. The only entangle is that you really exigency the fresh iPhone 4S model which features the Siri assistant.

    The profit here is to collect Siri Dictation working on your Mac: “Like Siri on your iPhone 4S? You'll enjoy it even more on your Mac,” says Avatron. “With Air Dictate, you can enter text on your computer by talking into your iPhone 4S. It's that simple.”

    So, for instance, if you want to decree text into Mail, Pages, Microsoft Word, and even Apple’s own TextEdit app, any you exigency is the Air decree app on your iPhone 4S and the Air decree Receiver app on your Mac. From there on, just pair the two and start talking.

    The instructions provided by Avatron Software are reproduced below:

    On Mac:

    - Launch any app that allows text input. For example: TextEdit, Mail, Pages, Microsoft Word.

    On iPhone 4S:

    - Launch the Air decree app.

    - elect your Mac from a list of nearby computers.

    - Press the microphone button, discourse for a while, and press the button again to stop.

    According to the developer, speech will collect converted into text and issue automatically in the text province on your Mac, just as if you had typed it using your keyboard.

    To avoid any confusion (that may mount on the piece of drooling iDevice owners hoping this is some benign of hack that puts Siri on their older iPhones), Air decree runs only on an iPhone 4S, and requires iOS 5.0. The app costs $0.99 (0.79 EUR).

    Air decree Receiver requires a Mac running at least Mac OS X 10.6.8 (Snow Leopard) and is free to download.

    Air decree is only the most recent application in Avatron Software’s portfolio, which includes such titles as Air Display, Air Sharing, and Print Sharing.

    Visit the company here to check out any their offerings, or visit the links below to collect your dictation on privilege now.

    Download Air decree for iPhone 4S

    Download Air decree for Mac OS X (Free)

    Mac OS X 10.6 Snow Leopard: the Ars Technica review | actual questions and Pass4sure dumps

    Mac OS X 10.6 Snow Leopard: the Ars Technica review reader comments 454 with 269 posters participating, including myth author Share this story
  • Share on Facebook
  • Share on Twitter
  • Share on Reddit
  • Mac OS X 10.4 Tiger: 150+ fresh featuresMac OS X 10.4 Tiger: 150+ fresh features

    In June of 2004, during the WWDC keynote address, Steve Jobs revealed Mac OS X 10.4 Tiger to developers and the public for the first time. When the finished product arrived in April of 2005, Tiger was the biggest, most important, most feature-packed release in the history of Mac OS X by a wide margin. Apple's marketing crusade reflected this, touting "over 150 fresh features."

    All those fresh features took time. Since its introduction in 2001, there had been at least one major release of Mac OS X each year. Tiger took over a year and a half to arrive. At the time, it definitely seemed worth the wait. Tiger was a hit with users and developers. Apple took the lesson to heart and quickly set expectations for the next major release of Mac OS X, Leopard. Through various channels, Apple communicated its end to stagger from a 12-month to an 18-month release cycle for Mac OS X. Leopard was officially scheduled for "spring 2007."

    As the date approached, Apple's marketing machine trod a predictable path.

    Steve Jobs at WWDC 2007, touting 300 fresh features in Mac OS X 10.5 LeopardSteve Jobs at WWDC 2007, touting 300 fresh features in Mac OS X 10.5 Leopard

    Apple even went so far as to list any 300 fresh features on its website. As it turns out, "spring" was a bit optimistic. Leopard actually shipped at the sojourn of October 2007, nearly two and a half years after Tiger. Did Leopard really beget twice as many fresh features as Tiger? That's debatable. What's unavoidable is that Leopard included a solid crop of fresh features and technologies, many of which they now prefer for granted. (For example, beget you had a discussion with a potential Mac user since the release of Leopard without mentioning Time Machine? I certainly haven't.)

    Mac OS X appeared to exist maturing. The progression was clear: longer release cycles, more features. What would Mac OS X 10.6 exist like? Would it arrive three and a half years after Leopard? Would it and include 500 fresh features? A thousand?

    At WWDC 2009, Bertrand Serlet announced a stagger that he described as "unprecedented" in the PC industry.

    Mac OS X 10.6 - Read Bertrand's lips: No fresh Features!Mac OS X 10.6 - Read Bertrand's lips: No fresh Features!

    That's right, the next major release of Mac OS X would beget no fresh features. The product title reflected this: "Snow Leopard." Mac OS X 10.6 would merely exist a variant of Leopard. Better, faster, more refined, more... uh... snowy.

    This was a risky strategy for Apple. After the rapid-fire updates of 10.1, 10.2, and 10.3 followed by the riot of fresh features and APIs in 10.4 and 10.5, could Apple really collect away with calling a "time out?" I imagine Bertrand was really sweating this announcement up on the stage at WWDC in front of a live audience of Mac developers. Their reaction? involuntary applause. There were even a few hoots and whistles.

    Many of these identical developers applauded the "150+ fresh features" in Tiger and the "300 fresh features" in Leopard at past WWDCs. Now they were applauding zero fresh features for Snow Leopard? What explains this?

    It probably helps to know that the "0 fresh Features" slide came at the sojourn of an hour-long presentation detailing the major fresh APIs and technologies in Snow Leopard. It was moreover quickly followed by a back-pedaling ("well, there is one fresh feature...") slide describing the addition of Microsoft Exchange support. In isolation, "no fresh features" may look to imply stagnation. In context, however, it served as a developer-friendly affirmation.

    The overall message from Apple to developers was something enjoy this: "We're adding a ton of fresh things to Mac OS X that will back you write better applications and get your existing code flee faster, and we're going to get positive that any this fresh stuff is rock-solid and as bug-free as possible. We're not going to overextend ourselves adding a raft of fresh customer-facing, marketing-friendly features. Instead, we're going to concentrate 100% on the things that strike you, the developers."

    But if Snow Leopard is a cherish epistle to developers, is it a Dear John epistle to users? You know, those people that the marketing department might so crudely advert to as "customers." What's in it for them? Believe it or not, the sales pitch to users is actually quite similar. As exhausting as it has been for developers to maintain up with Apple's seemingly never-ending stream of fresh APIs, it can exist just as taxing for customers to sojourn on top of Mac OS X's features. Exposé, a fresh Finder, Spotlight, a fresh Dock, Time Machine, a fresh Finder again, a fresh iLife and iWork almost every year, and on and on. And as much as developers dislike bugs in Apple's APIs, users who undergo those bugs as application crashes beget just as much reason to exist annoyed.

    Enter Snow Leopard: the release where they any collect a demolish from the new-features/new-bugs treadmill of Mac OS X development. That's the pitch.

    Uncomfortable realities

    But wait a second, didn't I just mention an "hour-long presentation" about Snow Leopard featuring "major fresh APIs and technologies?" When speaking to developers, Apple's message of "no fresh features" is another way of epigram "no fresh bugs." Snow Leopard is suppositious to fix traditional bugs without introducing fresh ones. But nothing says "new bugs, coming privilege up" quite enjoy major fresh APIs. So which is it?

    Similarly, for users, "no fresh features" connotes stability and reliability. But if Snow Leopard includes enough changes to the core OS to fill an hour-long overview session at WWDC more than a year before its release, can Apple really get safe on this promise? Or will users sojourn up with any the disadvantages of a feature-packed release enjoy Tiger or Leopard—the inevitable 10.x.0 bugs, the unfamiliar, untried fresh functionality—but without any of the actual fresh features?

    Yes, it's enough to get one quite cynical about Apple's actual motivations. To toss some more fuel on the fire, beget a spy at the Mac OS X release timeline below. Next to each release, I've included a list of its most significant features.

    Mac OS X release timelineMac OS X release timeline

    That curve is taking on a decidedly droopy shape, as if it's being weighed down by the ever-increasing number of fresh features. (The releases are distributed uniformly on the Y axis.) Maybe you think it's reasonable for the time between releases to stretch out as each one brings a heavier load of goodies than the last, but maintain in reason the rational consequence of such a curve over the longhorn haul.

    And yeah, there's a tiny upwards kick at the sojourn for 10.6, but remember, this is suppositious to exist the "no fresh features" release. Version 10.1 had a similar no-frills focus but took a heck of a lot less time to arrive.

    Looking at this graph, it's difficult not to phenomenon if there's something siphoning resources from the Mac OS X evolution effort. Maybe, say, some project that's in the first two or three major releases of its life, soundless in that steep, early section of its own timeline graph. Yes, I'm talking about the iPhone, specifically iPhone OS. The iPhone commerce has exploded onto Apple's equipoise sheets enjoy no other product before, even the iPod. It's moreover accruing developers at an alarming rate.

    It's not a stretch to imagine that many of the artists and developers who piled on the user-visible features in Mac OS X 10.4 and 10.5 beget been reassigned to iPhone OS (temporarily or otherwise). After all, Mac OS X and iPhone OS partake the identical core operating system, the identical language for GUI development, and many of the identical APIs. Some workforce migration seems inevitable.

    And let's not forget the "Mac OS X" technologies that they later scholarly were developed for the iPhone and just happened to exist announced for the Mac first (because the iPhone was soundless a secret), enjoy Core Animation and code signing. Such plot theories certainly aren't helped by WWDC keynote snubs and other indignities suffered by Mac OS X and the Mac in universal since the iPhone arrived on the scene. And so, on top of everything else, Snow Leopard is tasked with restoring some luster to Mac OS X.

    Got any that? A nearly two-year evolution cycle, but no fresh features. Major fresh frameworks for developers, but few fresh bugs. Significant changes to the core OS, but more reliability. And a franchise rejuvenation with few user-visible changes.

    It's enough to eddy a leopard white.

    The cost of entry

    Snow Leopard's opening overture to consumers is its price: $29 for those upgrading from Leopard. The debut release of Mac OS X 10.0 and the terminal four major releases beget any been $129, with no special pricing for upgrades. After eight years of this benign of fiscal disciplining, Leopard users may well exist tempted to cease reading privilege now and just Go pick up a copy. Snow Leopard's upgrade cost is well under the impulse purchase threshold for many people. Twenty-nine dollars plus some minimal flush of faith in Apple's aptitude to help the OS with each release, and boom, instant purchase.

    Still here? Good, because there's something else you exigency to know about Snow Leopard. It's an overture of a different sort, less of a come-on and more of a spur. Snow Leopard will only flee on Macs with Intel CPUs. Sorry (again), PowerPC fans, but this is the sojourn of the line for you. The transition to Intel was announced over four years ago, and the terminal fresh PowerPC Mac was released in October 2005. It's time.

    But if Snow Leopard is meant to prod the PowerPC holdouts into the Intel age, its "no fresh features" stance (and the accompanying lack of added visual flair) is working against it. For those running Leopard on a PowerPC-based Mac, there's precious tiny in Snow Leopard to back push them over the (likely) four-digit cost wall of a fresh Mac. For PowerPC Mac owners, the threshold for a fresh Mac purchase remains mostly unchanged. When their traditional Mac breaks or seems too slow, they'll Go out and buy a fresh one, and it'll promote with Snow Leopard pre-installed.

    If Snow Leopard does sojourn up motivating fresh Mac purchases by PowerPC owners, it will probably exist the result of resignation rather than inspiration. An Intel-only Snow Leopard is most significant for what it isn't: a further extension of PowerPC life back on the Mac platform.

    The final exciting group is owners of Intel-based Macs that are soundless running Mac OS X 10.4 Tiger. Apple shipped Intel Macs with Tiger installed for a tiny over one year and nine months. Owners of these machines who never upgraded to Leopard are not eligible for the $29 upgrade to Snow Leopard. They're moreover apparently not eligible to purchase Snow Leopard for the traditional $129 price. Here's what Apple has to bid about Snow Leopard's pricing (emphasis added).

    Mac OS X version 10.6 Snow Leopard will exist available as an upgrade to Mac OS X version 10.5 Leopard in September 2009 [...] The Snow Leopard unique user license will exist available for a suggested retail cost of $29 (US) and the Snow Leopard Family Pack, a unique household, five-user license, will exist available for a suggested cost of $49 (US). For Tiger® users with an Intel-based Mac, the Mac Box Set includes Mac OS X Snow Leopard, iLife® '09 and iWork® '09 and will exist available for a suggested cost of $169 (US) and a Family Pack is available for a suggested cost of $229 (US).

    Ignoring the family packs for a moment, this means that Snow Leopard will either exist free with your fresh Mac, $29 if you're already running Leopard, or $169 if you beget an Intel Mac running Tiger. People upgrading from Tiger will collect the latest version of iLife and iWork in the bargain (if that's the arrogate term), whether they want them or not. It positive seems enjoy there's an obvious situation in this lineup for a $129 offering of Snow Leopard on its own. Then again, perhaps it any comes down to how, exactly, Apple enforces the $29 Snow Leopard upgrade policy.

    (As an aside to non-Mac users, note that the non-server version of Mac OS X has no per-user serial number and no activation scheme of any kind, and never has. "Registration" with Apple during the Mac OS X install process is entirely optional and is only used to collect demographic information. Failing to register (or entering entirely bogus registration information) has no effect on your aptitude to flee the OS. This is considered a genuine advantage of Mac OS X, but it moreover means that Apple has no dependable record of who, exactly, is a "legitimate" owner of Leopard.)

    One possibility was that the $29 Snow Leopard upgrade DVD would only install on top of an existing installation of Leopard. Apple has done this nature of thing before, and it bypasses any proof-of-purchase annoyances. It would, however, introduce a fresh problem. In the event of a difficult drive failure or simple determination to reinstall from scratch, owners of the $29 Snow Leopard upgrade would exist forced to first install Leopard and then install Snow Leopard on top of it, perhaps more than doubling the installation time—and quintupling the annoyance.

    Given Apple's history in this area, no one should beget been surprised to find out that Apple chose the much simpler option: the $29 "upgrade" DVD of Snow Leopard will, in fact, install on any supported Mac, whether or not it has Leopard installed. It will even install onto an entirely vacuous difficult drive.

    To exist clear, installing the $29 upgrade to Snow Leopard on a system not already running a properly licensed copy of Leopard is a violation of the end-user license agreement that comes with the product. But Apple's determination is a refreshing change: rewarding honest people with a hassle-free product rather than trying to penalize mendacious people by treating everyone enjoy a criminal. This "honor system" upgrade enforcement policy partially explains the gigantic jump to $169 for the Mac Box Set, which ends up re-framed as an honest person's way to collect iLife and iWork at their customary prices, plus Snow Leopard for $11 more.

    And yes, speaking of installing, let's finally collect on with it.


    Apple claims that Snow Leopard's installation process is "up to 45% faster." Installation times vary wildly depending on the speed, contents, and fragmentation of the target disk, the hasten of the optical drive, and so on. Installation moreover only happens once, and it's not really an exciting process unless something goes terribly wrong. Still, if Apple's going to get such a claim, it's worth checking out.

    To purge as many variables as possible, I installed both Leopard and Snow Leopard from one difficult disk onto another (empty) one. It should exist renowned that this change negates some of Snow Leopard's most principal installation optimizations, which are focused on reducing random data access from the optical disc.

    Even with this disadvantage, the Snow Leopard installation took about 20% less time than the Leopard installation. That's well short of Apple's "up to 45%" claim, but view above (and don't forget the "up to" weasel words). Both versions installed in less than 30 minutes.

    What is striking about Snow Leopard's installation is how quickly the initial Spotlight indexing process completed. Here, Snow Leopard was 74% faster in my testing. Again, the times are wee (5:49 vs. 3:20) and again, fresh installations on vacuous disks are not the norm. But the shorter wait for Spotlight indexing is worth noting because it's the first indication most users will collect that Snow Leopard means commerce when it comes to performance.

    Another notable thing about installation is what's not installed by default: Rosetta, the facility that allows PowerPC binaries to flee on Intel Macs. Okay Apple, they collect it. PowerPC is a stiff, bereft of life. It rests in peace. It's rung down the curtain and joined the choir invisible. As far as Apple is concerned, PowerPC is an ex-ISA.

    But not installing Rosetta by default? That seems a tiny harsh, even foolhardy. What's going to occur when any those users upgrade to Snow Leopard and then double-click what they've probably long since forgotten is a PowerPC application? Perhaps surprisingly, this is what happens:

    Rosetta: auto-installed for your convenienceRosetta: auto-installed for your convenience

    That's what I saw when I tried to launch Disk Inventory X on Snow Leopard, an application that, yes, I had long since forgotten was PowerPC-only. After I clicked the "Install" button, I actually expected to exist prompted to insert the installer DVD. Instead, Snow Leopard reached out over the network, pulled down Rosetta from an Apple server, and installed it.

    Rosetta auto-install

    No reboot was required, and Disk Inventory X launched successfully after the Rosetta installation completed. Mac OS X has not historically made much consume of the install-on-demand approach to system software components, but the facility used to install Rosetta appears quite robust. Upon clicking "Install," an XML property list containing a vast catalog of available Mac OS X packages was downloaded. Snow Leopard uses the identical facility to download and install printer drivers on demand, saving another trip to the installer DVD. I hope this technique gains even wider consume in the future.

    Installation footprint

    Rosetta aside, Snow Leopard simply puts fewer bits on your disk. Apple claims it "takes up less than half the disk space of the previous version," and that's no lie. A clean, default install (including fully-generated Spotlight indexes) is 16.8 GB for Leopard and 5.9 GB for Snow Leopard. (Incidentally, these numbers are both powers-of-two measurements; view sidebar.)

    A gigabyte by any other name

    Snow Leopard has another trick up its sleeve when it comes to disk usage. The Snow Leopard Finder considers 1 GB to exist equal to 109 (1,000,000,000) bytes, whereas the Leopard Finder—and, it should exist noted, every version of the Finder before it—equates 1 GB to 230 (1,073,741,824) bytes. This has the effect of making your difficult disk suddenly issue larger after installing Snow Leopard. For example, my "1 TB" difficult drive shows up in the Leopard Finder as having a capacity of 931.19 GB. In Snow Leopard, it's 999.86 GB. As you might beget guessed, difficult disk manufacturers consume the powers-of-ten system. It's any quite a mess, really. Though I promote down pretty firmly on the powers-of-two side of the fence, I can't blame Apple too much for wanting to match up nicely with the long-established (but soundless dumb, reason you) difficult disk vendors' capacity measurement standard.

    Snow Leopard has several weight loss secrets. The first is obvious: no PowerPC back means no PowerPC code in executables. Recall the maximum possible binary payload in a Leopard executable: 32-bit PowerPC, 64-bit PowerPC, x86, and x86_64. Now cross half of those architectures off the list. Granted, very few applications in Leopard included 64-bit code of any kind, but it's a 50% reduction in size for executables no matter how you slice it.

    Of course, not any the files in the operating system are executables. There are data files, images, audio files, even a tiny video. But most of those non-executable files beget one thing in common: they're usually stored in compressed file formats. Images are PNGs or JPEGs, audio is AAC, video is MPEG-4, even preference files and other property lists now default to a compact binary format rather than XML.

    In Snow Leopard, other kinds of files climb on board the compression bandwagon. To give just one example, ninety-seven percent of the executable files in Snow Leopard are compressed. How compressed? Let's look:

    % cd Applications/ % ls -l Mail -rwxr-xr-x@ 1 root wheel 0 Jun 18 19:35 Mail

    Boy, that's, uh, pretty small, huh? Is this really an executable or what? Let's check their assumptions.

    % file Applications/ Applications/ empty

    Yikes! What's going on here? Well, what I didn't inform you is that the commands shown above were flee from a Leopard system looking at a Snow Leopard disk. In fact, any compressed Snow Leopard files issue to accommodate zero bytes when viewed from a pre-Snow Leopard version of Mac OS X. (They spy and act perfectly everyday when booted into Snow Leopard, of course.)

    So, where's the data? The tiny "@" at the sojourn of the permissions string in the ls output above (a feature introduced in Leopard) provides a clue. Though the Mail executable has a zero file size, it does beget some extended attributes:

    % xattr -l Applications/ 0000 00 00 01 00 00 2C F5 F2 00 2C F4 F2 00 00 00 32 .....,...,.....2 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ (184,159 lines snipped) 2CF610 63 6D 70 66 00 00 00 0A 00 01 FF FF 00 00 00 00 cmpf............ 2CF620 00 00 00 00 .... 0000 66 70 6D 63 04 00 00 00 A0 82 72 00 00 00 00 00 fpmc......r.....

    Ah, there's any the data. But wait, it's in the resource fork? Weren't those deprecated about eight years ago? Indeed they were. What you're witnessing here is yet another addition to Apple's favorite file system hobbyhorse, HFS+.

    At the dawn of Mac OS X, Apple added journaling, symbolic links, and difficult links. In Tiger, extended attributes and access control lists were incorporated. In Leopard, HFS+ gained back for difficult links to directories. In Snow Leopard, HFS+ learns another fresh trick: per-file compression.

    The presence of the attribute is the first hint that this file is compressed. This attribute is actually hidden from the xattr command when booted into Snow Leopard. But from a Leopard system, which has no erudition of its special significance, it shows up as plain as day.

    Even more information is revealed with the back of Mac OS X Internals guru Amit Singh's hfsdebug program, which has quietly been updated for Snow Leopard.

    % hfsdebug /Applications/ ... compression magic = cmpf compression nature = 4 (resource fork has compressed data) uncompressed size = 7500336 bytes

    And positive enough, as they saw, the resource fork does indeed accommodate the compressed data. Still, why the resource fork? It's any piece of Apple's usual, ingenious backward-compatibility gymnastics. A recent instance is the way that difficult links to directories betray up—and function—as aliases when viewed from a pre-Leopard version of Mac OS X.

    In the case of a HFS+ compression, Apple was (understandably) unable to get pre-Snow Leopard systems read and interpret the compressed data, which is stored in ways that did not exist at the time those earlier operating systems were written. But rather than letting applications (and users) running on pre-10.6 systems choke on—or worse, debauch through modification—the unexpectedly compressed file contents, Apple has chosen to shroud the compressed data instead.

    And where can the complete contents of a potentially great file exist hidden in such a way that pre-Snow Leopard systems can soundless copy that file without the loss of data? Why, in the resource fork, of course. The Finder has always correctly preserved Mac-specific metadata and both the resource and data forks when piteous or duplicating files. In Leopard, even the lowly cp and rsync commands will execute the same. So while it may exist a tiny bit spooky to view any those "empty" 0 KB files when looking at a Snow Leopard disk from a pre-Snow Leopard OS, the haphazard of data loss is small, even if you stagger or copy one of the files.

    The resource fork isn't the only situation where Apple has decided to smuggle compressed data. For smaller files, hfsdebug shows the following:

    % hfsdebug /etc/asl.conf ... compression magic = cmpf compression nature = 3 (xattr has compressed data) uncompressed size = 860 bytes

    Here, the data is wee enough to exist stored entirely within an extended attribute, albeit in compressed form. And then, the final frontier:

    % hfsdebug /Volumes/Snow Time/Applications/ ... compression magic = cmpf compression nature = 3 (xattr has inline data) uncompressed size = 8 bytes

    That's right, an entire file's contents stored uncompressed in an extended attribute. In the case of a yardstick PkgInfo file enjoy this one, those contents are the four-byte classic Mac OS nature and creator codes.

    % xattr -l Applications/ 0000 66 70 6D 63 03 00 00 00 08 00 00 00 00 00 00 00 fpmc............ 0010 FF 41 50 50 4C 65 6D 61 6C .APPLemal

    There's soundless the identical "fpmc..." preamble seen in any the earlier examples of the attribute, but at the sojourn of the value, the expected data appears as plain as day: nature code "APPL" (application) and creator code "emal" (for the Mail application—cute, as per classic Mac OS tradition).

    You may exist wondering, if this is any about data compression, how does storing eight uncompressed bytes plus a 17-byte preamble in an extended attribute save any disk space? The acknowledge to that lies in how HFS+ allocates disk space. When storing information in a data or resource fork, HFS+ allocates space in multiples of the file system's allocation obstruct size (4 KB, by default). So those eight bytes will prefer up a minimum of 4,096 bytes if stored in the traditional way. When allocating disk space for extended attributes, however, the allocation obstruct size is not a factor; the data is packed in much more tightly. In the end, the actual space saved by storing those 25 bytes of data in an extended attribute is over 4,000 bytes.

    But compression isn't just about saving disk space. It's moreover a classic instance of trading CPU cycles for decreased I/O latency and bandwidth. Over the past few decades, CPU performance has gotten better (and computing resources more plentiful—more on that later) at a much faster rate than disk performance has increased. Modern difficult disk search times and rotational delays are soundless measured in milliseconds. In one millisecond, a 2 GHz CPU goes through two million cycles. And then, of course, there's soundless the actual data transfer time to consider.

    Granted, several levels of caching throughout the OS and hardware labor mightily to shroud these delays. But those bits beget to promote off the disk at some point to fill those caches. Compression means that fewer bits beget to exist transferred. Given the almost comical glut of CPU resources on a modern multi-core Mac under everyday use, the total time needed to transfer a compressed payload from the disk and consume the CPU to decompress its contents into recollection will soundless usually exist far less than the time it'd prefer to transfer the data in uncompressed form.

    That explains the potential performance benefits of transferring less data, but the consume of extended attributes to store file contents can actually get things faster, as well. It any has to execute with data locality.

    If there's one thing that slows down a difficult disk more than transferring a great amount of data, it's piteous its heads from one piece of the disk to another. Every stagger means time for the head to start moving, then stop, then ensure that it's correctly positioned over the desired location, then wait for the spinning disk to setaside the desired bits beneath it. These are any real, physical, piteous parts, and it's fabulous that they execute their dance as quickly and efficiently as they do, but physics has its limits. These motions are the actual performance killers for rotational storage enjoy difficult disks.

    The HFS+ volume format stores any its information about files—metadata—in two primary locations on disk: the Catalog File, which stores file dates, permissions, ownership, and a host of other things, and the Attributes File, which stores "named forks."

    Extended attributes in HFS+ are implemented as named forks in the Attributes File. But unlike resource forks, which can exist very great (up to the maximum file size supported by the file system), extended attributes in HFS+ are stored "inline" in the Attributes File. In practice, this means a restrict of about 128 bytes per attribute. But it moreover means that the disk head doesn't exigency to prefer a trip to another piece of the disk to collect the actual data.

    As you can imagine, the disk blocks that get up the Catalog and Attributes files are frequently accessed, and therefore more likely than most to exist in a cache somewhere. any of this conspires to get the complete storage of a file, including both its metadata in its data, within the B-tree-structured Catalog and Attributes files an overall performance win. Even an eight-byte payload that balloons to 25 bytes is not a concern, as long as it's soundless less than the allocation obstruct size for everyday data storage, and as long as it any fits within a B-tree node in the Attributes File that the OS has to read in its entirety anyway.

    There are other significant contributions to Snow Leopard's reduced disk footprint (e.g., the removal of unnecessary localizations and "designable.nib" files) but HFS+ compression is by far the most technically interesting.

    Installer intelligence

    Apple makes two other exciting promises about the installation process:

    Snow Leopard checks your applications to get positive they're compatible and sets aside any programs known to exist incompatible. In case a power outage interrupts your installation, it can start again without losing any data.

    The setting aside of "known incompatible" applications is undoubtedly a response to the "blue screen" problems some users encountered when upgrading from Tiger to Leopard two years ago, which was caused by the presence of incompatible—and some would bid "illicit"—third-party system extensions. I beget a decidedly pragmatic view of such software, and I'm lighthearted to view Apple taking a similarly practical approach to minimizing its impact on users.

    Apple can't exist expected to detect and disable any potentially incompatible software, of course. I suspect only the most accepted or highest profile risky software is detected. If you're a developer, this installer feature may exist a safe way to find out if you're on Apple's sh*t list.

    As for continuing an installation after a power failure, I didn't beget the guts to test this feature. (I moreover beget a UPS.) For long-running processes enjoy installation, this benign of added robustness is welcome, especially on battery-powered devices enjoy laptops.

    I mention these two details of the installation process mostly because they highlight the kinds of things that are possible when developers at Apple are given time to polish their respective components of the OS. You might think that the installer team would exist hard-pressed to promote up with enough to execute during a nearly two-year evolution cycle. That's clearly not the case, and customers will reap the benefits.

    Snow Leopard's fresh looks

    I've long yearned for Apple to get a spotless break, at least visually, from Mac OS X's Aqua past. Alas, I will exist waiting a bit longer, because Snow Leopard ushers in no such revolution. And yet here I am, beneath a familiar-looking section heading that seems to attest otherwise. The truth is, Snow Leopard actually changes the appearance of nearly every pixel on your screen—but not in the way you might imagine.

    Since the dawn of color on the Macintosh, the operating system has used a default output gamma correction value of 1.8. Meanwhile, Windows—aka the leisure of the world—has used a value of 2.2. Though this may not look significant to anyone but professional graphics artists, the inequity is usually patent to even a casual observer when viewing the identical image on both kinds of displays side by side.

    Though Mac users will probably instinctively prefer the 1.8 gamma image that they're used to, Apple has decided that this historical inequity is more adversity than it's worth. The default output gamma correction value in Snow Leopard is now 2.2, just enjoy everyone else. Done and done.

    If they notice at all, users will likely undergo this change as a emotion that the Snow Leopard user interface has a bit more contrast than Leopard's. This is reinforced by the fresh default desktop background, a re-drawn, more saturated version of Leopard's default desktop. (Note that these are two entirely different images and not an attempt to demonstrate the effects of different gamma correction settings.)

    LeopardLeopard Snow LeopardSnow Leopard Dock Exposé spotlight effectDock Exposé spotlight effect

    But even beyond color correction, suitable to form, Apple could not resist adding a few graphical tweaks to the Snow Leopard interface. The most patent changes are related to the Dock. First, there's the fresh "spotlight" spy triggered by a click-and-hold on an application icon in the Dock. (This activates Exposé, but only for the windows belonging to the application that was clicked. More later.)

    Furthermore, any and any pop-up menus on the Dock—and only on the Dock—have a unique spy in Snow Leopard, complete with a custom selection appearance (which, for a change, does a passable job of matching the system-wide selection appearance setting).

    New Dock menu appearance. Mmmm… arbitrary.New Dock menu appearance. Mmmm… arbitrary.

    For Mac users of a unavoidable age, these menus may bring to reason Apple's Hi-Tech appearance theme from the bad-old days of Copland. They're actually considerably more subtle, however. Note the translucent edges which accentuate the rounded corners. The gradient on the selection highlight is moreover admirably restrained.

    Nevertheless, this is an entirely fresh spy for a unique (albeit commonly used) application, and it does clash a bit with the default "slanty, shiny shelf" appearance of the Dock. But I've already had my bid about that, and more. If the oath of Snow Leopard's appearance was to "first, execute no harm," then I think I'm inclined to give it a passing grade—almost.

    If I had to characterize what's wrong with Snow Leopard's visual additions with just two words, it'd exist these: everything fades. Apple has sprinkled Core Animation fairy dust over seemingly every application in Snow Leopard. If any piece of the user interface appears, disappears, or changes in any significant way, it's accompanied by an animation and one or more fades.

    In moderation, such effects are fine. But in several instances, Snow Leopard crosses the line. Or rather, it crosses my line, which, it should exist noted, is located far inside the territories of Candy Land. Others with a much lower tolerance for animations who are already galled by the frippery in Leopard and earlier releases will find tiny to cherish in Snow Leopard's visual changes.

    The one that really drove me over the edge is the fussy tiny dance of the filename zone that occurs in the Finder (surprise!) when renaming a file on the desktop. There's just something about so many cross-fades, color changes, and text offsets occurring so rapidly and concentrated into such a wee zone that makes me want to scream. And whether or not I'm actually waiting for these animations to finish before I can continue to consume my computer, it certainly feels that way sometimes.

    Still, I must unenthusiastically call that most everyday people (i.e., the ones who will not read this entire article) will either find these added visual touches delightful, or (much more likely) not notice them at all.


    Animation aside, the visual sameness of Snow Leopard presents a bit of a marketing challenge for Apple. Even beyond the obvious problem of how to promote an operating system upgrade with "no fresh features" to consumers, there's the issue of how to collect people to notice that this fresh product exists at all.

    In the run-up to Snow Leopard's release, Apple stuck to a modified version of Leopard's outer space theme. It was in the keynote slideshows, on the WWDC banners, on the developer release DVDs, and any over the Mac OS X section of Apple's website. The header image from Apple's Mac OS X webpage as of a week before Snow Leopard's release appears below. It's pretty slash and dried: outer space, stars, moneyed purple nebula, lens flare.

    Snow. The final frontier.Snow. The final frontier.

    Then came the golden master of Snow Leopard, which, in a pleasant change from past releases, was distributed to developers a few weeks before Snow Leopard hit the shelves. Its installer introduced an entirely different spy which, as it turns out, was carried over to the retail packaging. For a change, let's line up the discs instead of the packaging (which is rapidly shrinking to barely coop the disc anyway). Here's Mac OS X 10.0 through 10.6, top to bottom and left to right. (The 10.0 and 10.1 discs looked essentially identical and beget been coalesced.)

    One of these things is not enjoy the others…One of these things is not enjoy the others…

    Yep, it's a snow leopard. With actual snow on it. It's a bit on the nose for my taste, but it's not without its charms. And it does beget one gigantic thing going for it: it's immediately recognizable as something fresh and different. "Unmistakable" is how I'd sum up the packaging. Eight years of the giant, centered, variously adorned "X" and then boom: a cat. There's tiny haphazard that anyone who's seen Leopard sitting on the shelf of their local Apple store for the past two years will fail to notice that this is a fresh product.

    (If you'd enjoy your own picture of Snowy the snow leopard (that's right, I've named him), Apple was benign enough to include a desktop background image with the OS. Self-loathing Windows users may download it directly.)

    Warning: internals ahead

    We've arrived at the start of the customary "internals" section. Snow Leopard is any about internal changes, and this is reflected in the content of this review. If you're only interested in the user-visible changes, you can skip ahead, but you'll exist missing out on the meat of this review and the heart of Apple's fresh OS.

    64-bit: the road leads ever on

    Mac OS X started its journey to 64-bit back in 2003 with the release of Panther, which included the bare minimum back for the then-new PowerPC G5 64-bit CPU. In 2005, Tiger brought with it the aptitude to create suitable 64-bit processes—as long as they didn't link with any of the GUI libraries. Finally, Leopard in 2007 included back for 64-bit GUI applications. But again, there was a caveat: 64-bit back extended to Cocoa applications only. It was, effectively, the sojourn of the road for Carbon.

    Despite Leopard's seemingly impressive 64-bit bona fides, there are a few more steps before Mac OS X can gain complete 64-bit nirvana. The diagrams below illustrate.

    64-bit in Mac OS X 10.4 Tiger 64-bit in Mac OS X 10.5 Leopard 64-bit in Mac OS X 10.6 Snow Leopard Mac OS X 10.4 Tiger Mac OS X 10.5 Leopard Mac OS X 10.6 Snow Leopard

    As we'll see, any that yellow in the Snow Leopard diagram represents its capability, not necessarily its default mode of operation.


    Snow Leopard is the first version of Mac OS X to ship with a 64-bit kernel ("K64" in Apple's parlance), but it's not enabled by default on most systems. The reason for this this is simple. Recall that there's no "mixed mode" in Mac OS X. At runtime, a process is either 32-bit or 64-bit, and can only load other code—libraries, plug-ins, etc.—of the identical kind.

    An principal class of plug-ins loaded by the kernel is device drivers. Were Snow Leopard to default to the 64-bit kernel, only 64-bit device drivers would load. And seeing as Snow Leopard is the first version of Mac OS X to include a 64-bit kernel, there'd exist precious few of those on customers' systems on launch day.

    And so, by default, Snow Leopard boots with a 64-bit kernel only on Xserves from 2008 or later. I guess the assumption is that any of the devices commonly attached to an Xserve will exist supported by 64-bit drivers supplied by Apple in Snow Leopard itself.

    Perhaps surprisingly, not any Macs with 64-bit processors are even able to boot into the 64-bit kernel. Though this may change in subsequent point releases of Snow Leopard, the table below lists any the Macs that are either capable of or default to booting K64. (To find the "Model name" of your Mac, select "About This Mac" from the Apple menu, then click the "More info…" button and read the "Model Identifier" line in the window that appears.)

    Product Model name K64 status Early 2008 Mac Pro MacPro3,1 Capable Early 2008 Xserve Xserve2,1 Default MacBook Pro 15"/17" MacBookPro4,1 Capable iMac iMac8,1 Capable UniBody MacBook Pro 15" MacBookPro5,1 Capable UniBody MacBook Pro 17" MacBookPro5,2 Capable Mac Pro MacPro4,1 Capable iMac iMac9,1 Capable Early 2009 Xserve Xserve3,1 Default

    For any K64-capable Macs, boot while holding down "6" and "4" keys simultaneously to select the 64-bit kernel. For a more permanent solution, consume the nvram command to add arch=x86_64 to your boot-args string, or edit the file /Library/Preferences/SystemConfiguration/ and add arch=x86_64 to the Kernel Flags string:

    ... <key>Kernel</key> <string>mach_kernel</string> <key>Kernel Flags</key> <string>arch=x86_64</string> ...

    To switch back to the 32-bit kernel, hold down the "3" and "2" keys during boot, or consume one of the techniques above, replacing "x86_64" with "i386".

    We've already discussed why, at least initially, you probably won't want to boot into K64. But as Snow Leopard adoption ramps up and 64-bit updates of existing kernel extensions become available, why might you actually want to consume the 64-bit kernel?

    The first reason has to execute with RAM, and not in the way you might think. Though Leopard uses a 32-bit kernel, Macs running Leopard can accommodate and consume far more RAM than the 4 GB restrict the "32-bit" qualifier might look to imply. But as RAM sizes increase, there's another concern: address space depletion—not for applications, but for the kernel itself.

    As a 32-bit process, the kernel itself is limited to a 32-bit (i.e., 4GB) address space. That may not look enjoy a problem; after all, should the kernel really exigency more than 4GB of recollection to execute its job? But recollect that piece of the kernel's job is to track and manage system memory. The kernel uses a 64-byte structure to track the status of each 4KB page of RAM used on the system.

    That's 64 bytes, not kilobytes. It hardly seems enjoy a lot. But now reckon a Mac in the not-too-distant future containing 96GB of RAM. (If this sounds ridiculous to you, think of how ridiculous the 8GB of RAM in the Mac I'm typing on privilege now would beget sounded to you five years ago.) Tracking 96GB of RAM requires 1.5GB of kernel address space. Using more than a third of the kernel's address space just to track recollection is a pretty uncomfortable situation.

    A 64-bit kernel, on the other hand, has a virtually unlimited kernel address space (16 exabytes). K64 is an inevitable necessity, given the rapidly increasing size of system memory. Though you may not exigency it today on the desktop, it's already common for servers to beget double-digit gigabytes of RAM installed.

    The other thing K64 has going for it is speed. The x86 instruction set architecture has had a bit of a tortured history. When designing the x86-64 64-bit extension of the x86 architecture, AMD took the opening to leave behind some of the ugliness of the past and include more modern features: more registers, fresh addressing modes, non-stack-based floating point capabilities, etc. K64 reaps these benefits. Apple makes the following claims about its performance:

  • 250% faster system convene entry point
  • 70% faster user/kernel recollection copy
  • Focused benchmarking would stand these out, I'm sure. But in daily use, you're unlikely to exist able to attribute any particular performance boost to the kernel. think of K64 as removing bottlenecks from the few (usually server-based) applications that actually execute exercise these aspects of the kernel heavily.

    If it makes you feel better to know that your kernel is operating more efficiently, and that, were you to actually beget 96GB of RAM installed, you would not risk starving the kernel of address space, and if you don't beget any 32-bit drivers that you absolutely exigency to use, then by any means, boot into the 64-bit kernel.

    For everyone else, my advice is to exist lighthearted that K64 will exist ready and waiting for you when you eventually execute exigency it—and gladden execute embolden any the vendors that get kernel extensions that you supervision about to add K64 back as soon as possible.

    Finally, this is worth repeating: gladden maintain in reason that you execute not exigency to flee the 64-bit kernel in order to flee 64-bit applications or install more than 4GB of RAM in your Mac. Applications flee just fine in 64-bit mode on top of the 32-bit kernel, and even in earlier versions of Mac OS X it's been possible to install and prefer advantage of much more than 4GB of RAM.

    64-bit applications

    While Leopard may beget brought with it back for 64-bit GUI applications, it actually included very few of them. In fact, by my count, only two 64-bit GUI applications shipped with Leopard: Xcode (an optional install) and Chess. And though Leopard made it possible for third-party developers to yield 64-bit (albeit Leopard-only) GUI applications, very few have—sometimes due to ill-started realities, but most often because there's been no safe reason to execute so, abandoning users of Mac OS X 10.4 or earlier in the process.

    Apple is now pushing the 64-bit transition much harder. This starts with leading by example. Snow Leopard ships with four end-user GUI applications that are not 64-bit: iTunes, Grapher, Front Row, and DVD Player. Everything else is 64-bit. The Finder, the Dock, Mail, TextEdit, Safari, iChat, Address Book, Dashboard, back Viewer, Installer, Terminal, Calculator—you title it, it's 64-bit.

    The second gigantic carrot (or stick, depending on how you spy at it) is the continued lack of 32-bit back for fresh APIs and technologies. Leopard started the trend, leaving deprecated APIs behind and only porting the fresh ones to 64-bit. The improved Objective-C 2.0 runtime introduced in Leopard was moreover 64-bit-only.

    Snow Leopard continues along similar lines. The Objective-C 2.1 runtime's non-fragile instance variables, exception model unified with C++, and faster vtable dispatch remain available only to 64-bit applications. But the most significant fresh 64-bit-only API is QuickTime X—significant enough to exist addressed separately, so sojourn tuned.

    64-bits or bust

    All of this is Apple's not-so-subtle way of telling developers that the time to stagger to 64-bit is now, and that 64-bit should exist the default for any fresh applications, whether a developer thinks it's "needed" or not. In most cases, these fresh APIs beget no intrinsic connection to 64-bit. Apple has simply chosen to consume them as additional forms of persuasion.

    Despite any of the above, I'd soundless convene Snow Leopard merely the penultimate step in Mac OS X's journey to exist 64-bit from top to bottom. I fully anticipate Mac OS X 10.7 to boot into the 64-bit kernel by default, to ship with 64-bit versions of any applications, plug-ins, and kernel extensions, and to leave even more legacy and deprecated APIs to fade away in the land of 32-bit.

    QuickTime X

    Apple did something a bit odd in Leopard when it neglected to port the C-based QuickTime API to 64-bit. At the time, it didn't look enjoy such a gigantic deal. Mac OS X's transition to 64-bit had already spanned many years and several major versions. One could imagine that it just wasn't yet QuickTime's eddy to Go 64-bit.

    As it turns out, my terse but pessimistic assessment of the situation at the time was accurate: QuickTime got the "Carbon treatment". enjoy Carbon, the venerable QuickTime API that they know and cherish will not exist making the transition to 64-bit—ever.

    To exist clear, QuickTime the technology and QuickTime the brand will most definitely exist coming to 64-bit. What's being left behind in 32-bit-only configuration is the C-based API introduced in 1991 and built upon for 18 years thereafter. Its replacement in the world of 64-bit in Snow Leopard is the aptly named QuickTime X.

    The "X" in QuickTime X, enjoy the one in in Mac OS X, is pronounced "ten." This is but the first of many eerie parallels. enjoy Mac OS X before it, QuickTime X:

  • aims to get a spotless demolish from its predecessor
  • is based on technology originally developed for another platform
  • includes transparent compatibility with its earlier incarnation
  • promises better performance and a more modern architecture
  • lacks many principal features in its initial release
  • Maximum available Mac CPU hasten (MHz)Maximum available Mac CPU hasten (MHz)

    Let's prefer these one at a time. First, why is a spotless demolish needed? setaside simply, QuickTime is old—really old. The horribly blocky, postage-stamp-size video displayed by its initial release in 1991 was considered a technological tour de force.

    At the time, the fastest Macintosh money could buy contained a 25 MHz CPU. The ridiculous chart to the privilege is meant to hammer home this point. Forward-thinking design can only collect you so far. The shape of the world a technology is born into eventually, inevitably dictates its fate. This is especially suitable for long-lived APIs enjoy QuickTime with a strong bent towards backward compatibility.

    As the first successful implementation of video on a personal computer, it's frankly fabulous that the QuickTime API has lasted as long as it has. But the world has moved on. Just as Mac OS establish itself mired in a ghetto of cooperative multitasking and unprotected memory, QuickTime limps into 2009 with antiquated notions of concurrency and subsystem layering baked into its design.

    When it came time to write the video-handling code for the iPhone, the latest version of QuickTime, QuickTime 7, simply wasn't up to the task. It had grown too bloated and inefficient during its life on the desktop, and it lacked safe back for the GPU-accelerated video playback necessary to handle modern video codecs on a handheld (even with a CPU sixteen times the clock hasten of any available in a Mac when QuickTime 1.0 was released). And so, Apple created a tight, modern, GPU-friendly video playback engine that could fit comfortably within the RAM and CPU constraints of the iPhone.

    Hmm. An aging desktop video API in exigency of a replacement. A fresh, fresh video library with safe performance even on (comparatively) anemic hardware. Apple connected the dots. But the trick is always in the transition. Happily, this is Apple's forte. QuickTime itself has already lived on three different CPU architectures and three entirely different operating systems.

    The switch to 64-bit is yet another (albeit less dramatic) inflection point, and Apple has chosen it to ticket the border between the traditional QuickTime 7 and the fresh QuickTime X. It's done this in Snow Leopard by limiting any consume of QuickTime by 64-bit applications to the QTKit Objective-C framework.

    QTKit's fresh world order

    QTKit is not new; it began its life in 2005 as a more native-feeling interface to QuickTime 7 for Cocoa applications. This extra layer of abstraction is the key to the QuickTime X transition. QTKit now hides within its object-oriented walls both QuickTime 7 and QuickTime X. Applications consume QTKit as before, and behind the scenes QTKit will elect whether to consume QuickTime 7 or QuickTime X to fulfill each request.

    If QuickTime X is so much better, why doesn't QTKit consume it for everything? The acknowledge is that QuickTime X, enjoy its Mac OS X namesake, has very limited capabilities in its initial release. While QuickTime X supports playback, capture, and exporting, it does not back general-purpose video editing. It moreover supports only "modern" video formats—basically, anything that can exist played by an iPod, iPhone, or Apple TV. As for other video codecs, well, you can forget about handling them with plug-ins because QuickTime X doesn't back those either.

    For every one of the cases where QuickTime X is not up to the job, QuickTime 7 will fill in. Cutting, copying, and pasting portions of a video? QuickTime 7. Extracting individual tracks from a movie? QuickTime 7. Playing any movie not natively supported by an existing Apple handheld device? QuickTime 7. Augmenting QuickTime's codec back using a plug-in of any kind? You guessed it: QuickTime 7.

    But wait a second. If QTKit is the only way for a 64-bit application to consume QuickTime, and QTKit multiplexes between QuickTime 7 and QuickTime X behind the scenes, and QuickTime 7 is 32-bit-only, and Mac OS X does not back "mixed mode" processes that can execute both 32-bit and 64-bit code, then how the heck does a 64-bit process execute anything that requires the QuickTime 7 back-end?

    To find out, fire up the fresh 64-bit QuickTime Player application (which will exist addressed separately later) and open a movie that requires QuickTime 7. Let's say, one that uses the Sorenson video codec. (Remember that? safe times.) positive enough, it plays just fine. But search for "QuickTime" in the Activity Monitor application and you'll view this:

    Pretty sneaky, sis: 32-bit QTKitServer processPretty sneaky, sis: 32-bit QTKitServer process

    And the acknowledge is revealed. When a 64-bit application using QTKit requires the services of the 32-bit-only QuickTime 7 back-end, QTKit spawns a divorce 32-bit QTKitServer process to execute the labor and communicate the results back to the originating 64-bit process. If you leave Activity Monitor open while using the fresh QuickTime Player application, you can watch the QTKitServer processes promote and Go as needed. This is any handled transparently by the QTKit framework; the application itself exigency not exist watchful of these machinations.

    Yes, it's going to exist a long, long time before QuickTime 7 disappears completely from Mac OS X (at least Apple was benign enough not to convene it "QuickTime Classic"), but the path forward is clear. With each fresh release of Mac OS X, anticipate the capabilities of QuickTime X to expand, and the number of things that soundless require QuickTime 7 to decrease. In Mac OS X 10.7, for example, I imagine that QuickTime X will gain back for plug-ins. And surely by Mac OS X 10.8, QuickTime X will beget complete video editing support. any this will exist happening beneath the unifying facade of QTKit until, eventually, the QuickTime 7 back-end is no longer needed at all.

    Say what you mean

    In the meantime, perhaps surprisingly, many of the current limitations of QuickTime X actually highlight its unique advantages and inform the evolving QTKit API. Though there is no direct way for a developer to request that QTKit consume the QuickTime X back-end, there are several indirect means to influence the decision. The key is the QTKit API, which relies heavily on the concept of intent.

    QuickTime versions 1 through 7 consume a unique representation of any media resources internally: a Movie object. This representation includes information about the individual tracks that get up the movie, the sample tables for each track, and so on—all the information QuickTime needs to understand and manipulate the media.

    This sounds powerful until you realize that to execute anything with a media resource in QuickTime requires the construction of this comprehensive Movie object. reckon playing an MP3 file with QuickTime, for example. QuickTime must create its internal Movie protest representation of the MP3 file before it can commence playback. Unfortunately, the MP3 container format seldom contains comprehensive information about the structure of the audio. It's usually just a stream of packets. QuickTime must laboriously scan and parse the entire audio stream in order to complete the Movie object.

    QuickTime 7 and earlier versions get this process less painful by doing the scanning and parsing incrementally in the background. You can view this in many QuickTime-based player applications in the configuration of a progress bar overlaid on the movie controller. The image below shows a 63MB MP3 podcast loading in the Leopard version of QuickTime Player. The shaded portion of the movie timeline slowly fills the dotted zone from left to right.

    QuickTime 7 doing more labor than necessary

    QuickTime 7 doing more labor than necessary

    Though playback can commence almost immediately (provided you play from the beginning, that is) it's worthwhile to prefer a step back and reckon what's going on here. QuickTime is creating a Movie protest suitable for any operation that QuickTime can perform: editing, track extraction or addition, exporting, you title it. But what if any I want to execute is play the file?

    The adversity is, the QuickTime 7 API lacks a way to express this benign of intent. There is no way to bid to QuickTime 7, "Just open this file as quickly as possible so that I can play it. Don't bother reading every unique byte of the file from the disk and parsing it to determine its structure just in case I elect to edit or export the content. That is not my intent. Please, just open it for playback."

    The QTKit API in Snow Leopard provides exactly this capability. In fact, the only way to exist eligible for the QuickTime X back-end at any is to explicitly express your intent not to execute anything QuickTime X cannot handle. Furthermore, any attempt to fulfill an operation that lies outside your previously expressed intent will cause QTKit to raise an exception.

    The intent mechanism is moreover the way that the fresh features of QuickTime X are exposed, such as the aptitude to asynchronously load great or distantly located (e.g., over a late network link) movie files without blocking the UI running on the main thread of the application.

    Indeed, there are many reasons to execute what it takes to collect on board the QuickTime X train. For the media formats it supports, QuickTime X is less taxing on the CPU during playback than QuickTime 7. (This is beyond the fact that QuickTime X does not fritter time preparing its internal representation of the movie for editing and export when playback is any that's desired.) QuickTime X moreover supports GPU-accelerated playback of H.264, but, in this initial release, only on Macs equipped with an NVIDIA 9400M GPU (i.e., some 2009 iMacs and several models of MacBooks from 2008 and 2009). Finally, QuickTime X includes comprehensive ColorSync back for video, which is long overdue.

    The X factor

    This is just the start of a long journey for QuickTime X, and seemingly not a very auspicious one, at that. A QuickTime engine with no editing support? No plug-ins? It seems ridiculous to release it at all. But this has been Apple's way in recent years: steady, deliberate progress. Apple aims to ship no features before their time.

    As anxious as developers may exist for a full-featured, 64-bit successor to the QuickTime 7 engine, Apple itself is sitting on top of one of the largest QuickTime-riddled (and Carbon-addled, to boot) code bases in the industry: Final slash Studio. Thus far, It remains stuck in 32-bit. To bid that Apple is "highly motivated" to extend the capabilities of QuickTime X would exist an understatement.

    Nevertheless, don't anticipate Apple to rush forward foolishly. Duplicating the functionality of a continually developed, 18-year-old API will not occur overnight. It will prefer years, and it will exist even longer before every principal Mac OS X application is updated to consume QTKit exclusively. Transitions. Gotta cherish 'em.

    File system API unification

    Mac OS X has historically supported many different ways of referring to files on disk from within an application. Plain-old paths (e.g., /Users/john/Documents/myfile) are supported at the lowest levels of the operating system. They're simple, predictable, but perhaps not such a powerful belief to consume as the only way an application tracks files. reckon what happens if an application opens a file based on a path string, then the user moves that file somewhere else while it's soundless being edited. When the application is instructed to save the file, if it only has the file path to labor with, it will sojourn up creating a fresh file in the traditional location, which is almost certainly not what the user wanted.

    Classic Mac OS had a more sophisticated internal representation of files that enabled it to track files independent of their actual locations on disk. This was done with the back of the unique file ids supported by HFS/HFS+. The Mac OS X incarnation of this concept is the FSRef data type.

    Finally, in the modern age, URLs beget become the de facto representation for files that may exist located somewhere other than the local machine. URLs can moreover advert to local files, but in that case they beget any the identical disadvantages as file paths.

    This diversity of data types is reflected in Mac OS X's file system APIs. Some functions prefer file path as arguments, some anticipate opaque references to files, and soundless others labor only with URLs. Programs that consume these APIs often disburse a lot of their time converting file references from one representation to another.

    The situation is similar when it comes to getting information about files. There are a huge number of file system metadata retrieval functions at any levels of the operating system, and no unique one of them is comprehensive. To collect any available information about a file on disk requires making several divorce calls, each of which may anticipate a different nature of file reference as an argument.

    Here's an instance Apple provided at WWDC. Opening a unique file in the Leopard version of the Preview image viewer application results in:

  • Four conversions of an FSRef to a file path
  • Ten conversions of a file path to an FSRef
  • Twenty-five calls to getattrlist()
  • Eight calls to stat()/lstat()
  • Four calls to open()/close()
  • In Snow Leopard, Apple has created a new, unified, comprehensive set of file system APIs built around a unique data type: URLs. But these are URL "objects"—namely, the opaque data types NSURL and CFURL, with a toll-free bridge between them—that beget been imbued with any the desirable attributes of an FSRef.

    Apple settled on these data types because their opaque nature allowed this benign of enhancement, and because there are so many existing APIs that consume them. URLs are moreover the most future-proof of any the choices, with the scheme portion providing nearly unlimited flexibility for fresh data types and access mechanisms. The fresh file system APIs built around these opaque URL types back caching and metadata prefetching for a further performance boost.

    There's moreover a fresh on-disk representation called a Bookmark (not to exist confused with a browser bookmark) which is enjoy a more network-savvy replacement for classic Mac OS aliases. Bookmarks are the most robust way to create a reference to a file from within another file. It's moreover possible to attach capricious metadata to each Bookmark. For example, if an application wants to maintain a persistent list of "favorite" files plus some application-specific information about them, and it wants to exist resilient to any movement of these files behind its back, Bookmarks are the best appliance for the job.

    I mention any of this not because I anticipate file system APIs to exist any that exciting to people without my particular fascination with this piece of the operating system, but because, enjoy Core Text before it, it's an indication of exactly how youthful Mac OS X really is as a platform. Even after seven major releases, Mac OS X is soundless struggling to stagger out from the shadow of its three ancestors: NeXTSTEP, classic Mac OS, and BSD Unix. Or perhaps it just goes to betray how ruthlessly Apple's core OS team is driven to replace traditional and crusty APIs and data types with new, more modern versions.

    It will exist a long time before the benefits of these changes trickle down (or is it up?) to end-users in the configuration of Mac applications that are written or modified to consume these fresh APIs. Most well-written Mac applications already exhibit most of the desirable behavior. For example, the TextEdit application in Leopard will correctly detect when a file it's working on has moved.

    TextEdit: a safe Mac OS X citizenTextEdit: a safe Mac OS X citizen

    Of course, the key modifier here is "well-written." Simplifying the file system APIs means that more developers will exist willing to expend the effort—now greatly reduced—to provide such user-friendly behaviors. The accompanying performance boost is just icing on the cake, and one more reason that developers might elect to alter their existing, working application to consume these fresh APIs.

    Doing more with more

    Moore's Law is widely cited in technology circles—and moreover widely misunderstood. It's most often used as shorthand for "computers double in hasten every year or so," but that's not what Gordon Moore wrote at all. His 1965 article in Electronics magazine touched on many topics in the semiconductor industry, but if it had to exist summed up in a unique "law", it would be, roughly, that the number of transistors that fit onto a square inch of silicon doubles every 12 months.

    Moore later revised that to two years, but the time era is not what people collect wrong. The problem is confusing a doubling of transistor density with a doubling of "computer speed." (Even more problematic is declaring a "law" based on a unique paper from 1965, but we'll setaside that aside for now. For a more thorough discussion of Moore's Law, gladden read this classic article by Jon Stokes.)

    For decades, each expand in transistor density was, in fact, accompanied by a comparable expand in computing hasten thanks to ever-rising clock speeds and the dawn of superscalar execution. This worked great—existing code ran faster on each fresh CPU—until the grim realities of power density setaside an sojourn to the fun.

    Moore's Law continues, at least for now, but their aptitude to get code flee faster with each fresh expand in transistor density has slowed considerably. The free lunch is over. CPU clock speeds beget stagnated for years, many times actually going backwards. (The latest top-of-the-line 2009 Mac Pro contains a 2.93 GHz CPU, whereas the 2008 model could exist equipped with a 3.2 GHz CPU.) Adding execution units to a CPU has moreover long since reached the point of diminishing returns, given the limits of instruction-level parallelism in common application code.

    And yet we've soundless got any these fresh transistors raining down on us, more every year. The challenge is to find fresh ways to consume them to actually get computers faster.

    Thus far, the semiconductor industry's acknowledge has been to give us more of what they already have. Where once a CPU contained a unique rational processing unit, now CPUs in even the lowliest desktop computers accommodate two processor cores, with high-end models sporting two chips with eight rational cores each. Granted, the cores themselves are moreover getting faster, usually by doing more at the identical clock hasten as their predecessors, but that's not happening at nearly the rate that the cores are multiplying.

    Unfortunately, generally speaking, a dual-core CPU will not flee your application twice as expeditiously as a single-core CPU. In fact, your application probably won't flee any faster at any unless it was written to prefer advantage of more than just a unique rational CPU. Presented with a glut of transistors, chipmakers beget turned around and provided more computing resources than programmers know what to execute with, transferring much of the responsibility for making computers faster to the software guys.

    We're with the operating system and we're here to help

    It's into this environment that Snow Leopard is born. If there's one responsibility (aside from security) that an operating system vendor should feel in the year 2009, it's finding a way for applications—and the OS itself—to utilize the ever-growing wealth of computing resources at their disposal. If I had to pick unique technological "theme" for Snow Leopard, this would exist it: helping developers utilize any this newfound silicon; helping them execute more with more.

    To that end, Snow Leopard includes two significant fresh APIs backed by several smaller, but equally principal infrastructure improvements. We'll start at the bottom with, believe it or not, the compiler.

    LLVM and Clang

    Apple made a strategic investment in the LLVM open source project several years ago. I covered the fundamentals of LLVM in my Leopard review. (If you're not up to speed, gladden entangle up on the topic before continuing.) In it, I described how Leopard used LLVM to provide dramatically more efficient JIT-compiled software implementations of OpenGL functions. I ended with the following admonition:

    Don't exist misled by its humble consume in Leopard; Apple has grand plans for LLVM. How grand? How about swapping out the guts of the gcc compiler Mac OS X uses now and replacing them with the LLVM equivalents? That project is well underway. Not ambitious enough? How about ditching gcc entirely, replacing it with a completely fresh LLVM-based (but gcc-compatible) compiler system? That project is called Clang, and it's already yielded some impressive performance results.

    With the introduction of Snow Leopard, it's official: Clang and LLVM are the Apple compiler strategy going forward. LLVM even has a snazzy fresh logo, a not-so-subtle homage to a well-known compiler design textbook:

    LLVM! Clang! Rawr!

    LLVM! Clang! Rawr!

    Apple now offers a total of four compilers for Mac OS X: GCC 4.0, GCC 4.2, LLVM-GCC 4.2 (the GCC 4.2 front-end combined with an LLVM back-end), and Clang, in order of increasing LLVM-ness. Here's a diagram:

    Mac OS X compilers

    Mac OS X compilers

    All of these compilers are binary-compatible on Mac OS X, which means you can, for example, build a library with one compiler and link it into an executable built with another. They're moreover any command-line and source-compatible—in theory, anyway. Clang does not yet back some of the more esoteric features of GCC. Clang moreover only supports C, Objective-C, and a tiny bit of C++ (Clang(uage), collect it?) whereas GCC supports many more. Apple is committed to complete C++ back for Clang, and hopes to labor out the remaining GCC incompatibilities during Snow Leopard's lifetime.

    Clang brings with it the two headline attributes you anticipate in a hot, fresh compiler: shorter compile times and faster executables. In Apple's testing with its own applications such as iCal, Address Book, and Xcode itself, plus third-party applications enjoy Adium and Growl, Clang compiles nearly three times faster than GCC 4.2. As for the hasten of the finished product, the LLVM back-end, whether used in Clang or in LLVM-GCC, produces executables that are 5-25% faster than those generated by GCC 4.2.

    Clang is moreover more developer-friendly than its GCC predecessors. I concede that this topic doesn't beget much to execute with taking advantage of multiple CPU cores and so on, but it's positive to exist the first thing that a developer actually notices when using Clang. Indulge me.

    For starters, Clang is embeddable, so Xcode can consume the identical compiler infrastructure for interactive features within the IDE (symbol look-up, code completion, etc.) as it uses to compile the final executable. Clang moreover creates and preserves more extensive metadata while compiling, resulting in much better oversight reporting. For example, when GCC tells you this:

    GCC oversight
 message for an unknown type

    It's not exactly clear what the problem is, especially if you're fresh to C programming. Yes, any you hotshots already know what the problem is (especially if you saw this instance at WWDC), but I think everyone can agree that this error, generated by Clang, is a lot more helpful:

    Clang oversight
 message for an unknown type

    Maybe a novice soundless wouldn't know what to do, but at least it's clear where the problem lies. Figuring out why the compiler doesn't know about NSString is a much more focused assignment than can exist derived from GCC's cryptic error.

    Even when the message is clear, the context may not be. prefer this oversight from GCC:

    GCC oversight
 message for despicable operands

    Sure, but there are four "+" operators on that unique line. Which one has the problematic operands? Thanks to its more extensive metadata, Clang can pinpoint the problem:

    Clang oversight
 message for despicable operands

    Sometimes the oversight is perfectly clear, but it just seems a bit off, enjoy this situation where jumping to the oversight as reported by GCC puts you on the line below where you actually want to add the missing semicolon:

    GCC oversight
 message for missing semicolon

    The tiny things count, you know? Clang goes that extra mile:

    Clang oversight
 message for missing semicolon

    Believe it or not, stuff enjoy this means a lot to developers. And then there are the not-so-little things that carryweight even more, enjoy the LLVM-powered static analyzer. The image below shows how the static analyzer displays its discovery of a possible bug.

    OH HAI I establish UR BUGOH HAI I establish UR BUG

    Aside from the whimsy of the tiny arrows (which, admit it, are adorable), the actual bug it's highlighting is something that every programmer can imagine creating (say, through some hasty editing). The static analyzer has determined that there's at least one path through this set of nested conditionals that leaves the myName variable uninitialized, thus making the attempt to send the mutableCopy message in the final line potentially dangerous.

    I'm positive Apple is going hog-wild running the static analyzer on any of its applications and the operating system itself. The prospect of an automated way to determine bugs that may beget existed for years in the depths of a huge codebase is almost pornographic to developers—platform owners in particular. To the degree that Mac OS X 10.6.0 is more bug-free than the previous 10.x.0 releases, LLVM surely deserves some significant piece of the credit.

    Master of the house

    By committing to a Clang/LLVM-powered future, Apple has finally taken complete control of its evolution platform. The CodeWarrior undergo apparently convinced Apple that it's unwise to rely on a third party for its platform's evolution tools. Though it's taken many years, I think even the most diehard Metrowerks fan would beget to agree that Xcode in Snow Leopard is now a pretty damn safe IDE.

    After years of struggling with the disconnect between the goals of the GCC project and its own compiler needs, Apple has finally slash the apron strings. OK, granted, GCC 4.2 is soundless the default compiler in Snow Leopard, but this is a transitional phase. Clang is the recommended compiler, and the focus of any of Apple's future efforts.

    I know what you're thinking. This is swell and all, but how are these compilers helping developers better leverage the expanding swarm of transistors at their disposal? As you'll view in the following sections, LLVM's scaly, metallic head pops up in a few key places.


    In Snow Leopard, Apple has introduced a C language extension called "blocks." Blocks add closures and anonymous functions to C and the C-derived languages C++, Objective-C, and Objective C++.

    These features beget been available in dynamic programming languages such as Lisp, Smalltalk, Perl, Python, Ruby, and even the unassuming JavaScript for a long time (decades, in the case of Lisp—a fact gladly offered by its practitioners). While dynamic-language programmers prefer closures and anonymous functions for granted, those who labor with more traditional, statically compiled languages such as C and its derivatives may find them quite exotic. As for non-programmers, they likely beget no interest in this topic at all. But I'm going to attempt an explanation nonetheless, as blocks configuration the foundation of some other exciting technologies to exist discussed later.

    Perhaps the simplest way to clarify blocks is that they get functions another configuration of data. C-derived languages already beget office pointers, which can exist passed around enjoy data, but these can only point to functions created at compile time. The only way to influence the behavior of such a office is by passing different arguments to the office or by setting global variables which are then accessed from within the function. Both of these approaches beget gigantic disadvantages

    Passing arguments becomes cumbersome as their number and complexity grows. Also, it may exist that you beget limited control over the arguments that will exist passed to your function, as is often the case with callbacks. To compensate, you may beget to bundle up any of your exciting state into a context protest of some kind. But when, how, and by whom that context data will exist disposed of can exist difficult to pin down. Often, a second callback is required for this. It's any quite a pain.

    As for the consume of global variables, in addition to being a well-known anti-pattern, it's moreover not thread-safe. To get it so requires locks or some other configuration of mutual exclusion to preclude multiple invocations of the identical office from stepping on each other's toes. And if there's anything worse than navigating a sea of callback-based APIs, it's manually dealing with thread safety issues.

    Blocks bypass any of these problems by allowing functional blobs of code—blocks—to exist defined at runtime. It's easiest to understand with an example. I'm going to start by using JavaScript, which has a bit friendlier syntax, but the concepts are the same.

    b = get_number_from_user(); multiplier = function(a) { return a * b };

    Here I've created a office named multiplier that takes a unique argument, a, and multiplies it by a second value, b, that's provided by the user at runtime. If the user supplied the number 2, then a convene to multiplier(5) would return the value 10.

    b = get_number_from_user(); // assume it's 2 multiplier = function(a) { return a * b }; r = multiplier(5); // 5 * 2 = 10

    Here's the instance above done with blocks in C.

    b = get_number_from_user(); // assume it's 2 multiplier = ^ int (int a) { return a * b; }; r = multiplier(5); // 5 * 2 = 10

    By comparing the JavaScript code to the C version, I hope you can view how it works. In the C example, that tiny caret ^ is the key to the syntax for blocks. It's benign of ugly, but it's very C-like in that it parallels the existing C syntax for office pointers, with ^ in situation of *, as this instance illustrates:

    /* A office that takes a unique integer dispute and returns a pointer to a office that takes two integer arguments and returns a floating-point number. */ float (*func2(int a))(int, int); /* A office that takes a unique integer dispute and returns a obstruct that takes two integer arguments and returns a floating-point number. */ float (^func1(int a))(int, int);

    You'll just beget to trust me when I inform you that this syntax actually makes sense to seasoned C programmers.

    Now then, does this carryweight that C is suddenly a dynamic, high-level language enjoy JavaScript or Lisp? Hardly. The existing distinction between the stack and the heap, the rules governing automatic and static variables, and so on are any soundless in complete effect. Plus, now there's a entire fresh set of rules for how blocks interact with each of these things. There's even a fresh __block storage nature attribute to further control the scope and lifetime of values used in blocks.

    All of that said, blocks are soundless a huge win in C. Thanks to blocks, the friendlier APIs long enjoyed by dynamic languages are now possible in C-derived languages. For example, suppose you want to apply some operation to every line in a file. To execute so in a low-level language enjoy C requires some amount of boilerplate code to open and read from the file, handle any errors, read each line into a buffer, and spotless up at the end.

    FILE *fp = fopen(filename, "r"); if (fp == NULL) { perror("Unable to open file"); } else { char line[MAX_LINE]; while (fgets(line, MAX_LINE, fp)) { work; work; work; } fclose(fp); }

    The piece in bold is an abstract representation of what you're planning to execute to each line of the file. The leisure is the literal boilerplate code. If you find yourself having to apply varying operations to every line of many different files, this boilerplate code gets tedious.

    What you'd enjoy to exist able to execute is factor it out into a office that you can call. But then you're faced with the problem of how to express the operation you'd enjoy to fulfill on each line of the file. In the middle of each obstruct of boilerplate may exist many lines of code expressing the operation to exist applied. This code may reference or modify local variables which are affected by the runtime behavior of the program, so traditional office pointers won't work. What to do?

    Thanks to blocks, you can define a office that takes a filename and a obstruct as arguments. This gets any the uninteresting code out of your face.

    foreach_line(filename, ^ (char *line) { work; work; work; });

    What's left is a much clearer expression of your intent, with less surrounding noise. The dispute after filename is a literal obstruct that takes a line of text as an argument.

    Even when the volume of boilerplate is small, the simplicity and clarity prize is soundless worthwhile. reckon the simplest possible loop that executes a fixed number of times. In C-based languages, even that basic construct offers a surprising number of opportunities for bugs. Let's do_something() 10 times:

    for (int i = 0; i <= 10; i++) { do_something(); }

    Oops, I've got a tiny bug there, don't I? It happens to the best of us. But why should this code exist more complicated than the sentence describing it. execute something 10 times! I never want to screw that up again. Blocks can help. If they just invest a tiny pains up front to define a helper function:

    typedef void (^work_t)(void); void repeat(int n, work_t block) { for (int i = 0; i < n; ++i) block(); }

    We can banish the bug for good. Now, repeating any capricious obstruct of code a specific number of times is any but idiot-proof:

    repeat(10, ^{ do_something() }); repeat(20, ^{ do_other_thing() });

    And remember, the obstruct dispute to repeat() can accommodate exactly the identical benign of code, literally copied and pasted, that would beget appeared within a traditional for loop.

    All these possibilities and more beget been well explored by dynamic languages: map, reduce, collect, etc. Welcome, C programmers, to a higher order.

    Apple has taken these lessons to heart, adding over 100 fresh APIs that consume blocks in Snow Leopard. Many of these APIs would not exist possible at any without blocks, and any of them are more elegant and concise than they would exist otherwise.

    It's Apple end to submit blocks as an official extension to one or more of the C-based languages, though it's not yet clear which standards bodies are receptive to the proposal. For now, blocks are supported by any four of Apple's compilers in Mac OS X.

    Concurrency in the actual world: a prelude

    The struggle to get efficient consume of a great number of independent computing devices is not new. For decades, the province of high-performance computing has tackled this problem. The challenges faced by people writing software for supercomputers many years ago beget now trickled down to desktop and even mobile computing platforms.

    In the PC industry, some people saw this coming earlier than others. Almost 20 years ago, exist Inc. was formed around the belief of creating a PC platform unconstrained by legacy limitations and entirely prepared for the coming abundance of independent computing units on the desktop. To that end, exist created the BeBox, a dual-CPU desktop computer, and BeOS, a brand-new operating system.

    The signature entangle phrase for BeOS was "pervasive multithreading." The BeBox and other machines running BeOS leveraged every ounce of the diminutive (by today's standards, anyway) computing resources at their disposal. The demos were impressive. A dual 66 MHz machine (don't get me betray another graph) could play multiple videos simultaneously while moreover playing several audio tracks from a CD—some backwards— and any the while, the user interface remained completely responsive.

    Let me inform you, having lived through this era myself, the undergo was mind-blowing at the time. BeOS created instant converts out of hundreds of technology enthusiasts, many of whom maintain that today's desktop computing undergo soundless doesn't match the responsiveness of BeOS. This is certainly suitable emotionally, if not necessarily literally.

    After nearly purchasing exist in the late 1990s, Apple bought NeXT instead, and the leisure is history. But had Apple gone with diagram exist instead, Mac developers might beget had a uneven road ahead. While any that pervasive multithreading made for impressive technology demos and a powerful user experience, it could exist extremely demanding on the programmer. BeOS was any about threads, going so far as to maintain a divorce thread for each window. Whether you liked it or not, your BeOS program was going to exist multithreaded.

    Parallel programming is notoriously hard, with the manual management of POSIX-style threads representing the profound sojourn of that pool. The best programmers in the world are hard-pressed to create great multithreaded programs in low-level languages enjoy C or C++ without finding themselves impaled on the spikes of deadlock, race conditions, and other perils inherent in the consume of in multiple simultaneous threads of execution that partake the identical recollection space. Extremely careful application of locking primitives is required to avoid performance-robbing levels of contention for shared data—and the bugs, oh the bugs! The term "Heisenbug" may as well beget been invented for multithreaded programming.

    Nineteen years after exist tilted at the windmill of the widening swath of silicon in desktop PCs, the challenge has only grown. Those transistors are out there, man—more than ever before. Single-threaded programs on today's high-end desktop Macs, even when using "100%" CPU, extend but a unique glowing tower in a sea of sixteen otherwise vacuous lanes on a CPU monitor window.

    A wide-open plain of transistorsA wide-open plain of transistors

    And woe exist unto the user if that pegged CPU core is running the main thread of a GUI application on Mac OS X. A CPU-saturated main thread means no fresh user inputs are being pulled off the event queue by the application. A few seconds of that and an traditional friend makes its appearance: the spinning beach ball of death.


    Nooooooooo!!! Image from The Iconfactory

    This is the enemy: hardware with more computing resources than programmers know what to execute with, most of it completely idle, and any the while the user is utterly blocked in his attempts to consume the current application. What's Snow Leopard's answer? Read on…

    Grand Central Dispatch Apple's GCD branding: <a href="">Railfan</a> <a href="">service</a>Apple's GCD branding: Railfan service

    Snow Leopard's acknowledge to the concurrency conundrum is called grand Central Dispatch (GCD). As with QuickTime X, the title is extremely apt, though this is not entirely clear until you understand the technology.

    The first thing to know about GCD is that it's not a fresh Cocoa framework or similar special-purpose frill off to the side. It's a plain C library baked into the lowest levels of Mac OS X. (It's in libSystem, which incorporates libc and the other code that sits at the very bottom of userspace.)

    There's no exigency to link in a fresh library to consume GCD in your program. Just #include <dispatch/dispatch.h> and you're off to the races. The fact that GCD is a C library means that it can exist used from any of the C-derived languages supported on Mac OS X: Objective-C, C++, and Objective-C++.

    Queues and threads

    GCD is built on a few simple entities. Let's start with queues. A queue in GCD is just what it sounds like. Tasks are enqueued, and then dequeued in FIFO order. (That's "First In, First Out," just enjoy the checkout line at the supermarket, for those who don't know and don't want to ensue the link.) Dequeuing the assignment means handing it off to a thread where it will execute and execute its actual work.

    Though GCD queues will hand tasks off to threads in FIFO order, several tasks from the identical queue may exist running in parallel at any given time. This animation demonstrates.

    A grand Central Dispatch queue in action

    You'll notice that assignment B completed before assignment A. Though dequeuing is FIFO, assignment completion is not. moreover note that even though there were three tasks enqueued, only two threads were used. This is an principal feature of GCD which we'll argue shortly.

    But first, let's spy at the other benign of queue. A serial queue works just enjoy a everyday queue, except that it only executes one assignment at a time. That means assignment completion in a serial queue is moreover FIFO. Serial queues can exist created explicitly, just enjoy everyday queues, but each application moreover has an implicit "main queue" which is a serial queue that runs on the main thread.

    The animation above shows threads appearing as labor needs to exist done, and disappearing as they're no longer needed. Where execute these threads promote from and where execute they Go when they're done? GCD maintains a global pool of threads which it hands out to queues as they're needed. When a queue has no more pending tasks to flee on a thread, the thread goes back into the pool.

    This is an extremely principal aspect of GCD's design. Perhaps surprisingly, one of the most difficult parts of extracting maximum performance using traditional, manually managed threads is figuring out exactly how many threads to create. Too few, and you risk leaving hardware idle. Too many, and you start to disburse a significant amount of time simply shuffling threads in and out of the available processor cores.

    Let's bid a program has a problem that can exist split into eight separate, independent units of work. If this program then creates four threads on an eight-core machine, is this an instance of creating too many or too few threads? Trick question! The acknowledge is that it depends on what else is happening on the system.

    If six of the eight cores are totally saturated doing some other work, then creating four threads will just require the OS to fritter time rotating those four threads through the two available cores. But wait, what if the process that was saturating those six cores finishes? Now there are eight available cores but only four threads, leaving half the cores idle.

    With the exception of programs that can reasonably anticipate to beget the entire machine to themselves when they run, there's no way for a programmer to know ahead of time exactly how many threads he should create. Of the available cores on a particular machine, how many are in use? If more become available, how will my program know?

    The bottom line is that the optimal number of threads to setaside in flight at any given time is best determined by a single, globally watchful entity. In Snow Leopard, that entity is GCD. It will maintain zero threads in its pool if there are no queues that beget tasks to run. As tasks are dequeued, GCD will create and dole out threads in a way that optimizes the consume of the available hardware. GCD knows how many cores the system has, and it knows how many threads are currently executing tasks. When a queue no longer needs a thread, it's returned to the pool where GCD can hand it out to another queue that has a assignment ready to exist dequeued.

    There are further optimizations inherent in this scheme. In Mac OS X, threads are relatively heavyweight. Each thread maintains its own set of register values, stack pointer, and program counter, plus kernel data structures tracking its security credentials, scheduling priority, set of pending signals and signal masks, etc. It any adds up to over 512 KB of overhead per thread. Create a thousand threads and you've just burned about a half a gigabyte of recollection and kernel resources on overhead alone, before even considering the actual data within each thread.

    Compare a thread's 512 KB of baggage with GCD queues which beget a mere 256 bytes of overhead. Queues are very lightweight, and developers are encouraged to create as many of them as they need—thousands, even. In the earlier animation, when the queue was given two threads to process its three tasks, it executed two tasks on one of the threads. Not only are threads heavyweight in terms of recollection overhead, they're moreover relatively costly to create. Creating a fresh thread for each assignment would exist the worst possible scenario. Every time GCD can consume a thread to execute more than one task, it's a win for overall system efficiency.

    Remember the problem of the programmer trying to design out how many threads to create? Using GCD, he doesn't beget to worry about that at all. Instead, he can concentrate entirely on the optimal concurrency of his algorithm in the abstract. If the best-case scenario for his problem would consume 500 concurrent tasks, then he can Go ahead and create 500 GCD queues and deal his labor among them. GCD will design out how many actual threads to create to execute the work. Furthermore it will adjust the number of threads dynamically as the conditions on the system change.

    But perhaps most importantly, as fresh hardware is released with more and more CPU cores, the programmer does not exigency to change his application at all. Thanks to GCD, it will transparently prefer advantage of any and any available computing resources, up to—but not past!—the optimal amount of concurrency as originally defined by the programmer when he chose how many queues to create.

    But wait, there's more! GCD queues can actually exist arranged in arbitrarily tangled directed acyclic graphs. (Actually, they can exist cyclic too, but then the behavior is undefined. Don't execute that.) Queue hierarchies can exist used to funnel tasks from disparate subsystems into a narrower set of centrally controlled queues, or to oblige a set of everyday queues to delegate to a serial queue, effectively serializing them any indirectly.

    There are moreover several levels of priority for queues, dictating how often and with what urgency threads are distributed to them from the pool. Queues can exist suspended, resumed, and cancelled. Queues can moreover exist grouped, allowing any tasks distributed to the group to exist tracked and accounted for as a unit.

    Overall, GCD's consume of queues and threads forms a simple, elegant, but moreover extremely pragmatic architecture.


    Okay, so GCD is a powerful way to get efficient consume of the available hardware. But is it really any better than BeOS's approach to multithreading? We've already seen a few ways that GCD avoids the pitfalls of BeOS (e.g., the reuse of threads and the maintenance of a global pool of threads that's correctly sized for the available hardware). But what about the problem of overwhelming the programmer by requiring threads in places where they complicate, rather than enhance the application?

    GCD embodies a philosophy that is at the antithetical sojourn of the spectrum from BeOS's "pervasive multithreading" design. Rather than achieving responsiveness by getting every possible component of an application running concurrently on its own thread (and paying a heavy cost in terms of tangled data sharing and locking concerns), GCD encourages a much more limited, hierarchical approach: a main application thread where any the user events are processed and the interface is updated, and worker threads doing specific jobs as needed.

    In other words, GCD doesn't require developers to think about how best to split the labor of their application into multiple concurrent threads (though when they're ready to execute that, GCD will exist willing and able to help). At its most basic level, GCD aims to embolden developers to stagger from thinking synchronously to thinking asynchronous. Something enjoy this: "Write your application as usual, but if there's any piece of its operation that can reasonably exist expected to prefer more than a few seconds to complete, then for the cherish of Zarzycki, collect it off the main thread!"

    That's it; no more, no less. Beach ball banishment is the cornerstone of user interface responsiveness. In some respects, everything else is gravy. But most developers know this intuitively, so why execute they soundless view the beach ball in Mac OS X applications? Why don't any applications already execute any of their potentially long-running tasks on background threads?

    A few reasons beget been mentioned already (e.g., the difficulty of knowing how many threads to create) but the gigantic one is much more pragmatic. Spinning off a thread and collecting its result has always been a bit of a pain. It's not so much that it's technically difficult, it's just that it's such an categorical demolish from coding the actual labor of your application to coding any this task-management plumbing. And so, especially in borderline cases, enjoy an operation that may prefer 3 to 5 seconds, developers just execute it synchronously and stagger onto the next thing.

    Unfortunately, there's a surprising number of very common things that an application can execute that execute quickly most of the time, but beget the potential to prefer much longer than a few seconds when something goes wrong. Anything that touches the file system may stall at the lowest levels of the OS (e.g., within blocking read() and write() calls) and exist matter to a very long (or at least an "unexamined-by-the-application-developer") timeout. The identical goes for title lookups (e.g., DNS or LDAP), which almost always execute instantly, but entangle many applications completely off-guard when they start taking their sweet time to return a result. Thus, even the most meticulously constructed Mac OS X applications can sojourn up throwing the beach ball in their face from time to time.

    With GCD, Apple is epigram it doesn't beget to exist this way. For example, suppose a document-based application has a button that, when clicked, will analyze the current document and pomp some exciting statistics about it. In the common case, this analysis should execute in under a second, so the following code is used to connect the button with an action:

    - (IBAction)analyzeDocument:(NSButton *)sender { NSDictionary *stats = [myDoc analyze]; [myModel setDict:stats]; [myStatsView setNeedsDisplay:YES]; [stats release]; }

    The first line of the office corpse analyzes the document, the second line updates the application's internal state, and the third line tells the application that the statistics view needs to exist updated to reflect this fresh state. It any follows a very common pattern, and it works powerful as long as notabit of these steps—which are any running on the main thread, remember—takes too long. Because after the user presses the button, the main thread of the application needs to handle that user input as expeditiously as possible so it can collect back to the main event loop to process the next user action.

    The code above works powerful until a user opens a very great or very tangled document. Suddenly, the "analyze" step doesn't prefer one or two seconds, but 15 or 30 seconds instead. Hello, beach ball. And still, the developer is likely to hem and haw: "This is really an exceptional situation. Most of my users will never open such a great file. And anyway, I really don't want to start reading documentation about threads and adding any that extra code to this simple, four-line function. The plumbing would dwarf the code that does the actual work!"

    Well, what if I told you that you could stagger the document analysis to the background by adding just two lines of code (okay, and two lines of closing braces), any located within the existing function? No application-global objects, no thread management, no callbacks, no dispute marshalling, no context objects, not even any additional variables. Behold, grand Central Dispatch:

    - (IBAction)analyzeDocument:(NSButton *)sender { dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSDictionary *stats = [myDoc analyze]; dispatch_async(dispatch_get_main_queue(), ^{ [myModel setDict:stats]; [myStatsView setNeedsDisplay:YES]; [stats release]; }); }); }

    There's a hell of a lot of packed into those two lines of code. any of the functions in GCD commence with dispatch_, and you can view four such calls in the blue lines of code above. The key to the minimal invasiveness of this code is revealed in the second dispute to the two dispatch_async() calls. Thus far, I've been discussing "units of work" without specifying how, exactly, GCD models such a thing. The answer, now revealed, should look obvious in retrospect: blocks! The aptitude of blocks to capture the surrounding context is what allows these GCD calls to exist dropped privilege into some existing code without requiring any additional setup or re-factoring or other contortions in service of the API.

    But the best piece of this code is how it deals with the problem of detecting when the background assignment completes and then showing the result. In the synchronous code, the analyze manner convene and the code to update the application pomp simply issue in the desired sequence within the function. In the asynchronous code, miraculously, this is soundless the case. Here's how it works.

    The outer dispatch_async() convene puts a assignment on a global concurrent GCD queue. That task, represented by the obstruct passed as the second argument, contains the potentially time-consuming analyze manner call, plus another convene to dispatch_async() that puts a assignment onto the main queue—a serial queue that runs on the main thread, remember—to update the application's user interface.

    User interface updates must any exist done from the main thread in a Cocoa application, so the code in the inner obstruct could not exist executed anywhere else. But rather than having the background thread send some benign of special-purpose notification back to the main thread when the analyze manner convene completes (and then adding some code to the application to detect and handle this notification), the labor that needs to exist done on the main thread to update the pomp is encapsulated in yet another obstruct within the larger one. When the analyze convene is done, the inner obstruct is setaside onto the main queue where it will (eventually) flee on the main thread and execute its labor of updating the display.

    Simple, elegant, and effective. And for developers, no more excuses.

    Believe it or not, it's just as effortless to prefer a serial implementation of a progression of independent operations and parallelize it. The code below does labor on matter elements of data, one after the other, and then summarizes the results once any the elements beget been processed.

    for (i = 0; i < count; i++) { results[i] = do_work(data, i); } total = summarize(results, count);

    Now here's the parallel version which puts a divorce assignment for each constituent onto a global concurrent queue. (Again, it's up to GCD to elect how many threads to actually consume to execute the tasks.)

    dispatch_apply(count, dispatch_get_global_queue(0, 0), ^(size_t i) { results[i] = do_work(data, i); }); total = summarize(results, count);

    And there you beget it: a for loop replaced with a concurrency-enabled equivalent with one line of code. No preparation, no additional variables, no impossible decisions about the optimal number of threads, no extra labor required to wait for any the independent tests to complete. (The dispatch_apply() convene will not return until any the tasks it has dispatched beget completed.) Stunning.

    Grand Central Awesome

    Of any the APIs added in Snow Leopard, grand Central Dispatch has the most far-reaching implications for the future of Mac OS X. Never before has it been so effortless to execute labor asynchronously and to spread workloads across many CPUs.

    When I first heard about grand Central Dispatch, I was extremely skeptical. The greatest minds in computer science beget been working for decades on the problem of how best to extract parallelism from computing workloads. Now here was Apple apparently promising to decipher this problem. Ridiculous.

    But grand Central Dispatch doesn't actually address this issue at all. It offers no back whatsoever in deciding how to split your labor up into independently executable tasks—that is, deciding what pieces can or should exist executed asynchronously or in parallel. That's soundless entirely up to the developer (and soundless a tough problem). What GCD does instead is much more pragmatic. Once a developer has identified something that can exist split off into a divorce task, GCD makes it as effortless and non-invasive as possible to actually execute so.

    The consume of FIFO queues, and especially the existence of serialized queues, seems counter to the spirit of ubiquitous concurrency. But we've seen where the Platonic ideal of multithreading leads, and it's not a pleasant situation for developers.

    One of Apple's slogans for grand Central Dispatch is "islands of serialization in a sea of concurrency." That does a powerful job of capturing the practical reality of adding more concurrency to run-of-the-mill desktop applications. Those islands are what seclude developers from the thorny problems of simultaneous data access, deadlock, and other pitfalls of multithreading. Developers are encouraged to identify functions of their applications that would exist better executed off the main thread, even if they're made up of several sequential or otherwise partially interdependent tasks. GCD makes it effortless to demolish off the entire unit of labor while maintaining the existing order and dependencies between subtasks.

    Those with some multithreaded programming undergo may exist unimpressed with the GCD. So Apple made a thread pool. gigantic deal. They've been around forever. But the angels are in the details. Yes, the implementation of queues and threads has an elegant simplicity, and baking it into the lowest levels of the OS really helps to lower the perceived barrier to entry, but it's the API built around blocks that makes grand Central Dispatch so attractive to developers. Just as Time Machine was "the first backup system people will actually use," grand Central Dispatch is poised to finally spread the heretofore dismal technique of asynchronous application design to any Mac OS X developers. I can't wait.

    OpenCL Somehow, OpenCL got in on the <a href="">"core" branding</a>Somehow, OpenCL got in on the "core" branding

    So far, we've seen a few examples of doing more with more: a new, more modern compiler infrastructure that supports an principal fresh language feature, and a powerful, pragmatic concurrency API built on top of the fresh compilers' back for said language feature. any this goes a long way towards helping developers and the OS itself get maximum consume of the available hardware.

    But CPUs are not the only components experiencing a glut of transistors. When it comes to the proliferation of independent computation engines, another piece of silicon inside every Mac is the undisputed title holder: the GPU.

    The numbers inform the tale. While Mac CPUs accommodate up to four cores (which may betray up as eight rational cores thanks to symmetric multithreading), high-end GPUs accommodate well over 200 processor cores. While CPUs are just now edging over 100 GFLOPS, the best GPUs are capable of over 1,000 GFLOPS. That's one trillion floating-point operations per second. And enjoy CPUs, GPUs now promote more than one on a board.

    Writing for the GPU

    Unfortunately, the cores on a GPU are not general-purpose processors (at least not yet). They're much simpler computing engines that beget evolved from the fixed-function silicon of their ancestors that could not exist programmed directly at all. They don't back the moneyed set of instructions available on CPUs, the maximum size of the programs that will flee is often limited and very small, and not any of the features of the industry-standard IEEE floating-point computation specification are supported.

    Today's GPUs can exist programmed, but the most common forms of programmability are soundless firmly planted in the world of graphics programming: vertex shaders, geometry shaders, pixel shaders. Most of the languages used to program GPUs are similarly graphically focused: HLSL, GLSL, Cg.

    Nevertheless, there are computational tasks outside the realm of graphics that are a safe fit for GPU hardware. It would exist nice if there were a non-graphics-oriented language to write them in. Creating such a thing is quite a challenge, however. GPU hardware varies wildly in every imaginable way: number and nature of execution units, available data formats, instruction sets, recollection architecture, you title it. Programmers don't want to exist exposed to these differences, but it's difficult to labor around the complete lack of a feature or the unavailability of a particular data type.

    GPU vendor NVIDIA gave it a shot, however, and produced CUDA: a subset of the C language with extensions for vector data types, data storage specifiers that reflect typical GPU recollection hierarchy, and several bundled computational libraries. CUDA is but one entrant in the burgeoning GPGPU province (General-Purpose computing on Graphics Processing Units). But coming from a GPU vendor, it faces an uphill battle with developers who really want a vendor-agnostic solution.

    In the world of 3D programming, OpenGL fills that role. As you've surely guessed by now, OpenCL aims to execute the identical for general-purpose computation. In fact, OpenCL is supported by the identical consortium as OpenGL: the ominously named Khronos Group. But get no mistake, OpenCL is Apple's baby.

    Apple understood that OpenCL's best haphazard of success was to become an industry standard, not just an Apple technology. To get that happen, Apple needed the cooperation of the top GPU vendors, plus an agreement with an established, widely-recognized standards body. It took a while, but now it's any promote together.

    OpenCL is a lot enjoy CUDA. It uses a C-like language with the vector extensions, it has a similar model of recollection hierarchy, and so on. This is no surprise, considering how closely Apple worked with NVIDIA during the evolution of OpenCL. There's moreover no way any of the gigantic GPU vendors would radically alter their hardware to back an as-yet-unproven standard, so OpenCL had to labor well with GPUs already designed to back CUDA, GLSL, and other existing GPU programming languages.

    The OpenCL difference

    This is any well and good, but to beget any impact on the day-to-day life of Mac users, developers actually beget to consume OpenCL in their applications. Historically, GPGPU programming languages beget not seen much consume in traditional desktop applications. There are several reasons for this.

    Early on, writing programs for the GPU often required the consume of vendor-specific assembly languages that were far removed from the undergo of writing a typical desktop application using a concurrent GUI API. The more C-like languages that came later remained either graphics-focused, vendor-specific, or both. Unless running code on the GPU would accelerate a core component of an application by an order of magnitude, most developers soundless could not exist bothered to navigate this exotic world.

    And even if the GPU did give a huge hasten boost, relying on graphics hardware for general-purpose computation was very likely to narrow the potential audience for an application. Many older GPUs, especially those establish in laptops, cannot flee languages enjoy CUDA at all.

    Apple's key determination in the design of OpenCL was to allow OpenCL programs to flee not just on GPUs, but on CPUs as well. An OpenCL program can query the hardware it's running on and enumerate any eligible OpenCL devices, categorized as CPUs, GPUs, or dedicated OpenCL accelerators (the IBM Cell Blade server—yes, that Cell—is apparently one such device). The program can then dispatch its OpenCL tasks to any available device. It's moreover possible to create a unique rational device consisting of any combination of eligible computing resources: two GPUs, a GPU and two CPUs, etc.

    The advantages of being able to flee OpenCL programs on both CPUs and GPUs are obvious. Every Mac running Snow Leopard, not just those with the recent-model GPUs, can flee a program that contains OpenCL code. But there's more to it than that.

    Certain kinds of algorithms actually flee faster on high-end multi-core CPUs than on even the very fastest available GPUs. At WWDC 2009, an engineer from Electronic Arts demonstrated an OpenCL port of a skinning engine from one of its games running over four times faster on a four-core Mac Pro than on an NVIDIA GeForce GTX285. Restructuring the algorithm and making many other changes to better suit the limitations (and strengths) of the GPU pushed it back ahead of the CPU by a wide margin, but sometimes you just want the system you beget to flee well as-is. Being able to target the CPU is extremely useful in those cases.

    Moreover, writing vector code for Intel CPUs "the old-fashioned way" can exist a actual pain. There's MMX, SSE, SSE2, SSE3, and SSE4 to deal with, any with slightly different capabilities, and any of which oblige the programmer to write code enjoy this:

    r1 = _mm_mul_ps(m1, _mm_add_ps(x1, x2));

    OpenCL's indigenous back for vector types de-clutters the code considerably:

    r1 = m1 * (x1 + x2);

    Similarly, OpenCL's back for implicit parallelism makes it much easier to prefer advantage of multiple CPU cores. Rather than writing any the logic to split your data into pieces and deal those pieces to the parallel-computing hardware, OpenCL lets you write just the code to operate on a unique piece of the data and then send it, along with the entire obstruct of data and the desired flush of parallelism, to the computing device.

    This arrangement is taken for granted in traditional graphics programming, where code implicitly works on any pixels in a texture or any vertices in a polygon; the programmer only needs to write code that will exist in the "inner loop," so to speak. An API with back for this benign of parallelism that runs on CPUs as well as GPUs fills an principal gap.

    Writing to OpenCL moreover future-proofs task- or data-parallel code. Just as the identical OpenGL code will collect faster and faster as newer, more powerful GPUs are released, so too will OpenCL code fulfill better as CPUs and GPUs collect faster. The extra layer of abstraction that OpenCL provides makes this possible. For example, though vector code written several years ago using MMX got faster as CPU clock speeds increased, a more significant performance boost likely requires porting the code to one of the newer SSE instruction sets.

    As newer, more powerful vector instruction sets and parallel hardware becomes available, Apple will update its OpenCL implementations to prefer advantage of them, just as video card makers and OS vendors update their OpenGL drivers to prefer advantage of faster GPUs. Meanwhile, the application developer's code remains unchanged. Not even a recompile is required.

    Here exist dragons (and trains)

    How, you may wonder, can the identical compiled code sojourn up executing using SSE2 on one machine and SSE4 on another, or on an NVIDIA GPU on one machine and an ATI GPU on another? To execute so would require translating the device-independent OpenCL code to the instruction set of the target computing device at runtime. When running on a GPU, OpenCL must moreover ship the data and the newly translated code over to the video card and collect the results at the end. When running on the CPU, OpenCL must marshal for the requested flush of parallelism by creating and distributing threads appropriately to the available cores.

    Well, wouldn't you know it? Apple just happens to beget two technologies that decipher these exact problems.

    Want to compile code "just in time" and ship it off to a computing device? That's what LLVM was born to do—and, indeed, what Apple did with it in Leopard, albeit on a more limited scale. OpenCL is a natural extension of that work. LLVM allows Apple to write a unique code generator for each target instruction set, and concentrate any of its pains on a unique device-independent code optimizer. There's no longer any exigency to duplicate these tasks, using one compiler to create the static application executable and having to jury-rig another for just-in-time compilation.

    (Oh, and by the way, recollect Core Image? That's another API that needs to compile code just-in-time and ship it off to execute on parallel hardware enjoy GPUs and multi-core CPUs. In Snow Leopard, Core Image has been re-implemented using OpenCL, producing a hefty 25% overall performance boost.)

    To handle assignment parallelism and provision threads, OpenCL is built on top of grand Central Dispatch. This is such a natural fit that it's a bit surprising that the OpenCL API doesn't consume blocks. I think Apple decided that it shouldn't press its luck when it comes to getting its home-grown technologies adopted by other vendors. This determination already seems to exist paying off, as AMD has its own OpenCL implementation under way.

    The top of the pyramid

    Though the underlying technologies, Clang, blocks and grand Central Dispatch, will undoubtedly exist more widely used by developers, OpenCL represents the culmination of that particular technological thread in Snow Leopard. This is the gold yardstick of software engineering: creating a fresh public API by structure it on top of lower-level, but equally well-designed and implemented public APIs.

    A unified abstraction for the ever-growing heterogeneous collection of parallel computing silicon in desktop computers was sorely needed. We've got an increasing population of powerful CPU cores, but they soundless exist in numbers that are orders of magnitude lower than the hundreds of processing units in modern GPUs. On the other hand, GPUs soundless beget a ways to Go to entangle up with the power and flexibility of a full-fledged CPU core. But even with any the differences, writing code exclusively for either one of those worlds soundless smacks of leaving money on the table.

    With OpenCL in hand, there's no longer a exigency to setaside any your eggs in one silicon basket. And with the advent of hybrid CPU/GPU efforts enjoy Intel's Larabee, which consume CPU-caliber processing engines, but in much higher numbers, OpenCL may prove even more principal in the coming years.

    Transistor harvest

    Collectively, the concurrency-enabling features introduced in Snow Leopard depict the biggest boost to asynchronous and parallel software evolution in any Mac OS X release—perhaps in any desktop operating system release ever. It may exist difficult for end-users to collect excited about "plumbing" technologies enjoy grand Central Dispatch and OpenCL, let solitary compilers and programming language features, but it's upon these foundations that developers will create ever-more-impressive edifices of software. And if those applications tower over their synchronous, serial predecessors, it will exist because they stand on the shoulders of giants.

    QuickTime Player's fresh icon (Not a fan)QuickTime Player's fresh icon (Not a fan) QuickTime Player

    There's been some confusion surrounding QuickTime in Snow Leopard. The earlier section about QuickTime X explains what you exigency to know about the present and future of QuickTime as a technology and an API. But a few of Apple's decisions—and the extremely overloaded significance of the word "QuickTime" in the minds of consumers—have blurred the picture somewhat.

    The first head-scratcher occurs during installation. If you occur to click on the "Customize…" button during installation, you'll view the following options:

    QuickTime 7 is an optional install?QuickTime 7 is an optional install?

    We've already talked about Rosetta being an optional install, but QuickTime 7 too? Isn't QuickTime severely crippled without QuickTime 7? Why in the world would that exist an optional install?

    Well, there's no exigency to panic. That item in the installer should actually read "QuickTime Player 7." QuickTime 7, the traditional but extremely capable media framework discussed earlier, is installed by default in Snow Leopard—in fact, it's mandatory. But the player application, the one with the traditional blue "Q" icon, the one that many casual users actually think of as being "QuickTime," that's been replaced with a fresh QuickTime-X-savvy version sporting a pudgy fresh icon (see above right).

    The fresh player application is a gigantic departure from the old. Obviously, it leverages QuickTime X for more efficient video playback, but the user interface is moreover completely new. Gone are the gray border and bottom-mounted playback controls from the traditional QuickTime Player, replaced by a frameless window with a black title bar and a floating, moveable set of controls.

    The fresh QuickTime Player: boldly going where <a href="">NicePlayer</a> has gone before Enlarge / The fresh QuickTime Player: boldly going where NicePlayer has gone before

    It's enjoy a combination of the window treatment of the excellent NicePlayer application and the full-screen playback controls from the traditional QuickTime Player. I'm a bit bothered by two things. First, the ever-so-slightly clipped corners look enjoy a despicable idea. Am I just suppositious to give up those dozen-or-so pixels? NicePlayer does it right, showing crisp, square corners.

    Second, the floating playback controls obscure the movie. What if I'm scrubbing around looking for something in that piece of the frame? Yes, you can stagger the controls, but what if I'm looking for something in an unknown location in the frame? Also, the title bar obscures an entire swath of the top of the frame, and this can't exist moved. I treasure the compactness of this approach, but it'd exist nice if the title bar overlap could exist disabled and the controls could exist dragged off the movie entirely and docked to the bottom or something.

    (One blessing for people who partake my OCD tendencies: if you stagger the floating controls, they don't recollect their position the next time you open a movie. Why is that a blessing? Because if it worked the other way, we'd any disburse way too much time fretting about their inability to restore the controller to its default, precisely centered position. Sad, but true.)

    The fresh QuickTime Player presents a decidedly iMovie-like (or is it iPhone-like, nowadays?) interface for trimming video. Still-frame thumbnails are placed side-by-side to configuration a timeline, with adjustable stops at each sojourn for trimming.

    Trimming in the fresh QuickTime Player Enlarge / Trimming in the fresh QuickTime Player

    Holding down the option key changes from a thumbnail timeline to an audio waveform display:

    Trimming with audio waveform view Enlarge / Trimming with audio waveform view

    In both the video and audio cases, I beget to phenomenon exactly how useful the fancy timeline appearances are. The audio waveform is quite wee and compressed, and the limited horizontal space of the in-window pomp means a movie can only betray a handful of video frames in its timeline. Also, if there's any aptitude to execute fine adjustments using something other than extremely careful mouse movements (which are necessarily matter to a limited resolution) then I couldn't find it. Final slash Pro this is not.

    QuickTime Player has scholarly another fresh trick: screen recording. The controls are limited, so more demanding users will soundless beget a exigency for a full-featured screen recorder, but QuickTime Player gets the job done.

    Screen recording in QuickTime PlayerScreen recording in QuickTime Player

    There's moreover an audio-only option, with a similarly simplified collection of settings.

    Audio recordingAudio recording

    Finally, the fresh QuickTime Player has the aptitude to upload a movie directly to YouTube and MobileMe, send one via e-mail, or add it to your iTunes library. The export options are moreover vastly simplified, with preset options for iPhone/iPod, Apple TV, and HD 480p and 720p.

    Unfortunately, the list of things you can't execute with the fresh QuickTime Player is quite long. You can't cut, copy, and paste capricious portions of a movie (trimming only affects the ends); you can't extract or delete individual tracks or overlay one track onto another (optionally scaling to fit); you can't export a movie by choosing from the complete set of available QuickTime audio and video codecs. any of these things were possible with the traditional QuickTime Player—if, that is, you paid the $30 for a QuickTime Pro license. In the past, I've described this extra fee as "criminally stupid", but the features it enabled in QuickTime Player were really useful.

    It's tempting to attribute their absence in the fresh QuickTime Player to the previously discussed limitations of QuickTime X. But the fresh QuickTime Player is built on top of QTKit, which serves as a front-end for both QuickTime X and QuickTime 7. And it does, after all, feature some limited editing features enjoy trimming, plus some previously "Pro"-only features enjoy full-screen playback. Also, the fresh QuickTime Player can indeed play movies using third-party plug-ins—a feature clearly powered by QuickTime 7.

    Well, Snow Leopard has an extremely pleasant amaze waiting for you if you install the optional QuickTime Player 7. When I did so, what I got was the traditional QuickTime Player—somewhat insultingly installed in the "Utilities" folder—with any of its "Pro" features permanently unlocked. Yes, the tyranny of QuickTime Pro seems to exist at an end…

    QuickTime Pro: now free for everyone?QuickTime Pro: now free for everyone?

    …but perhaps the key word above is "seems," because QuickTime Player 7 does not beget any "pro" features unlocked for everyone. I installed Snow Leopard onto an vacuous disk, and QuickTime 7 was not automatically installed (as it is when the installer detects an existing QuickTime Pro license on the target disk). After booting from my fresh Snow Leopard volume, I manually installed the "QuickTime 7" optional component using the Snow Leopard installer disk.

    The result for me was a QuickTime Player 7 application with any pro features unlocked and with no visible QuickTime Pro registration information. I did, however, beget a QuickTime Pro license on one of the attached drives. Apparently, the installer detected this and gave me an unlocked QuickTime Player 7 application, even though the boot volume never had a QuickTime Pro license on it.

    The Dock

    The fresh appearance of some aspects of the Dock are accompanied by some fresh functionality as well. Clicking and holding on a running application's Dock icon now triggers Expos�, but only for the windows belonging to that application. Dragging a file onto a docked application icon and holding it there for a bit produces the identical result. You can then continue that identical drag onto one of the Exposé window thumbnails and hover there a bit to bring that window to the front and drop the file into it. It's a pretty handy technique, once you collect in the custom of doing it.

    The Exposé pomp itself is moreover changed. Now, minimized windows are displayed in smaller configuration on the bottom of the screen below a thin line.

    Dock Exposé with fresh placement of minimized windows Enlarge / Dock Exposé with fresh placement of minimized windows

    In the screenshot above, you'll notice that notabit of the minimized windows issue in my Dock. That's thanks to another welcome addition: the aptitude to minimize windows "into" the application icon. You'll find the setting for this in the Dock's preference pane.

    New Dock preference: Minimize windows into application iconNew Dock preference: Minimize windows into application icon Minimized windows in a Dock application menuMinimized window denoted by a diamond

    Once set, minimized windows will slip behind the icon of their parent application and then disappear. To collect them back, either right-click the application icon (see right) or trigger Exposé.

    The Dock's grid view for folders now incorporates a scroll bar when there are too many items to fit comfortably. Clicking on a folder icon in the grid now shows that folder's contents within the grid, allowing you to navigate down several folders to find a buried item. A wee "back" navigation button appears once you descend.

    These are any useful fresh behaviors, and quite a prize considering the suppositious "no fresh features" stance of Snow Leopard. But the fundamental nature of the Dock remains the same. Users who want a more elastic or more powerful application launcher/folder organizer/window minimization system must soundless either sacrifice some functionality (e.g., Dock icon badges and bounce notifications) or continue to consume the Dock in addition to a third-party application.

    The option to maintain minimized windows from cluttering up the Dock was long overdue. But my enthusiasm is tempered by my frustration at the continued inability to click on a docked folder and beget it open in the Finder, while moreover retaining the aptitude to drag items into that folder. This was the default behavior for docked folders for the first six years of Mac OS X's life, but it changed in Leopard. Snow Leopard does not help matters.

    Docking an alias to a folder provides the single-click-open behavior, but items cannot exist dragged into a docked folder alias for some inexplicable reason. (Radar 5775786, closed in March 2008 with the terse explanation, "not currently supported.") Worse, dragging an item to a docked folder alias looks enjoy it will labor (the icon highlights) but upon release, the dragged item simply springs back to its original location. I really hoped this one would collect fixed in Snow Leopard. No such luck.

    Dock grid view's in-place navigation with back buttonDock grid view's in-place navigation with back button The Finder

    One of the earliest leaked screenshots of Snow Leopard included an innocuous-looking "Get Info…" window for the Finder, presumably to betray that its version number had been updated to 10.6. The more exciting tidbit of information it revealed was that the Finder in Snow Leopard was a 64-bit application.

    The Mac OS X Finder started its life as the designated "dog food" application for the Carbon backward-compatibility API for Mac OS X. Over the years, the Finder has been a frequent target of dissatisfaction and scorn. Those despicable feelings frequently spilled over into the parallel debate over API supremacy: Carbon vs. Cocoa.

    "The Finder sucks because it's a Carbon app. What they exigency is a Cocoa Finder! Surely that will decipher any their woes." Well, Snow Leopard features a 64-bit Finder, and as they any know, Carbon was not ported to 64-bit. Et voila! A Cocoa Finder in Snow Leopard. (More on the woes in a bit.)

    The conversion to Cocoa followed the Snow Leopard formula: no fresh features… except for maybe one or two. And so, the "new" Cocoa Finder looks and works almost exactly enjoy the traditional Carbon Finder. The biggest indicator of its "Cocoa-ness" is the extensive consume of Core Animation transitions. For example, when a Finder window does its schizophrenic transformation from a sidebar-bedecked browser window to its minimally-adorned form, it no longer happens in a blink. Instead, the sidebar slides away and fades, the toolbar shrinks, and everything tucks in to configuration its fresh shape.

    Despite crossing the line in a few cases, the Core Animation transitions execute get the application feel more polished, and yes, "more Cocoa." And presumably the consume of Cocoa made it so darn effortless to add features that the developers just couldn't resist throwing in a few.

    The number-one feature request from heavy column-view users has finally been implemented: sortable columns. The sort order applies to any columns at once, which isn't as nice as per-column sorting, but it's much better than nothing at all. The sort order can exist set using a menu command (each of which has a keyboard shortcut) or by right-clicking in an unoccupied zone of a column and selecting from the resulting context menu.

    Column view sorting context menu Enlarge / Column view sorting context menu Column view sorting menu Enlarge / Column view sorting menu

    Even the lowly icon view has been enhanced in Snow Leopard. Every icon-view window now includes a wee slider to control the size of the icons.

    The Finder's icon view with its fresh slider controlThe Finder's icon view with its fresh slider control

    This may look a bit odd—how often execute people change icon sizes?—but it makes much more sense in the context of previewing images in the Finder. This consume case is made even more germane by the recent expansion of the maximum icon size to 512x512 pixels.

    The icon previews themselves beget been enhanced to better match the abilities available in Quick Look. setaside it any together and you can smoothly zoom a wee PDF icon, for example, into the impressively high-fidelity preview shown below, complete with the aptitude to eddy pages. One press of the space bar and you'll progress to the even larger and more elastic Quick spy view. It's a pretty smooth experience.

    Not your father's icon: 512x512 pixels of multi-page PDF previewingNot your father's icon: 512x512 pixels of multi-page PDF previewing

    QuickTime previews beget been similarly enhanced. As you zoom in on the icon, it transforms into a miniature movie player, adorned with an odd circular progress indicator. Assuming users are willing to wrangle with the vagaries of the Finder's view settings successfully enough to collect icon view to stick for the windows where it's most useful, I think that odd tiny slider is actually going to collect a lot of use.

    The Finder's QuickTime preview. (The "glare" overlay is a bit much.)The Finder's QuickTime preview. (The "glare" overlay is a bit much.)

    List view moreover has a few enhancements—accidental, incidental, or otherwise. The drag zone for each list view item now spans the entire line. In Leopard, though the entire line was highlighted, only the file title or icon portion could exist dragged. Trying to drag anywhere else just extended the selection to other items in the list view as the cursor was moved. I'm not positive whether this change in behavior is intentional or if it's just an unexamined consequence of the underlying control used for list view in the fresh Cocoa Finder. Either way, thumbs up.

    Double-clicking on the dividing line between two column headers in list view will "right-size" that column. For most columns, this means expanding or shrinking to minimally fit the widest value in the column. Date headers will progressively shrink to betray less verbose date formats. Supposedly, this worked intermittently in Leopard as well. But whether Cocoa is bringing this feature for the first time or is just making it labor correctly for the first time, it's a change for the better.

    Searching using the Finder's browser view is greatly improved by the implementation of one of those tiny things that many users beget been clamoring for year after year. There's now a preference to select the default scope of the search province in the Finder window toolbar. Can I collect an amen?

    Default Finder search location: configurable at last.Default Finder search location: configurable at last.

    Along similar lines, there are other long-desired enhancements that will Go a long way towards making the desktop environment feel more solid. A safe instance is the improved handling of the dreaded "cannot eject, disk in use" error. The obvious follow-up question from the user is, "Okay, so what's using it?" Snow Leopard finally provides that information.

    No more guessingNo more guessing

    (Yes, Mac OS X will decline to oust a disk if your current working directory in a command-line shell is on that disk. benign of cool, but moreover benign of annoying.)

    Another possible user response to a disk-in-use oversight is, "I don't care. I'm in a hurry. Just oust it!" That's an option now as well.

    Forcible ejection in progressForcible ejection in progress

    Hm, but why did I collect information about the offending application in one dialog, an option to oblige ejection in the other, but neither one presented both choices? It's a mystery to me, but presumably it's related to exactly what information the Finder has about the contention for the disk. (As always, the lsof command is available if you want to design it out the old-fashioned way.)


    So does the fresh Cocoa Finder finally banish any of those embarrassing bugs from the bad-old days of Carbon? Not quite. This is essentially the "1.0" release of the Cocoa Finder, and it has its partake of 1.0 bugs. Here's one discovered by Glen Aspeslagh (see image right).

    Do you view it? If not, spy closer at the order of the dates in the supposedly sorted "Date Modified" column. So yeah, that traditional Finder magic has not been entirely extinguished.

    There moreover remains some weirdness in the operation of the icon grid. In a view where grid snap is turned on (or is enabled transiently by holding down the command key during a drag) icons look terrified of each other, leaving huge distances between themselves and their neighbors when they select which grid spot to snap to. It's as if the Finder lives in mortal horror that one of these files will someday collect a 200-character filename that will overlap with a neighboring file's name.

    The worst incarnation of this behavior happens along the privilege edge of the screen where mounted volumes issue on the desktop. (Incidentally, this is not the default; if you want to view disks on your desktop, you must enable this preference in the Finder.) When I mount a fresh disk, I'm often surprised to view where it ends up appearing. If there are any icons remotely close to the privilege edge of the screen, the disk icon will decline to issue there. Again, the Finder is not avoiding any actual title or icon overlapping. It appears to exist avoiding the mere possibility of overlapping at some unspecified point in the future. Silly.

    Finder report card

    Overall, the Snow Leopard Finder takes several significant steps forward—64-bit/Cocoa future-proofing, a few new, useful features, added polish—and only a few shuffles backwards with the slight overuse of animation and the continued presence of some puzzling bugs. Considering how long it took the Carbon Finder to collect to its pre-Snow-Leopard feature set and flush of polish, it's quite an achievement for a Cocoa Finder to match or exceed its predecessor in its very first release. I'm positive the Carbon vs. Cocoa warriors would beget had a province day with that statement, were Carbon not setaside out to pasture in Leopard. But it was, and to the victor Go the spoils.


    Snow Leopard's headline "one fresh feature" is back for Microsoft Exchange. This appears to be, at least partially, yet another hand-me-down from the iPhone, which gained back for Exchange in its 2.0 release and expanded on it in 3.0. Snow Leopard's Exchange back is weaved throughout the expected crop of applications in Mac OS X: iCal, Mail, and Address Book.

    The gigantic caveat is that it will only labor with a server running Exchange 2007 (Service Pack 1, Update Rollup 4) or later. While I'm positive Microsoft greatly appreciates any additional upgrade revenue this determination provides, it means that for users whose workplaces are soundless running older versions of Exchange, Snow Leopard's "Exchange support" might as well not exist.

    Those users are probably already running the only other viable Mac OS X Exchange client, Microsoft Entourage, so they'll likely just sit tight and wait for their IT departments to upgrade. Meanwhile, Microsoft is already making overtures to these users with the promised creation—finally—of an honest-to-goodness version of Outlook for Mac OS X.

    In my admittedly brief testing, Snow Leopard's Exchange back seems to labor as expected. I had to beget one of the Microsoft mavens in the Ars Orbiting HQ spin up an Exchange 2007 server just for the purposes of this review. However it was configured, any I had to enter in the Mail application was my complete name, e-mail address, and password, and it automatically discovered any germane settings and configured iCal and Address book for me.

    Exchange setup: surprisingly easyExchange setup: surprisingly easy

    Windows users are no doubt accustomed to this benign of Exchange integration, but it's the first time I've seen it on the Mac platform—and that includes my many years of using Entourage.

    Access to Exchange-related features is decidedly subdued, in keeping with the existing interfaces for Mail, iCal, and Address Book. If you're expecting the swarm of panels and toolbar buttons establish in Outlook on Windows, you're in for a bit of a shock. For example, here's the "detail" view of a meeting in iCal.

    iCal event detailiCal event detail

    Clicking the "edit" button hardly reveals more.

    Event editor: that's it?Event editor: that's it?

    The "availability" window moreover includes the bare minimum number of controls and displays to collect the job done.

    Meeting availability checker Enlarge / Meeting availability checker

    The integration into Mail and Address book is even more subtle—almost entirely transparent. This is to exist construed as a feature, I suppose. But though I don't know enough about Exchange to exist completely sure, I can't shiver the emotion that there are Exchange features that remain inaccessible from Mac OS X clients. For example, how execute I book a "resource" in a meeting? If there's a way to execute so, I couldn't determine it.

    Still, even basic Exchange integration out-of-the-box goes long way towards making Mac OS X more welcome in corporate environments. It remains to exist seen how convinced IT managers are of the "realness" of Snow Leopard's Exchange integration. But I've got to think that being able to send and receive mail, create and respond to meeting invitations, and consume the global corporate address book is enough for any Mac user to collect along reasonably well in an Exchange-centric environment.


    The thing is, there's not really much to bid about performance in Snow Leopard. Dozens of benchmark graphs lead to the identical simple conclusion: Snow Leopard is faster than Leopard. Not shockingly so, at least in the aggregate, but it's faster. And while isolating one particular subsystem with a micro-benchmark may betray some impressive numbers, it's the way these wee changes combine to help the real-world undergo of using the system that really makes a difference.

    One instance Apple gave at WWDC was making an initial Time Machine backup over the network to a Time Capsule. Apple's approach to optimizing this operation was to address each and every subsystem involved.

    Time Machine itself was given back for overlapping i/o. Spotlight indexing, which happens on Time Machine volumes as well, was identified as another time-consuming assignment involved in backups, so its performance was improved. The networking code was enhanced to prefer advantage of hardware-accelerated checksums where possible, and the software checksum code was hand-tuned for maximum performance. The performance of HFS+ journaling, which accompanies each file system metadata update, was moreover improved. For Time Machine backups that write to disk images rather than indigenous HFS+ file systems, Apple added back for concurrent access to disk images. The amount of network traffic produced by AFP during backups has moreover been reduced.

    All of this adds up to a respectable 55% overall improvement in the hasten of an initial Time Machine backup. And, of course, the performance improvements to the individual subsystems profit any applications that consume them, not just Time Machine.

    This holistic approach to performance improvement is not likely to knock anyone's socks off, but every time you flee across a piece of functionality in Snow Leopard that disproportionately benefits from one of these optimized subsystems, it's a pleasure.

    For example, Snow Leopard shuts down and restarts much faster than Leopard. I'm not talking about boot time; I carryweight the time between the selection of the Shutdown or Restart command and when the system turns off or begins its fresh boot cycle. Leopard doesn't prefer long at any to execute this; only a few dozen of seconds when there are no applications open. But in Snow Leopard, it's so expeditiously that I often thought the operating system had crashed rather than shut down cleanly. (That's actually not too far from the truth.)

    The performance boosts offered by earlier major releases of Mac OS X soundless dwarf Snow Leopard's speedup, but that's mostly because Mac OS X was so excruciatingly sluggish in its early years. It's effortless to create a gigantic performance delta when you're starting from something abysmally slow. The fact that Snow Leopard achieves consistent, measurable improvements over the already-speedy Leopard is any the more impressive.

    And yes, for the seventh consecutive time, a fresh release of Mac OS X is faster on the identical hardware than its predecessor. (And for the first time ever, it's smaller, too.) What more can you quiz for, really? Even that traditional performance bugaboo, window resizing, has been completely vanquished. Grab the corner of a fully-populated iCal window—the worst-case scenario for window resizing in the traditional days—and shiver it as expeditiously as you can. Your cursor will never exist more than a few millimeters from the window's grab handle; it tracks your frantic motion perfectly. On most Macs, this is actually suitable in Leopard as well. It just goes to betray how far Mac OS X has promote on the performance front. These days, they any just prefer it for granted, which is exactly the way it should be.

    Grab bag

    In the "grab bag" section, I usually examine smaller, mostly unrelated features that don't warrant full-blown sections of their own. But when it comes to user-visible features, Snow Leopard is benign of "all grab bag," if you know what I mean. Apple's even got its own incarnation in the configuration of a giant webpage of "refinements." I'll probably overlap with some of those, but there'll exist a few fresh ones here as well.

    New columns in open/save dialogs

    The list view in open and save dialog boxed now supports more than just "Name" and "Date Modified" columns. Right-click on any column to collect a preference of additional columns to display. I've wanted this feature for a long time, and I'm lighthearted someone finally had time to implement it.

    Configurable columns in open/save dialogsConfigurable columns in open/save dialogs Improved scanner support

    The bundled Image Capture application now has the aptitude to talk to a wide ambit of scanners. I plugged in my Epson Stylus CX7800, a device that previously required the consume of third-party software in order to consume the scanning feature, and Image Capture detected it immediately.

    Epson scanner + Image Capture - Epson software Enlarge / Epson scanner + Image Capture - Epson software

    Image Capture is moreover not a despicable tiny scanning application. It has pretty safe automatic protest detection, including back for multiple objects, obviating the exigency to manually crop items. Given the sometimes-questionable property of third-party printer and scanner drivers for Mac OS X, the aptitude to consume a bundled application is welcome.

    System Preferences bit wars

    System Preferences, enjoy virtually any other applications in Snow Leopard, is 64-bit. But since 64-bit applications can't load 32-bit plug-ins, that presents a problem for the existing crop of 32-bit third-party preference panes. System Preferences handles this situation with a reasonable amount of grace. On launch, it will pomp icons for any installed preference panes, 64-bit or 32-bit. But if you click on a 32-bit preference pane, you'll exist presented with a notification enjoy this:

    64-bit application vs. 32-bit plug-in: fight!64-bit application vs. 32-bit plug-in: fight!

    Click "OK" and System Preferences will relaunch in 32-bit mode, which is conveniently indicated in the title bar. Since any of the first-party preference panes are compiled for both 64-bit and 32-bit operation, System Preferences does not exigency to relaunch again for the duration of its use. This raises the question, why not beget System Preferences launch in 32-bit mode any the time? I suspect it's just another way for Apple to "encourage" developers to build 64-bit-compatible binaries.

    Safari plug-ins

    The inability of of 64-bit applications load 32-bit plug-ins is a problem for Safari as well. Plug-ins are so principal to the Web undergo that relaunching in 32-bit mode is not really an option. You'd probably exigency to relaunch as soon as you visited your first webpage. But Apple does want Safari to flee in 64-bit mode due to some significant performance enhancements in the JavaScript engine and other areas of the application that are not available in 32-bit mode.

    Apple's solution is similar to what it did with QuickTime X and 32-bit QuickTime 7 plug-ins. Safari will flee 32-bit plug-ins in divorce 32-bit processes as needed.

    Separate processes for 32-bit Safari plug-insSeparate processes for 32-bit Safari plug-ins

    This has the added, extremely significant profit of isolating potentially buggy plug-ins. According to the automated crash reporting built into Mac OS X, Apple has said that the number one cause of crashes is Web browser plug-ins. That's not the number one cause of crashes in Safari, reason you, it's the number one cause when considering any crashes of any applications in Mac OS X. (And though it was not mentioned by name, I think they any know the primary culprit.)

    As you can view above, the QuickTime browser plug-in gets the identical treatment as shimmer and other third-party 32-bit Safari plug-ins. any of this means that when a plug-in crashes, Safari in Snow Leopard does not. The window or tab containing the crashing plug-in doesn't even close. You can simply click the reload button and give the problematic plug-in another haphazard to office correctly.

    While this is soundless far from the much more robust approach employed by Google Chrome, where each tab lives in its own independent process, if Apple's crash statistics are to exist believed, isolating plug-ins may generate most of the profit of truly divorce processes with a significantly less radical change to the Safari application itself.

    Resolution independence

    When they terminal left Mac OS X in its seemingly interminable march towards a truly scalable user interface, it was almost ready for prime time. I'm sorrowful to bid that resolution independence was obviously not a priority in Snow Leopard, because it hasn't gotten any better, and may beget actually regressed a bit. Here's what TextEdit looks enjoy at a 2.0 scale factor in Leopard and Snow Leopard.

    TextEdit at scale factor 2.0 in LeopardTextEdit at scale factor 2.0 in Leopard TextEdit at scale factor 2.0 in Snow LeopardTextEdit at scale factor 2.0 in Snow Leopard

    Yep, it's a bummer. I soundless recollect Apple advising developers to beget their applications ready for resolution independence by 2008. That's one of the few dates that the Jobs-II-era Apple has not been able to hit, and it's getting later any the time. On the other hand, it's not enjoy 200-DPI monitors are raining from the sky either. But I'd really enjoy to view Apple collect going on this. It will undoubtedly prefer a long time for everything to spy and labor correctly, so let's collect started.

    Terminal splitters

    The Terminal application in Tiger and earlier versions of Mac OS X allowed each of its windows to exist split horizontally into two divorce panes. This was invaluable for referencing some earlier text in the scrollback while moreover typing commands at the prompt. Sadly, the splitter feature disappeared in Leopard. In Snow Leopard, it's back with a vengeance.

    Arbitrary splitters, baby!Arbitrary splitters, baby!

    (Now if only my favorite text editor would collect on board the train to splittersville.)

    Terminal in Snow Leopard moreover defaults to the fresh Menlo font. But ornery to earlier reports, the One suitable Monospaced Font, Monaco, is most definitely soundless included in Snow Leopard (see screenshot above) and it works just fine.

    System Preferences shuffle

    The seemingly obligatory rearrangement of preference panes in the System Preferences application accompanying each release of Mac OS X continues in Snow Leopard.

    System Preferences: shuffled yet again Enlarge / System Preferences: shuffled yet again System Preferences (not running) with Dock menuSystem Preferences (not running) with Dock menu

    This time, the "Keyboard & Mouse" preference pane is split into divorce "Keyboard" and "Mouse" panes, "International" becomes "Language & Text," and the "Internet & Network" section becomes "Internet & Wireless" and adopts the Bluetooth preference pane.

    Someday in the far-off future, perhaps Apple will finally arrive at the "ultimate" arrangement of preference panes and they can any finally Go more than two years without their muscle recollection being disrupted.

    Before piteous on, System Preferences has one super trick. You can launch directly into a specific preference pane by right-clicking on System Preferences's Dock icon. This works even when System Preferences is not yet running. benign of creepy, but useful.

    Core location

    One more gift from the iPhone, Core Location, allows Macs to design out where in the world they are. The "Date & Time" preference pane offers to set your time zone automatically based on your current location using this newfound ability.

    Set your Mac's time zone automatically based on your current location, thanks to Core Location.Set your Mac's time zone automatically based on your current location, thanks to Core Location. Keyboard magic

    Snow Leopard includes a simple facility for system-wide text auto-correction and expansion, accessible from the "Language & Text" preference pane. It's not quite ready to give a dedicated third-party application a flee for its money, but hey, it's free.

    Global text expansion and auto-correction Enlarge / Global text expansion and auto-correction

    The keyboard shortcuts preference pane has moreover been rearranged. Now, instead of a single, long list of system-wide keyboard shortcuts, they're arranged into categories. This reduces clutter, but it moreover makes it a bit more difficult to find the shortcut you're interested in.

    Keyboard shortcuts: now with categories Enlarge / Keyboard shortcuts: now with categories The sleeping Mac dilemma

    I don't enjoy to leave my Mac Pro turned on 24 hours a day, especially during the summer in my un-air-conditioned house. But I execute want to beget access to the files on my Mac when I'm elsewhere—at work, on the road, etc. It is possible to wake a sleeping Mac remotely, but doing so requires being on the identical local network.

    My solution has been to leave a smaller, more power-efficient laptop on at any times on the identical network as my Mac Pro. To wake my Mac Pro remotely, I ssh into the laptop, then send the magic "wake up" packet to my Mac Pro. (For this to work, the "Wake for Ethernet network administrator access" checkbox must exist checked in the "Energy Saver" preference pane in System Preferences.)

    Snow Leopard provides a way to execute this without leaving any of my computers running any day. When a Mac running Snow Leopard is setaside to sleep, it attempts to hand off ownership of its IP address to its router. (This only works with an AirPort Extreme foundation station from 2007 or later, or a Time Capsule from 2008 or later with the latest (7.4.2) firmware installed.) The router then listens for any attempt to connect to the IP address. When one occurs, it wakes up the original owner, hands back the IP address, and forwards traffic appropriately.

    You can even wake some recent-model Macs over WiFi. Combined with MobileMe's "Back to My Mac" dynamic DNS thingamabob, it means I can leave any my Macs asleep and soundless beget access to their contents anytime, anywhere.

    Back to my hack

    As has become traditional, this fresh release of Mac OS X makes life a bit harder for developers whose software works by patching the in-memory representation of other running applications or the operating system itself. This includes Input Managers, SIMBL plug-ins, and of course the dreaded "Haxies."

    Input Managers collect the worst of it. They've actually been unsupported and non-functional in 64-bit applications since Leopard. That wasn't such a gigantic deal when Mac OS X shipped with a whopping two 64-bit applications. But now, with almost every application in Snow Leopard going 64-bit, it's suddenly very significant.

    Thanks to Safari's lack of an officially sanctioned extension mechanism, developers looking to enhance its functionality beget most often resorted to the consume of Input Managers and SIMBL (which is an Input-Manager-based framework). A 64-bit Safari puts a damper on that entire market. Though it is possible to manually set Safari to launch in 32-bit mode—Get Info on the application in the Finder and click a checkbox—ideally, this is not something developers want to oblige users to do.

    Happily, at least one commonly used Safari enhancement has the safe fortune to exist built on top of the officially supported browser plug-in API used by Flash, QuickTime, etc. But that may not exist a feasible approach for Safari extensions that enhance functionality in ways not tied directly to the pomp of particular types of content within a webpage.

    Though I diagram to flee Safari in its default 64-bit mode, I'll really miss Saft, a Safari extension I consume for session restoration (yes, I know Safari has this feature, but it's activated manually—the horror) and address bar shortcuts (e.g., "w noodles" to spy up "noodles" in Wikipedia). I'm hoping that ingenious developers will find a way to overcome this fresh challenge. They always look to, in the end. (Or Apple could add a proper extension system to Safari, of course. But I'm not holding my breath.)

    As for the Haxies, those usually demolish with each major operating system update as a matter of course. And each time, those determined fellows at Unsanity, against any odds, manage to maintain their software working. I salute them for their effort. I delayed upgrading to Leopard for a long time based solely on the absence of my beloved WindowShade X. I hope I don't beget to wait too long for a Snow-Leopard-compatible version.

    The universal trend in Mac OS X is away from any sort of involuntary recollection space sharing, and towards "external" plug-ins that live in their own, divorce processes. Even contextual menu plug-ins in the Finder beget been disabled, replaced by an enhanced, but soundless less-powerful Services API. Again, I beget faith that developers will adapt. But the waiting is the hardest part.


    It looks enjoy we'll any exist waiting a while longer for a file system in shining armor to replace the venerable HFS+ (11 years young!) as the default file system in Mac OS X. Despite rumors, outright declarations, and much actual pre-release code, back for the impressive ZFS file system is not present in Snow Leopard.

    That's a shame because Time Machine veritably cries out for some ZFS magic. What's more, Apple seems to agree, as evidenced by a post from an Apple employee to a ZFS mailing list terminal year. When asked about a ZFS-savvy implementation of Time Machine, the reply was encouraging: "This one is principal and likely will promote sometime, but not for SL." ("SL" is short for Snow Leopard.)

    There are many reasons why ZFS (or a file system with similar features) is a flawless fit for Time Machine, but the most principal is its aptitude to send only the block-level changes during each backup. As Time Machine is currently implemented, if you get a wee change to a giant file, the entire giant file is copied to the Time Machine volume during the next backup. This is extremely wasteful and time consuming, especially for great files that are modified constantly during the day (e.g., Entourage's e-mail database). Time Machine running on top of ZFS could transfer just the changed disk blocks (a maximum of 128KB each in ZFS, and usually much smaller).

    ZFS would moreover bring vastly increased robustness for data and metadata, a pooled storage model, constant-time snapshots and clones, and a pony. People sometimes quiz what, exactly, is wrong with HFS+. Aside from its obvious lack of the features just listed, HFS+ is limited in many ways by its dated design, which is based on HFS, a twenty-five year-old file system.

    To give just one example, the centrally located Catalog File, which must exist updated for each change to the file system's structure, is a frequent and inevitable source of contention. Modern file systems usually spread their metadata around, both for robustness (multiple copies are often kept in divorce locations on the disk) and to allow for better concurrency.

    Practically speaking, think about those times when you flee Disk Utility on an HFS+ volume and it finds (and hopefully repairs) a bunch of errors. That's bad, okay? That's something that should not occur with a modern, thoroughly checksummed, always-consistent-on-disk file system unless there are hardware problems (and a ZFS storage pool can actually deal with that as well). And yet it happens any the time with HFS+ disks in Mac OS X when various bits of metadata collect corrupted or become out of date.

    Apple gets by year after year, tacking fresh features onto HFS+ with duct tape and a prayer, but at a unavoidable point there simply has to exist a successor—whether it's ZFS, a home-grown Apple file system, or something else entirely. My fingers are crossed for Mac OS X 10.7.

    The future soon

    Creating an operating system is as much a gregarious exercise as a technological one. Creating a platform, even more so. any of Snow Leopard's considerable technical achievements are not just designed to profit users; they're moreover intended to goad, persuade, and otherwise herd developers in the direction that Apple feels will exist most beneficial for the future of the platform.

    For this to work, Snow Leopard has to actually find its way into the hands of customers. The pricing helps a lot there. But even if Snow Leopard were free, there's soundless some cost to the consumer—in time, worry, software updates, etc.—when performing a major operating system upgrade. The identical goes for developers who must, at the very least, certify that their existing applications flee correctly on the fresh OS.

    The customary way to overcome this benign of upgrade hesitation has been to pack the OS with fresh features. fresh features sell, and the more copies of the fresh operating system in use, the more motivated developers are to update their applications to not just flee on the fresh OS, but moreover prefer advantage of its fresh abilities.

    A major operating system upgrade with "no fresh features" must play by a different set of rules. Every party involved expects some counterbalance to the lack of fresh features. In Snow Leopard, developers stand to reap the biggest benefits thanks to an impressive set of fresh technologies, many of which cover areas previously unaddressed in Mac OS X. Apple clearly feels that the future of the platform depends on much better utilization of computing resources, and is doing everything it can to get it effortless for developers to stagger in this direction.

    Though it's obvious that Snow Leopard includes fewer external features than its predecessor, I'd wager that it has just as many, if not more internal changes than Leopard. This, I fear, means that the initial release of Snow Leopard will likely suffer the typical 10.x.0 bugs. There beget already been reports of fresh bugs introduced to existing APIs in Snow Leopard. This is the exact antithetical of Snow Leopard's implied vow to users and developers that it would concentrate on making existing features faster and more robust without introducing fresh functionality and the accompanying fresh bugs.

    On the other side of the coin, I imagine any the teams at Apple that worked on Snow Leopard absolutely reveled in the opening to polish their particular subsystems without being burdened by supporting the marketing-driven feature-of-the-month. In any long-lived software product, there needs to exist this benign of release valve every few years, lest the entire code foundation Go off into the weeds.

    There's been one other "no fresh features" release of Mac OS X. Mac OS X 10.1, released a mere six months after version 10.0, was handed out for free by Apple at the 2001 Seybold publishing conference and, later, at Apple retail stores. It was moreover available from Apple's online store for $19.95 (along with a copy of Mac OS 9.2.1 for consume in the Classic environment). This was a different time for Mac OS X. Versions 10.0 and 10.1 were slow, incomplete, and extremely immature; the transition from classic Mac OS was far from over.

    Judged as a modern incarnation of the 10.1 release, Snow Leopard looks pretty darned good. The pricing is similar, and the benefits—to developers and to users—are greater. So is the risk. But again, that has more to execute with how horrible Mac OS X 10.0 was. Choosing not to upgrade to 10.1 was unthinkable. Waiting a while to upgrade to Snow Leopard is reasonable if you want to exist positive that any the software you supervision about is compatible. But don't wait too long, because at $29 for the upgrade, I anticipate Snow Leopard adoption to exist quite rapid. Software that will flee only on Snow Leopard may exist here before you know it.

    Should you buy Mac OS X Snow Leopard? If you're already running Leopard, then the acknowledge is a resounding "yes." If you're soundless running Tiger, well, then it's probably time for a fresh Mac anyway. When you buy one, it'll promote with Snow Leopard.

    As for the future, it's tempting to view Snow Leopard as the "tick" in a fresh Intel-style "tick-tock" release strategy for Mac OS X: radical fresh features in version 10.7 followed by more Snow-Leopard-style refinements in 10.8, and so on, alternating between "feature" and "refinement" releases. Apple has not even hinted that they're considering this nature of plan, but I think there's a lot to recommend it.

    Snow Leopard is a unique and pretty release, unlike any that beget promote before it in both scope and intention. At some point, Mac OS X will surely exigency to collect back on the bullet-point-features bandwagon. But for now, I'm content with Snow Leopard. It's the Mac OS X I know and love, but with more of the things that get it decrepit and eerie engineered away.

    Snowy eyes Looking back

    This is the tenth review of a complete Mac OS X release, public beta, or developer preview to flee on Ars, dating back to December 1999 and Mac OS X DP2. If you want to jump into the Wayback Machine and view how far Apple has promote with Snow Leopard (or just want to bone up on any of the gigantic cat monikers), we've gone through the archives and dug up some of their older Mac OS X articles. ecstatic reading!

  • Five years of Mac OS X, March 24, 2006
  • Mac OS X 10.5 Leopard, October 28, 2007
  • Mac OS X 10.4 Tiger, April 28, 2005
  • Mac OS X 10.3 Panther, November 9, 2003
  • Mac OS X 10.2 Jaguar, September 5, 2002
  • Mac OS X 10.1 (Puma), October 15, 2001
  • Mac OS X 10.0 (Cheetah), April 2, 2001
  • Mac OS X Public Beta, October 3, 2000
  • Mac OS X Q & A, June 20, 2000
  • Mac OS X DP4, May 24, 2000
  • Mac OS X DP3: affliction by Water, February 28, 2000
  • Mac OS X Update: Quartz & Aqua, January 17, 2000
  • Mac OS X DP2, December 14, 1999

  • Apple patches Java cavity that was being used to compromise Mac users | actual questions and Pass4sure dumps

    Direct Download of over 5500 Certification Exams

    3COM [8 Certification Exam(s) ]
    AccessData [1 Certification Exam(s) ]
    ACFE [1 Certification Exam(s) ]
    ACI [3 Certification Exam(s) ]
    Acme-Packet [1 Certification Exam(s) ]
    ACSM [4 Certification Exam(s) ]
    ACT [1 Certification Exam(s) ]
    Admission-Tests [13 Certification Exam(s) ]
    ADOBE [93 Certification Exam(s) ]
    AFP [1 Certification Exam(s) ]
    AICPA [2 Certification Exam(s) ]
    AIIM [1 Certification Exam(s) ]
    Alcatel-Lucent [13 Certification Exam(s) ]
    Alfresco [1 Certification Exam(s) ]
    Altiris [3 Certification Exam(s) ]
    Amazon [2 Certification Exam(s) ]
    American-College [2 Certification Exam(s) ]
    Android [4 Certification Exam(s) ]
    APA [1 Certification Exam(s) ]
    APC [2 Certification Exam(s) ]
    APICS [2 Certification Exam(s) ]
    Apple [69 Certification Exam(s) ]
    AppSense [1 Certification Exam(s) ]
    APTUSC [1 Certification Exam(s) ]
    Arizona-Education [1 Certification Exam(s) ]
    ARM [1 Certification Exam(s) ]
    Aruba [6 Certification Exam(s) ]
    ASIS [2 Certification Exam(s) ]
    ASQ [3 Certification Exam(s) ]
    ASTQB [8 Certification Exam(s) ]
    Autodesk [2 Certification Exam(s) ]
    Avaya [96 Certification Exam(s) ]
    AXELOS [1 Certification Exam(s) ]
    Axis [1 Certification Exam(s) ]
    Banking [1 Certification Exam(s) ]
    BEA [5 Certification Exam(s) ]
    BICSI [2 Certification Exam(s) ]
    BlackBerry [17 Certification Exam(s) ]
    BlueCoat [2 Certification Exam(s) ]
    Brocade [4 Certification Exam(s) ]
    Business-Objects [11 Certification Exam(s) ]
    Business-Tests [4 Certification Exam(s) ]
    CA-Technologies [21 Certification Exam(s) ]
    Certification-Board [10 Certification Exam(s) ]
    Certiport [3 Certification Exam(s) ]
    CheckPoint [41 Certification Exam(s) ]
    CIDQ [1 Certification Exam(s) ]
    CIPS [4 Certification Exam(s) ]
    Cisco [318 Certification Exam(s) ]
    Citrix [48 Certification Exam(s) ]
    CIW [18 Certification Exam(s) ]
    Cloudera [10 Certification Exam(s) ]
    Cognos [19 Certification Exam(s) ]
    College-Board [2 Certification Exam(s) ]
    CompTIA [76 Certification Exam(s) ]
    ComputerAssociates [6 Certification Exam(s) ]
    Consultant [2 Certification Exam(s) ]
    Counselor [4 Certification Exam(s) ]
    CPP-Institue [2 Certification Exam(s) ]
    CPP-Institute [1 Certification Exam(s) ]
    CSP [1 Certification Exam(s) ]
    CWNA [1 Certification Exam(s) ]
    CWNP [13 Certification Exam(s) ]
    Dassault [2 Certification Exam(s) ]
    DELL [9 Certification Exam(s) ]
    DMI [1 Certification Exam(s) ]
    DRI [1 Certification Exam(s) ]
    ECCouncil [21 Certification Exam(s) ]
    ECDL [1 Certification Exam(s) ]
    EMC [129 Certification Exam(s) ]
    Enterasys [13 Certification Exam(s) ]
    Ericsson [5 Certification Exam(s) ]
    ESPA [1 Certification Exam(s) ]
    Esri [2 Certification Exam(s) ]
    ExamExpress [15 Certification Exam(s) ]
    Exin [40 Certification Exam(s) ]
    ExtremeNetworks [3 Certification Exam(s) ]
    F5-Networks [20 Certification Exam(s) ]
    FCTC [2 Certification Exam(s) ]
    Filemaker [9 Certification Exam(s) ]
    Financial [36 Certification Exam(s) ]
    Food [4 Certification Exam(s) ]
    Fortinet [13 Certification Exam(s) ]
    Foundry [6 Certification Exam(s) ]
    FSMTB [1 Certification Exam(s) ]
    Fujitsu [2 Certification Exam(s) ]
    GAQM [9 Certification Exam(s) ]
    Genesys [4 Certification Exam(s) ]
    GIAC [15 Certification Exam(s) ]
    Google [4 Certification Exam(s) ]
    GuidanceSoftware [2 Certification Exam(s) ]
    H3C [1 Certification Exam(s) ]
    HDI [9 Certification Exam(s) ]
    Healthcare [3 Certification Exam(s) ]
    HIPAA [2 Certification Exam(s) ]
    Hitachi [30 Certification Exam(s) ]
    Hortonworks [4 Certification Exam(s) ]
    Hospitality [2 Certification Exam(s) ]
    HP [750 Certification Exam(s) ]
    HR [4 Certification Exam(s) ]
    HRCI [1 Certification Exam(s) ]
    Huawei [21 Certification Exam(s) ]
    Hyperion [10 Certification Exam(s) ]
    IAAP [1 Certification Exam(s) ]
    IAHCSMM [1 Certification Exam(s) ]
    IBM [1532 Certification Exam(s) ]
    IBQH [1 Certification Exam(s) ]
    ICAI [1 Certification Exam(s) ]
    ICDL [6 Certification Exam(s) ]
    IEEE [1 Certification Exam(s) ]
    IELTS [1 Certification Exam(s) ]
    IFPUG [1 Certification Exam(s) ]
    IIA [3 Certification Exam(s) ]
    IIBA [2 Certification Exam(s) ]
    IISFA [1 Certification Exam(s) ]
    Intel [2 Certification Exam(s) ]
    IQN [1 Certification Exam(s) ]
    IRS [1 Certification Exam(s) ]
    ISA [1 Certification Exam(s) ]
    ISACA [4 Certification Exam(s) ]
    ISC2 [6 Certification Exam(s) ]
    ISEB [24 Certification Exam(s) ]
    Isilon [4 Certification Exam(s) ]
    ISM [6 Certification Exam(s) ]
    iSQI [7 Certification Exam(s) ]
    ITEC [1 Certification Exam(s) ]
    Juniper [64 Certification Exam(s) ]
    LEED [1 Certification Exam(s) ]
    Legato [5 Certification Exam(s) ]
    Liferay [1 Certification Exam(s) ]
    Logical-Operations [1 Certification Exam(s) ]
    Lotus [66 Certification Exam(s) ]
    LPI [24 Certification Exam(s) ]
    LSI [3 Certification Exam(s) ]
    Magento [3 Certification Exam(s) ]
    Maintenance [2 Certification Exam(s) ]
    McAfee [8 Certification Exam(s) ]
    McData [3 Certification Exam(s) ]
    Medical [69 Certification Exam(s) ]
    Microsoft [374 Certification Exam(s) ]
    Mile2 [3 Certification Exam(s) ]
    Military [1 Certification Exam(s) ]
    Misc [1 Certification Exam(s) ]
    Motorola [7 Certification Exam(s) ]
    mySQL [4 Certification Exam(s) ]
    NBSTSA [1 Certification Exam(s) ]
    NCEES [2 Certification Exam(s) ]
    NCIDQ [1 Certification Exam(s) ]
    NCLEX [2 Certification Exam(s) ]
    Network-General [12 Certification Exam(s) ]
    NetworkAppliance [39 Certification Exam(s) ]
    NI [1 Certification Exam(s) ]
    NIELIT [1 Certification Exam(s) ]
    Nokia [6 Certification Exam(s) ]
    Nortel [130 Certification Exam(s) ]
    Novell [37 Certification Exam(s) ]
    OMG [10 Certification Exam(s) ]
    Oracle [279 Certification Exam(s) ]
    P&C [2 Certification Exam(s) ]
    Palo-Alto [4 Certification Exam(s) ]
    PARCC [1 Certification Exam(s) ]
    PayPal [1 Certification Exam(s) ]
    Pegasystems [12 Certification Exam(s) ]
    PEOPLECERT [4 Certification Exam(s) ]
    PMI [15 Certification Exam(s) ]
    Polycom [2 Certification Exam(s) ]
    PostgreSQL-CE [1 Certification Exam(s) ]
    Prince2 [6 Certification Exam(s) ]
    PRMIA [1 Certification Exam(s) ]
    PsychCorp [1 Certification Exam(s) ]
    PTCB [2 Certification Exam(s) ]
    QAI [1 Certification Exam(s) ]
    QlikView [1 Certification Exam(s) ]
    Quality-Assurance [7 Certification Exam(s) ]
    RACC [1 Certification Exam(s) ]
    Real-Estate [1 Certification Exam(s) ]
    RedHat [8 Certification Exam(s) ]
    RES [5 Certification Exam(s) ]
    Riverbed [8 Certification Exam(s) ]
    RSA [15 Certification Exam(s) ]
    Sair [8 Certification Exam(s) ]
    Salesforce [5 Certification Exam(s) ]
    SANS [1 Certification Exam(s) ]
    SAP [98 Certification Exam(s) ]
    SASInstitute [15 Certification Exam(s) ]
    SAT [1 Certification Exam(s) ]
    SCO [10 Certification Exam(s) ]
    SCP [6 Certification Exam(s) ]
    SDI [3 Certification Exam(s) ]
    See-Beyond [1 Certification Exam(s) ]
    Siemens [1 Certification Exam(s) ]
    Snia [7 Certification Exam(s) ]
    SOA [15 Certification Exam(s) ]
    Social-Work-Board [4 Certification Exam(s) ]
    SpringSource [1 Certification Exam(s) ]
    SUN [63 Certification Exam(s) ]
    SUSE [1 Certification Exam(s) ]
    Sybase [17 Certification Exam(s) ]
    Symantec [134 Certification Exam(s) ]
    Teacher-Certification [4 Certification Exam(s) ]
    The-Open-Group [8 Certification Exam(s) ]
    TIA [3 Certification Exam(s) ]
    Tibco [18 Certification Exam(s) ]
    Trainers [3 Certification Exam(s) ]
    Trend [1 Certification Exam(s) ]
    TruSecure [1 Certification Exam(s) ]
    USMLE [1 Certification Exam(s) ]
    VCE [6 Certification Exam(s) ]
    Veeam [2 Certification Exam(s) ]
    Veritas [33 Certification Exam(s) ]
    Vmware [58 Certification Exam(s) ]
    Wonderlic [2 Certification Exam(s) ]
    Worldatwork [2 Certification Exam(s) ]
    XML-Master [3 Certification Exam(s) ]
    Zend [6 Certification Exam(s) ]

    References :

    Dropmark :
    Wordpress :
    Dropmark-Text :
    Blogspot :
    RSS Feed : :

    Back to Main Page
    About Killexams exam dumps | |