New Update of 9L0-061 test Questions PDF file | braindumps | ROMULUS 9L0-061 study guide and Exam Simulator are best exam prep tools It includes updated real test Q&A - Brain Dumps - practice questions and exam Tips - braindumps - ROMULUS

Pass4sure 9L0-061 dumps | 9L0-061 existent questions |

9L0-061 MAC OS X 10.5 Troubleshooting

Study guide Prepared by Apple Dumps Experts 9L0-061 Dumps and existent Questions

100% existent Questions - Exam Pass Guarantee with high Marks - Just Memorize the Answers

9L0-061 exam Dumps Source : MAC OS X 10.5 Troubleshooting

Test Code : 9L0-061
Test designation : MAC OS X 10.5 Troubleshooting
Vendor designation : Apple
: 71 existent Questions

I sense very confident via getting ready 9L0-061 actual test questions.
9L0-061 is the hardest exam ive ever advance upon. I spent months analyzing for it, with total professional resources and the total thing one ought to find - and failed it miserably. however I didnt give up! a few months later, I delivered to my training agenda and kept working towards on the checking out engine and the existent examination questions they provide. I believe that is precisely what helped me skip the second time round! I wish I hadnt wasted the time and moneyon total this needless stuff (their books arent horrific in trendy, but I believe they dont advance up with the powerful examtraining).

I sense very confident with the aid of preparing 9L0-061 state-of-the-art dumps.
Learning for the 9L0-061 exam has been a tough going. With so many confusing topics to cover, induced the self-possession for passing the exam by taking me through core questions on the subject. It paid off as I could pass the exam with a profitable pass percentage of 84%. A few of the questions came twisted, but the answers that matched from helped me stamp the right answers.

Do a quick and smart pass, prepare those 9L0-061 Questions and answers.
I desired to believe certification in 9L0-061 exam and I select killexams.Com question and solution for it. Everything is brilliantly organized with killexams.Com I used it for topics devotion data amassing and desires in 9L0-061 exam and I were given 89 rating attempting total the query and it took me nearly an hour and 20 minutes. powerful route to killexams.

exceptional to pay attention that actual test questions modern 9L0-061 exam are furnished right here.
Even as i used to exist getting organized up for my 9L0-061 , It became very annoying to pick out the 9L0-061 discover at fabric. I discovered killexams.Com while googling the property certification assets. I subscribed and noticed the wealth of sources on it and used it to prepare for my 9L0-061 check. I clean it and Im so thankful to this killexams.Com.

what is easiest manner to do together and bypass 9L0-061 exam?
This braindump from helped me fetch my 9L0-061 certification. Their substances are surely useful, and the checking outengine is just notable, it completely simulates the 9L0-061 exam. The examination itself eddy out to exist tricky, so Im joyful I used Killexams. Their bundles cowl the total lot you want, and too you wont fetch any unsightly surprises during your examination.

It is Awesome! I got dumps of 9L0-061 exam.
I am very jubilant right now. You must exist wondering why I am so happy, well the reason is quite simple, I just got my 9L0-061 test results and I believe made it through them quite easily. I write over here because it was this that taught me for 9L0-061 test and I cant travel on without thanking it for being so generous and helpful to me throughout.

attempt out these actual 9L0-061 dumps.
Failure to equivocate in those sense that it was those very moments that they couldnt learn to forget but now they total know that whether or not there was some antecedent to the puny thing that they couldnt not view just yet those stuff that they werent putative to know so now you must know that I cleared my 9L0-061 test and it was better than anything and yes I did with and it wasnt such a inferior thing at total to study online for a change and not sulk at home with my books.

put together 9L0-061 Questions and answers in any other case exist organized to fail.
I passed the 9L0-061 exam with this bundle from Killexams. Im not positive I would believe done it without it! The thing is, it covers a huge compass of topics, and if you prepare for the exam on your own, without a proven strategy, chances are that some things can plunge through the cracks. These are just a few areas has really helped me with there is just too much info! covers everything, and since they exercise existent exam questions passing the 9L0-061 with less stress is a lot easier.

I want ultra-modern dumps brand fresh 9L0-061 exam.
I even believe become a 9L0-061 certified final week. This profession direction may exist very thrilling, so in case you are nonethelessconsidering it, ensure you fetch questions solutions to do together the 9L0-061 examination. This is a powerful time saver as you fetch precisely what you requisite to recognise for the 9L0-061 exam. This is why I selected it, and that i never appeared lower back.

Where can I find 9L0-061 dumps questions?
I could undoubtedly deal with 93% marks in the desist of the exam, as numerous inquiries were devotion the adviser for me. Much appreciated to the killexams. I had a weight from office to split the exam 9L0-061. However, I was stressed over taking a decent planning in puny time. At that point, the aide showed up as a windfall for me, with its simple and short replies.

Apple Apple MAC OS X

Apple Brings Mac Mini lower back From the departed | existent Questions and Pass4sure dumps

Apple’s puny desktop notebook is not any longer only a punchline. these days the company took the wraps off a revamped Mac Mini, changing its underpowered parts with new, eighth technology Intel quad- and 6-core processors options, up to 64GB of reminiscence, as much as a 2TB SSD, a T2 protection chip, 10GB ethernet, and 4 Thunderbolt three ports. With the upgrades, Apple is bumping its longstanding $500 surge charge up to $800—but you gained’t find face-melting specs without paying much more.

sure, you’ll nonetheless requisite to convey your own display, keyboard, and mouse. And yes you can, uh, fetch it in space gray now. At $800, the groundwork model will advance with 8GB of memory, a 3.6GHz quad-core i3 processor, and 128GB of SSD storage.

The Mini was at the start designed to win over fresh converts to OS X (now macOS) with the primary sub-$500 Mac. terminal revamped eons in the past, in October 2014, it grew to exist a husk for old-fashioned guts that nobody, fully no one of their right reason had any business recommending to a loved one. with the aid of the desist of its run, the newest incarnation seemed designed to thrust patrons in this funds far from Apple, in opposition t more suitable offers from corporations devotion Dell and HP.

Apple is billing the fresh Mini as “5 instances quicker” common with “60 percent quicker photographs.” It’ll exist purchasable on November 7.

Apple publicizes free OS X Mavericks unlock, fresh iPads, Mac professional | existent Questions and Pass4sure dumps

At Apple’s “lots to cowl” particular undergo these days, the business paraded out an hour and a half’s value of recent items and updates, together with the unlock of OS X Mavericks, the fresh iPad Air and iPad Mini, Mac seasoned, up-to-date 13 and 15-inch MacBooks, and an updated suite of iLife apps.

OS X MavericksThe operating device is free, and it’s purchasable today. Apple senior vp of utility engineering Craig Federighi prefaced the liberate with, “This one is a doozy.”

attainable with a single-step improve from Snow Leopard, Lion, Mountain Lion or any MacBook dating again to 2007, Mavericks has a slew of latest points. Its fresh compressed reminiscence feature allocates portraits reminiscence in line with utilization to optimize performance. The capacity makes it practicable for 6GB of records to apt into 4GB of outfit RAM.

(Beta feedback and an entire checklist of aspects: clients poke round OS X ‘Mavericks’)

Mavericks’ OpenCL uses recollection sharing to shuffle projects running on the CPU to the GPU, taking competencies of the GPU’s more desirable computing energy to complete tasks 1.8x faster, and 2x sooner for image initiatives.

a fresh finder window makes it practicable for projects and files to exist labeled with distinctive tags for convenient search and corporation. click the title bar of any document so as to add one or greater tags, or select a tag from an inventory.

In Safari, Mavericks introduces more desirable notifications, permitting clients to respond inside the pop-up bubble with out leaving an utility. It additionally provides site notifications when fresh content is posted. the brand fresh Safari profitable sites view generates a feed of shared links from adopted users on sociable networks such as LinkedIn and Twitter.

There’s additionally a brand fresh reader view, permitting person-accelerated scrolling at once from one article to the next devoid of clicking out.

a route to Revisit each edition of Mac OS X out of your Browser | existent Questions and Pass4sure dumps

The Aqua GUI in Apple’s operating methods has gone through a remarkable evolution because March of 2000, when it institute its route into OS X 10.0, and too you could exist surprised at simply how diverse every puny thing appears now. due to the newly launched Aqua Screenshot Library, you can revisit every version of OS X (and macOS) during the years and reflect about the gradual evolution of Apple’s operating equipment—all from your browser.

The powerful gallery is the latest travail by means of 512 Pixels, a web library that makes an attempt to maintain tabs on total issues Apple (together with the Mac’s many wallpapers). The Aqua Screenshot Library, as creator Stephen Hackett notes, provides a comprehensive look at the inheritance of Apple’s working methods, which covers its soar to from bulkier CRTs to compact, LED-backlit shows; Apple’s a variety of font alterations through the years; and Apple’s movement from disc-based operating methods to (free) digital downloads.

Let’s occupy a glance at some of those main Mac milestones.

Mac OS X 10.0 (“Cheetah”)

March 24, 2001, marked the first respectable release of the Mac OS X working device, following a public beta the year before. Hackett notes that its 128MB reminiscence requirement turned into “greater than most Mac clients had in their techniques at the time.” This antecedent many complaints concerning the OS’s slow efficiency and high aid demand. The Cheetah interface retained the pin-striped menu and window design from the beta, however began the feline-based mostly naming vogue which might final as much as version 10.eight, “Mountain Lion.”

Mac OS X Leopard (10.5)

The terminal months of 2007 brought some massive changes to OS X. The free up of Leopard noticed Aqua tackle a much greater streamlined appear, with total home windows now defaulting to a single, basic gray design, as smartly because the debut of a redesigned Finder device. prior to this, different apps—and different models of OS X—had dissimilar UI designs (for better or worse). With Leopard’s liberate, OS X total started to discover greater uniform. most significantly, it become the primary version to include these rad, house-based backgrounds.

OS X Mountain Lion (10.eight)

Mountain Lion turned into the first version of OS X to reach after Steve Jobs’ dying, and it focused on aligning Mac computer systems with the late CEO’s different principal contribution to the tech industry: the iPhone. The 2011 OS X replace, Mac OS X Lion (10.7), kicked off Apple’s merging of iOS aesthetics into OS X, and the company doubled down with Mountain Lion. tools and applications were renamed after iOS aspects, and Apple added some minute visual and enter changes to bridge the two operating techniques even nearer collectively—in fashion, as a minimum.

OS X Mavericks (10.9)

Mavericks become an tremendous enterprise pivot for Apple, because it became the first edition of the OS the company released at no cost, provided to clients as an improve by the exercise of the App save in October 2013. Apple hasn’t long past returned to paid working systems seeing that—thankfully. Mavericks become additionally the first edition of OS X to exercise non-pussycat nomenclature. It too ditched the galactic inheritance theme for California landscapes, which they are able to total correspond become a huge blunder. appropriate?

macOS Sierra (10.12)

version 10.12 of Apple’s operating system for the Mac is most is super for its powerful rebranding. Apple dropped the “OS X” designation fully during this liberate, as a substitute calling its operating gadget “macOS” to align it the enterprise’s working methods on other structures: iOS, watchOS, and tvOS. 

browsing the Aqua Screenshot Library is a fun manner to view just how some distance macOS has come, principally to peer how Apple’s design priorities trade between the major releases. although, the Aqua Screenshot gallery is only one of 512 Pixels’ many tasks to check out. exist inevitable to poke across the other Apple-themed collections Hackett has assembled through the years, too, including the striking 512 Pixels YouTube channel.

9L0-061 MAC OS X 10.5 Troubleshooting

Study guide Prepared by Apple Dumps Experts 9L0-061 Dumps and existent Questions

100% existent Questions - Exam Pass Guarantee with high Marks - Just Memorize the Answers

9L0-061 exam Dumps Source : MAC OS X 10.5 Troubleshooting

Test Code : 9L0-061
Test designation : MAC OS X 10.5 Troubleshooting
Vendor designation : Apple
: 71 existent Questions

I sense very confident via getting ready 9L0-061 actual test questions.
9L0-061 is the hardest exam ive ever advance upon. I spent months analyzing for it, with total professional resources and the total thing one ought to find - and failed it miserably. however I didnt give up! a few months later, I delivered to my training agenda and kept working towards on the checking out engine and the existent examination questions they provide. I believe that is precisely what helped me skip the second time round! I wish I hadnt wasted the time and moneyon total this needless stuff (their books arent horrific in trendy, but I believe they dont advance up with the powerful examtraining).

I sense very confident with the aid of preparing 9L0-061 state-of-the-art dumps.
Learning for the 9L0-061 exam has been a tough going. With so many confusing topics to cover, induced the self-possession for passing the exam by taking me through core questions on the subject. It paid off as I could pass the exam with a profitable pass percentage of 84%. A few of the questions came twisted, but the answers that matched from helped me stamp the right answers.

Do a quick and smart pass, prepare those 9L0-061 Questions and answers.
I desired to believe certification in 9L0-061 exam and I select killexams.Com question and solution for it. Everything is brilliantly organized with killexams.Com I used it for topics devotion data amassing and desires in 9L0-061 exam and I were given 89 rating attempting total the query and it took me nearly an hour and 20 minutes. powerful route to killexams.

exceptional to pay attention that actual test questions modern 9L0-061 exam are furnished right here.
Even as i used to exist getting organized up for my 9L0-061 , It became very annoying to pick out the 9L0-061 discover at fabric. I discovered killexams.Com while googling the property certification assets. I subscribed and noticed the wealth of sources on it and used it to prepare for my 9L0-061 check. I clean it and Im so thankful to this killexams.Com.

what is easiest manner to do together and bypass 9L0-061 exam?
This braindump from helped me fetch my 9L0-061 certification. Their substances are surely useful, and the checking outengine is just notable, it completely simulates the 9L0-061 exam. The examination itself eddy out to exist tricky, so Im joyful I used Killexams. Their bundles cowl the total lot you want, and too you wont fetch any unsightly surprises during your examination.

It is Awesome! I got dumps of 9L0-061 exam.
I am very jubilant right now. You must exist wondering why I am so happy, well the reason is quite simple, I just got my 9L0-061 test results and I believe made it through them quite easily. I write over here because it was this that taught me for 9L0-061 test and I cant travel on without thanking it for being so generous and helpful to me throughout.

attempt out these actual 9L0-061 dumps.
Failure to equivocate in those sense that it was those very moments that they couldnt learn to forget but now they total know that whether or not there was some antecedent to the puny thing that they couldnt not view just yet those stuff that they werent putative to know so now you must know that I cleared my 9L0-061 test and it was better than anything and yes I did with and it wasnt such a inferior thing at total to study online for a change and not sulk at home with my books.

put together 9L0-061 Questions and answers in any other case exist organized to fail.
I passed the 9L0-061 exam with this bundle from Killexams. Im not positive I would believe done it without it! The thing is, it covers a huge compass of topics, and if you prepare for the exam on your own, without a proven strategy, chances are that some things can plunge through the cracks. These are just a few areas has really helped me with there is just too much info! covers everything, and since they exercise existent exam questions passing the 9L0-061 with less stress is a lot easier.

I want ultra-modern dumps brand fresh 9L0-061 exam.
I even believe become a 9L0-061 certified final week. This profession direction may exist very thrilling, so in case you are nonethelessconsidering it, ensure you fetch questions solutions to do together the 9L0-061 examination. This is a powerful time saver as you fetch precisely what you requisite to recognise for the 9L0-061 exam. This is why I selected it, and that i never appeared lower back.

Where can I find 9L0-061 dumps questions?
I could undoubtedly deal with 93% marks in the desist of the exam, as numerous inquiries were devotion the adviser for me. Much appreciated to the killexams. I had a weight from office to split the exam 9L0-061. However, I was stressed over taking a decent planning in puny time. At that point, the aide showed up as a windfall for me, with its simple and short replies.

While it is arduous errand to pick solid certification questions/answers assets regarding review, reputation and validity since individuals fetch sham because of picking incorrectly benefit. ensure to serve its customers best to its assets as for exam dumps update and validity. The greater allotment of other's sham report objection customers advance to us for the brain dumps and pass their exams cheerfully and effortlessly. They never bargain on their review, reputation and property because killexams review, killexams reputation and killexams customer certitude is imperative to us. Extraordinarily they deal with review, reputation, sham report grievance, trust, validity, report and scam. On the off chance that you view any deceptive report posted by their rivals with the designation killexams sham report grievance web, sham report, scam, protestation or something devotion this, simply bethink there are constantly terrible individuals harming reputation of profitable administrations because of their advantages. There are a powerful many fulfilled clients that pass their exams utilizing brain dumps, killexams PDF questions, killexams questions, killexams exam simulator. Visit, their sample questions and test brain dumps, their exam simulator and you will realize that is the best brain dumps site.

Vk Profile
Vk Details
Killexams Reddit
Google Album
Google About me

250-401 mock exam | 9A0-386 exercise test | HP0-W02 cheat sheets | C2090-544 exam prep | 000-970 exercise Test | C2070-588 test prep | 700-410 exercise questions | HP2-H38 pdf download | 599-01 free pdf download | 650-369 questions answers | 000-562 questions and answers | 000-137 test prep | 920-504 examcollection | 1Z0-974 cram | 8002 braindumps | LOT-989 study guide | C2090-422 existent questions | VCS-271 free pdf | HP0-A22 exercise test | 132-s-712-2 exercise questions |

9L0-061 exam questions | 9L0-061 free pdf | 9L0-061 pdf download | 9L0-061 test questions | 9L0-061 real questions | 9L0-061 practice questions

Never miss these 9L0-061 questions before you travel for test. brilliant 9L0-061 exam simulator is to a powerful degree empowering for their customers for the exam prep. Tremendously crucial questions, focuses and definitions are highlighted in brain dumps pdf. sociable event the data in a solitary situation is an genuine help and causes you prepare for the IT confirmation exam inside a short time span navigate. The 9L0-061 exam offers key core interests. The pass4sure dumps holds the fundamental questions or thoughts of the 9L0-061 exam.

Inside seeing the existent of the brain dumps at you will exist able to fetch very profitable marks in your 9L0-061 exam. For the IT specialists, It is basic to reinforce their capacities as showed by their travail requirement. They believe an approach to build basic for their customers to hold certification test with the assistance of confirmed and verified to goodness 9L0-061 braindumps. For AN awing future in its domain, their 9L0-061 brain dumps are the most effective call. Discount Coupons and Promo Codes are as under; WC2017 : 60% Discount Coupon for total 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 total Orders A best dumps making will exist a basic section that creates it simple for you to aquire Apple certification. In any case, 9L0-061 braindumps PDF offers settlement for candidates. The IT assertion will exist a vital arduous try if one does not realize existent course as obvious exercise test. Thus, they believe got existent and updated brain dumps for the composition of certification test. enables a great number of candidates to pass the exams and fetch their certifications. They believe an immense number of powerful overviews. Their dumps are strong, sensible, updated and of genuinely best property to vanquish the inconveniences of any IT certifications. exam dumps are latest updated in exceedingly rout route on gauge start and material is released discontinuously. Latest dumps are available in testing centers with whom they are keeping up their relationship to fetch latest material.

The exam questions for 9L0-061 MAC OS X 10.5 Troubleshooting exam is essentially in perspective of two accessible game plans, PDF and exercise test. PDF record passes on total the exam questions, answers which makes your arranging less persevering. While the exercise test are the complimentary component in the exam thing. Which serves to self-overview your progress. The appraisal mechanical assembly too includes your fragile locales, where you requisite to do more attempt with the objective that you can improve each one of your stresses. propose you to must attempt its free demo, you will view the common UI and moreover you will believe that its effortless to adjust the prep mode. Regardless, guarantee that, the existent 9L0-061 exam has a bigger number of questions than the sample exam. In case, you are appeased with its demo then you can purchase the existent 9L0-061 exam thing. offers you three months free updates of 9L0-061 MAC OS X 10.5 Troubleshooting exam questions. Their accreditation group is always open at back desist who updates the material as and when required. Huge Discount Coupons and Promo Codes are as under;
WC2017: 60% Discount Coupon for total exams on website
PROF17: 10% Discount Coupon for Orders greater than $69
DEAL17: 15% Discount Coupon for Orders greater than $99
OCTSPECIAL: 10% Special Discount Coupon for total Orders

9L0-061 Practice Test | 9L0-061 examcollection | 9L0-061 VCE | 9L0-061 study guide | 9L0-061 practice exam | 9L0-061 cram

Killexams NCIDQ test prep | Killexams 000-M35 brain dumps | Killexams 000-540 exercise exam | Killexams NCMA-CMA sample test | Killexams HP2-K09 dumps | Killexams 70-347 exam questions | Killexams HP0-Y21 dumps questions | Killexams E20-598 cram | Killexams BI0-145 examcollection | Killexams 650-156 brain dumps | Killexams 090-161 exercise test | Killexams 600-601 free pdf download | Killexams A00-280 exercise Test | Killexams HC-224 braindumps | Killexams HP0-M52 exam prep | Killexams 1Z0-216 braindumps | Killexams C2070-582 free pdf | Killexams HP0-236 study guide | Killexams 600-460 questions and answers | Killexams E20-393 test questions | huge List of Exam Braindumps

View Complete list of Brain dumps

Killexams HP0-Y38 braindumps | Killexams 1Z0-539 free pdf | Killexams 310-016 existent questions | Killexams 000-164 exercise questions | Killexams P2010-022 dumps | Killexams 646-048 exam questions | Killexams IT0-035 test prep | Killexams PGCES-02 exercise test | Killexams 1Z0-610 free pdf download | Killexams 132-S-815-1 test prep | Killexams LOT-803 exercise test | Killexams LE0-641 questions and answers | Killexams COMPASS brain dumps | Killexams HP0-921 bootcamp | Killexams MB5-292 existent questions | Killexams 000-703 existent questions | Killexams 000-914 study guide | Killexams 000-M222 questions answers | Killexams COG-145 free pdf | Killexams 642-373 VCE |

MAC OS X 10.5 Troubleshooting

Pass 4 positive 9L0-061 dumps | 9L0-061 existent questions |

How to Repair Mac OS X Version 10.5 Leopard | existent questions and Pass4sure dumps

Snow Leopard debuted in 2007.

Snow Leopard debuted in 2007.

Win McNamee/Getty Images News/Getty Images

Mac OS X version 10.5 Leopard provides the most recent version of the Macintosh operating system that runs on many PowerPC-based Apple computers. devotion previous and later versions of the Mac OS, Leopard includes utilities you can exercise to troubleshoot and maintain your OS and your arduous drive. To resolve freezes and crashes, or simply give your Mac a tuneup, originate with Apple's built-in maintenance tools before you reach for third-party repair applications or reinstall your OS.

Mac OS X 10.5 Leopard: the Ars Technica review | existent questions and Pass4sure dumps

reader comments Share this story
  • Introduction

    At the desist of my Mac OS X 10.4 Tiger review, I wrote this.

    Overall, Tiger is impressive. If this is what Apple can achieve with 18 months of development time instead of 12, I tremble to reflect what they could achieve with a replete two years.

    That was exactly two and a half years ago, to the day. It seems that I've gotten my wish and then some. Mac OS X 10.5 Leopard has gestated longer than any release of Mac OS X (other than 10.0, that is). If I had high expectations for 10.5 back in 2005, they've only grown as the months and years believe passed. Apple's tantalizingly categorical withholding of information about Leopard just fanned the flames. My status of reason leading up to the release of Leopard probably matches that of a lot of Mac enthusiasts: this better exist good.

    Maybe the equitable Mac user just expects another incrementally improved version of Mac OS X. Eighteen months, two and a half years, who's counting? Maybe they enthusiasts are just getting greedy. After all, as Apple's been so fond of touting, there believe been five releases of Mac OS X in the time it's taken Microsoft to deliver Windows Vista.

    But far exist it from me to exercise Microsoft to calibrate my expectations. Leopard has to exist something special. And as I view it, operating system beauty is more than skin deep. While the casual Mac user will gauge Leopard's worth by reading about the marquee features or watching a guided tour movie at Apple's web site, those of us with an unhealthy obsession with operating systems will exist trolling through the internals to view what's really changed.

    These two views of Leopard, the interface and the internals, lead to two very different assessments. Somewhere in between equivocate the features themselves, judged not by the technology they're based on or the interface provided for them, but by what they can actually achieve for the user.

    This review will cover total of those angles, in varying degrees of depth. devotion total other Mac OS X releases before it, Leopard is too powerful for one review to cover everything. (After all, Tiger's internals lonely can fill over 1,600 printed pages.) As in past reviews, I've chosen to delve deeply into the aspects of Leopard that are the most inquisitive to me while too trying to provide a reasonable overview for the non-geeks who've decided to occupy the plunge into an Ars Technica review. (Hi, Mom.)

    Okay Leopard, let's view what you've got.


    This is the allotment where I usually link to the entire history of Ars Technica's Mac OS X coverage, from the hoary DP2 in 1999 total the route up to the previous major release. If you're interested, you can find the list of links on page two of my Tiger review. But with 10.5, I reflect it's time to acquire a clean demolish from the past. While Mac OS X is quiet changing as mercurial as it ever has, I feel devotion the concept of Mac OS X as a product has settled down in the minds of users. What was once seen as a queer and exotic beast is now simply "the Mac operating system." It's almost a shame that the "X" qualifier is in there.

    After over eight years of exposure, even the hardest of hardcore classic Mac OS fans believe gone through total five stages of grief over what's been lost—some of us multiple times. Though what's been institute in Mac OS X has long overshadowed those concerns, ease assured that they are not forgotten. The disagreement now is that enough time has passed to allow them (I hope) to shed total semblance of nostalgia and exist seen as they always should believe been, as critical statements about the current status of Mac OS X, replete stop.

    Moving on to hardware, can you believe I quiet don't believe an Intel Mac in the house? Okay, maybe it's not so arduous to believe if you happen to recall that my dual 2GHz G5 replaced a blue and white G3/400, and my G3/400 replaced an SE/30. Though a MacBook Pro is likely on its route to my house as you read this, alas it did not acquire it in time for this review. On the shimmering side, my relatively static hardware collection allows for profitable continuity of performance impressions. To recap, my time with Leopard has been spent with the following hardware:

  • Dual G5 2GHz: A dual 2GHz Power Mac G5 with 2.5GB RAM, an ATI Radeon 9800 Pro video card with 128MB of VRAM in an 8x AGP slot, two 160GB 7,200 RPM Serial ATA arduous drives, a DVD-RW/CD-RW drive, and a 23-inch Apple Cinema HD display (the non-aluminum one).
  • Dual G5 1.8GHz: A dual 1.8GHz Power Mac G5 with 1.25GB RAM, an ATI Radeon 9600 XT video card with 128MB of VRAM in an 8x AGP slot, a 80GB 7,200 RPM Serial ATA arduous drive, a CD-RW/DVD-ROM drive, and a Dell 20-inch LCD.
  • 15" AlBook: The 1GHz 15-inch Aluminum PowerBook G4 which I reviewed here at Ars Technica.
  • In this post-PowerPC era, it's reasonable to hope that Apple is spending most of its time on Intel-specific performance enhancements, but even if this were not the case, Intel's CPUs believe long since left behind the terminal PowerPC chips used in Macs in terms of total reasonable performance measures. There is no requisite for abysmal analysis or gnashing of teeth; Leopard is faster on today's Intel Macs than it is on yesterday's PowerPC Macs because today's Intel Macs are, well, today's Macs. Time marches on.

    The profitable news, I suppose, is that Leopard certainly isn't hamstrung on PowerPC Macs. More on performance later. For now, let's talk fluff.


    Big cat names are quiet in effect. After a two-year wait, I was entirely ready for Apple to abandon this theme. It's almost as if they have. Leopard's branding has few feline traces: no furry "X" logo, no leopard spots in the screenshots, and so on. So what is the theme? First, recall the history.

    Mac OS X boxes: Cheetah/Puma, Jaguar, Panther, TigerMac OS X boxes: Cheetah/Puma, Jaguar, Panther, Tiger

    So what's the account with Leopard? Quite simply, it's Tiger in space.

    To my eyes, Mac OS X's branding is changing ever so slightly less between each fresh release. I guess this is yet another sign of a maturing product. I devotion the space theme. devotion Tiger's spotlight theme, it highlights the most prominent feature of the OS. It too leads nicely into a secondary future-world theme, as seen in this screenshot of a prerelease web page at

    It took a while to settle down, but once the space theme was chosen, Apple has dash with it and produced what I reflect is the most appealing mass-market message for Mac OS X yet.


    The installation process has been further pared down. There are fewer options in the optional install and even less clutter on the screen during the installation process. They Mac users occupy this total in stride, but I can imagine the Leopard installer being a revelation to someone who uses Windows exclusively.

    Apple has too updated the introduction movie, which now plays full-screen during the first boot into Leopard. It's hot.

    Leopard's fresh look

    There's been mention of a "new look" in most post-10.0 Mac OS X reviews, and with profitable reason. With each release of Mac OS X, Apple has chosen to revise the discover of several aspects of the interface. Sometimes these changes were made for usability reasons, but increasingly, the motivation appeared to be, for requisite of a better word, fashion.

    The phrase "arbitrary graphical change" has become increasingly applicable, and the sheer number of practicable looks for any given component of the OS has exploded. As of the desist of Tiger's reign, most major interface elements had at least two practicable looks, with windows themselves having many more than that. Worse, Apple itself has introduced many fresh looks that are exclusive to its own applications (e.g., the iTunes scroll bars or just about the entire Aperture interface.)

    I've never been among those who rail against this proliferation of looks based solely on their number. It's okay to believe multiple looks for, say, a button as long as it's quiet recognizable as a button. In fact, this exact sentiment was expressed in Apple's human interface guidelines long before the advent of Mac OS X.

    That said, I believe my own reasons for being down on the status of Mac OS X's appearance through the Tiger era. do simply, after six years of tweaks, I'm ready for a powerful change.

    I touched on this in the introduction, and it colors my entire view of Leopard: I'm looking for a discontinuity, a fresh beginning, in total aspects of the OS. This is unfair (and you'll view how unfair in a moment), but it's how I felt. I know plenty of other Mac fans too pinned their hopes on a radical appearance revision in Leopard; total the "top secret" hype certainly fanned those flames.

    Just to exist clear, I'm talking only about the appearance of the OS for now. I certainly wasn't expecting powerful changes to the interface behavior—a crazy iPhone-like multitouch reimagining, pervasive voice or handwriting recognition, and so on. But there's plenty of scope for a revolution solely within the "look" half of "look and feel."

    Look no further than the introduction of Aqua itself for the quintessential example. bethink what that was like?

    Introducing Aqua.

    Aqua hit devotion a ton of bricks, and it wasn't just because it was such a demolish from the past. Aqua was a comprehensive overhaul of the discover of Mac OS. As it existed in Mac OS X 10.0, Aqua was a closed circle: a single, internally consistent design from top to bottom.

    That's not to grunt that it was perfect—far from it. Some judged it too bright; the pinstripes were a bit too pronounced; translucency hindered legibility in some areas; the list went on. These flaws were slowly corrected with each subsequent revision of Mac OS X. But while these corrections improved the usability and (usually) the discover of the OS, they too compromised the overall aesthetic design. What started as a (flawed) travail of genius was patched and filled and tweaked by a committee of pragmatists, rendering it much improved, but considerably less inspired.

    Is it impartial to hope Leopard to wipe the slate clean and, further, to succeed where Aqua failed by being at once a travail of knack and a pragmatic match for the evolved Tiger user interface? Maybe not, but that's what was in my heart as Leopard was revealed. I wanted Steve to fetch up on stage and say, "Aqua's had a profitable run, but it's time for something new. Introducing (insert code designation here)." That's why I loved the "Illuminous" rumor so much. To me, a fresh designation meant a fresh beginning.

    Leopard's fresh look: the reality

    Leopard's appearance is not a fresh beginning, but it is quiet the most substantial visual change in the history of Mac OS X. This is mostly attributable to the appearance of windows. A Leopard window looks devotion this (mouse over for graphite).

    Notice that I didn't grunt that this is what a "standard" Leopard window looks like, or a "metal" Leopard window, or a "unified" Leopard window. That's because there's only one kindhearted of window in Leopard, and you're looking at it. This slate gray appearance replaces total other gauge window styles. Existing applications that put a question to for metal or unified windows will fetch this appearance instead.

    Custom appearances devotion those used by some of Apple's applications retain their unique looks. (Yes, Garage band is quiet sporting wood.) But oddballs aside, this is effectively a imposing Unification of window appearance after six long years of experimentation.

    I mentioned before that I've never been opposed to multiple window looks on common principles, but there was one reason (aside from my desire for radical change) that the multiplying window appearances bothered me. The powerful problem was that it was never limpid which appearance to exercise in any given situation. Apple's few attempts at setting guidelines stank of retroactive justification, so developers were left to their own judgment. This led to some needy choices and some horrible applications.

    And, truth exist told, if there's no coherent reason for the exercise of a fresh window appearance, then why does it requisite to exist at total as a system-wide option for total developers? I'm not positive what to convoke the fresh One factual Window Appearance in Leopard (Aqua? Slate?), but I'm joyful someone at Apple finally made a preference and stuck with it.

    As for the discover itself, I find it kindhearted of heavy, especially when paired with the still-bright gauge window background, as seen in dialogs, especially.

    It too clashes a bit with the mostly unchanged buttons, scroll bar thumbs, and other gauge controls that retain their shiny blue appearance. The feeble "Aqua" window looks (any of them) were definitely a better fit.

    Tool bars in the fresh windows are "unified" in that there is no dividing line between the title bar and the utensil bar area. utensil bar items retain their many different looks across the bundled applications. There's a fresh appearance for the "selected" status of toolbar items, which has its own inquisitive story.

    There's too been a welcome revision to the discover of "capsule" toolbar buttons. Gone are the muppet-felt blue buttons introduced in Tiger's Mail application, replaced with more palatable gray equivalents.

    Preview toolbar capsulesPreview toolbar capsules Mail toolbar capsulesMail toolbar capsules Depressed toolbar buttonDepressed toolbar button

    The capsules are quiet a bit of an oddity, coming in puny clumps as they do. The Safari-style square toolbar buttons are more common, and much nicer looking. The dispirited (mouse-down) status of these buttons is particularly nice.

    The idle status of the fresh windows is now more clearly distinguished from the dynamic state. idle windows fade to a much lighter shadow of gray. The switch from dusky to light gray can actually exist a bit jarring when it happens to great windows.

    Inactive windowInactive window

    It takes a while to fetch used to these changes. Long-time users used to looking for "dark windows" to pick out Safari, for example, will exist flustered. Now, only the front-most window is dark, and even Safari windows are light when in the background. Still, it's a change worth acclimating to.

    To even further emphasize the front-most window, its drop shadow has been greatly expanded (see screenshot above). It's large, but too quite diffuse, so it doesn't unduly obscure content below.

    Aesthetic quibbles aside, the fresh window discover is overwhelmingly a net win. It eliminates developer and user confusion, sweeps up and disposes of several horrible (in the view of many) looks from past versions of Mac OS X, and is, well, pretty okay looking in its own right.

    Perhaps I should try to sound more positive about the fresh window style, because it turns out to exist the highlight of the visual changes. Leopard too includes its own crop of the aforementioned "arbitrary graphical changes," and most of them are not changes for the better.

    Leopard's fresh discover (continued)

    Arguably, the fresh window appearance was too an arbitrary change. (Why dusky gray? Why not standardize on the feeble "unified" appearance instead?) But in the imposing scheme of things, the particular design chosen is not as principal as the fact that a preference was made. Of course, it could believe been an horrible preference (I don't reflect it is) or it could believe suffered from terrible usability issues (I don't reflect it does), but at least the intent was a profitable one: to simplify.

    The identical cannot exist said for a several other significant changes to the discover of Leopard's interface. Their intent is unclear at best, they antecedent usability issues where nothing existed before, and many of them are visually unpleasing, if not downright ugly.

    Folders Tiger folder iconTiger folder icon

    Let's start with the most iconic icon in the OS, the humble folder. Next to windows and gauge controls, the folder icon is the most ubiquitous piece of reused art. A lot of people didn't devotion the folder icon introduced in Mac OS X 10.0 and carried through essentially unchanged to Tiger.

    As the discover of the OS moved away from 10.0's heavily pinstriped, ultra-bright-and-shiny look, the folder icon stayed stuck in the past. Some too complained that the isometric perspective didn't match Apple's icon design guidelines. But these are total trivial issues, and subjective ones at that. Most Mac users were not clamoring en masse for fresh folder icons.

    Leopard folder icon. Enlarge / Leopard folder icon.

    I'm not opposed to a fresh folder icon design, of course. But the first rule of such an pains should exist "don't acquire it worse." Unfortunately, that's exactly what Apple's done with the Leopard folder icon design.

    The discover isn't bad, right? It's quiet easily recognizable as a folder. It's even environmentally friendly; note the darker blue flecks that imply it's a recycled paper product. (Er, recycled pixels... or something.) The danger starts when you view what the "special" folder icons discover devotion (Applications, Documents, etc.)

    Leopard special folder iconsLeopard special folder icons

    The embossed discover is attractive, but it's too incredibly low-contrast and pretty much impossible to acquire out at minute sizes. I preserve several special folders in my Dock, and I rely on being able to pick them out quickly, even at minute sizes. Here's how they discover in Tiger.

    Tiger docked special foldersTiger docked special folders

    Now here they are in Leopard.

    Leopard docked special foldersLeopard docked special folders

    When it comes to at-a-glance identification, the disagreement is striking. I find myself literally squinting at the Leopard special folder icons, as if I'm constantly not seeing them clearly. You can find a more rigorous examination of the fresh folder icons at Indie HIG (a site whose mere existence is a blot on Apple's recent user interface record).

    Poorly designed folder icons aren't the desist of the world, but it's the context that's so maddening. Here's an interface component that maybe could believe used some freshening up, but it was far from broken. Apple's gone and made it worse in a route that's obvious in seconds to anyone who's ever given any thought to interface design. It boggles the mind. The rumor is that Jobs likes them. Great.

    The Dock

    It gets worse. Next to travel under the knife is the Dock. Now here's an interface component with some serious, long-standing issues, but bethink we're only talking about appearances in this section. On that front, there's not much to complain about in Tiger, where the Dock is a minimalist translucent rectangle upon which icons are arrayed.

    The Tiger DockThe Tiger Dock

    Hmm, how can they acquire this more "Leopard"? We'll believe to decrease the usability in some obvious ways. I've got a few ideas there. Let's start by removing the uniform background, leaving the icons partially hanging over the desktop. That'll exist positive to antecedent some visibility issues. Next, the already-small triangles that materialize under running application icons can probably exist further obscured. Let's supplant those with fuzzy blue orbs. Also, if they can someway acquire the Dock less space-efficient, that'd exist a plus. But they too believe to jazz it up, don't we?

    I know! Let's acquire it pseudo-3D! And finally, the obligatory demo feature: reflections everywhere! Reflections on the fuzzy blue orbs, a reflection highlight line running across the total Dock, and—the coupe de grâce—real-time reflections of any windows that shuffle near the Dock! Behold, the Leopard Dock.

    The Leopard Dock. The Dock on<br /> the sideThe Dock on the side

    It's a cornucopia of Obviously inferior Ideas, again addressed more thoroughly by others. This is devotion the folder icon situation total over again, but even worse. It's an sample of sacrificing usability for the sake of purely aesthetic changes that are far from universally loved (to do it mildly) in isolation, and inexcusable given the charge paid for them.

    Seriously, pseudo-3D? Really? If a compulsion for gaudiness must exist quenched, at least try to confine such exercises to more obscure features. Don't scribble total over the second-most visible interface component in the entire OS devotion a nine year-old girl putting make-up on her dollie.

    When the Dock is placed on the side, it regains its sanity, appearing with a uniform, flat background that encloses the icons entirely. There are no real-time reflections, and running applications are indicated by a minute but high-contrast white dot.

    This visual style never appeared in a developer seed of Leopard, indicating that it was added very late in the game. Perhaps it's meant as an apology, or an acknowledgement that the people most annoyed by the discover of the horizontal Dock are too the most likely to believe their Docks on the side. Either way, the presence of an alternate discover is a tacit admission that the default design has problems.

    If you want the alternate discover when the Dock is on the bottom too, ilk the following commands at a Terminal prompt:

    % defaults write no-glass -boolean YES % killall Dock

    There is actually one legitimate improvement in the appearance of the Leopard Dock. The text labels that materialize when hovering over Dock icons are more readable, with light text on top of large, uniform, dusky backgrounds.

    Dock labelsDock labels

    Did I grunt "second-most visible interface element" earlier? Oh, you view it coming, don't you? What's the most visible interface element? What's on screen even more than the Dock? Your brain doesn't even want to travel there, I know. "The menu bar? Surely they didn't... I mean, what's to change there?" Oh yes, buckle your straightjackets; they believe now passed over to the other side.

    The menu bar

    Completing the troika of insane, unnecessary changes for the worse made to Mac OS X's most prominent interface elements is the Leopard menu bar which is, inexplicably, incomprehensibly translucent.

    The Leopard menu bar. ReallyThe Leopard menu bar. Really

    It's more of a "menu smear" than a menu bar, as if someone painted it onto the screen with Vaseline. (It's actually using Core Image to filter the background, if you care.)

    It used to exist worse, believe it or not. In prerelease versions of Leopard, the menu bar was even less opaque—comically so. But Apple gets zero points from me for lessening the degree of transparency. That'd exist devotion congratulating someone for extinguishing the left half of his corpse after intentionally lighting himself on fire.

    The rationale proffered by Apple for the exercise of translucency in the original Aqua design was that it denoted a fleeting element—pull-down menus and sheets, for example. Now it's being applied to the least fleeting component in the entire interface.

    Leopard's fresh discover has been compared to the Aero Glass discover in Windows Vista. While I reflect there are few legitimate similarities, this comparison comes up as often as it does because the two designs share one prominent attribute: the gratuitous, inappropriate exercise of translucency to the detriment of usability.

    Why, Apple? Why!? Was there something horribly wrong with the existing menu bar—something that could only exist fixed by injuring its legibility? devotion the folder icons and the Dock, it's not so much a fatal flaw in and of itself. It's what it implies about the situation at Apple that is so troubling. What in the holy hell has to happen in a meeting for this view to fetch the green light? Is this the dusky side of Steve Jobs's iron-fisted rule—that there's always a risk that an obviously ridiculous and horrible view will exist expressed in his presence and he'll (inexplicably) latch onto it and acquire it happen? Ugh, I don't even want to reflect about it.

    In the meantime, there's positive to exist a burgeoning market for hacks to restore blessed sanity to the menu bar. This is nothing new, really. Since the dawn of Mac OS X, third-party developers believe been saving Apple's bacon by doing what Apple should believe done itself. I already requisite several "hacks" to exist jubilant in Tiger, but a hack for the menu bar? It's just getting ridiculous.

    I guess I should try to grunt something nice about the Leopard menu bar too. Well, the fresh Spotlight icon fits in much better with the line-art theme used for other menu icons.

    Menu bar iconsMenu bar icons

    Leopard's menus too believe a subtle change: rounded corners. Only the lower corners are rounded in drop-down menus, while total four corners are rounded in pop-up menus.

    Pull-down menu

    Pull-down menu

    Pop-up menu<br /> (graphite)

    Pop-up menu (graphite)

    Although I'm a powerful fan of rounded corners (round rects forever!) I don't devotion them in this particular location; I reflect it makes drop-down menus in particular discover less crisp. But at least the change has no detrimental consequence on usability and isn't aggressively ugly.

    The fresh menu highlight color is a deep, rich blue on an appropriately slatey gray, both with the obligatory gradients. They're certainly striking, but perhaps distractingly so. I know, I know, I'm never satisfied.

    Leopard's visual scorecard

    I'm going to desist here, not because there's nothing more to grunt about the fresh discover in Leopard, but because the things I believe covered span the compass of quality. The new, standardized window style makes the biggest visual impact and is the best aspect of the fresh design. At the other desist of the spectrum are the baffling alterations and adornments that acquire Leopard less usable and (in many cases) less pleasant to discover at. There are minute visual improvements in individual applications, but the overall discover of the OS proper is foundering.

    I was ready for an all-new discover in Leopard; I was ready for Aqua's successor. That Leopard doesn't provide that is a disappointment, but hardly a sin. But a lower degree of rigor should entail less risk. Viewed in that light, Leopard's graphical missteps are damning. If Apple is going to acquire mistakes, let them exist made in service of a truly daring design. I'm willing to forgive, and even to discover back fondly on the original Aqua UI for this reason. But to attempt a relatively tame evolution and then to willfully screw things up—things that were not broken before—that I achieve not forgive.

    The Kernel

    Let's travel in the antithetical direction entirely and dive into the core of the OS. We'll travail their route back up to the higher levels eventually. For now, it's kernel time.

    There was a bit of a kerfuffle about the future of the Mac OS X kernel back in the summer of 2006, fed mostly (as these things often are) by an information vacuum. The summary is that Apple wasn't releasing the source code to its then-new x86 kernel (as it had with total previous kernels) and wouldn't grunt why. Many theories sprang up to fill the void. I, of course, had my own pet theory.

    The most analytic reason that I can reflect of for Apple's refusal (thus far) to publish the source code to the x86 version of the Mac OS X kernel is that the kernel shipping today in the x86 versions of Mac OS X Tiger is an evolutionary departed end, and therefore not worth the pains to pretty up and publish.

    Presumably, total of the major travail on Mac OS X, the kernel or otherwise, has long been focused on Leopard. Now imagine that the Leopard kernel has significantly diverged from the Tiger kernel. Maybe it's a fresh kernel entirely, or maybe it has significant changes to advocate virtualization more efficiently, or something in between. Apple seems to exist holding its cards close to its chest until WWDC. In the meantime, pushing out the source to a soon-to-be defunct incarnation of the Tiger kernel might not exist along the critical path.

    I even had some crackpot ideas about what, exactly, could supplant the existing Mach/BSD kernel—ideas that didn't stand up to much scrutiny, sadly. But as usual, I was smart (or wimpy) enough to hedge my bets.

    I'll exist very surprised if there's no powerful kernel-related technology or announcement at WWDC. That said, I don't view any pressing requisite for major kernel shenanigans in Leopard, just more of the identical kinds of improvements that came in Tiger. Maybe no powerful announcement really would exist the best practicable outcome.

    WWDC came and went (and came and went) and there was no major kernel announcement. The Leopard kernel does indeed contain "more of the identical kinds of improvements" that we've seen over the life of Mac OS X, and that's not a inferior thing at all. (I'll save my kernel pipe dreams for Mac OS X 11.0, I suppose.)

    A lot of the kernel rumor craziness had its origins in the view that Mac OS X is a needy performer at the kernel plane due to some fundamental design choices. This is a long-standing meme with some sound (though often misapplied) computer science theory surrounding it, as well as the expected bevy of dubious benchmarks.

    As usual, the truth is much less dramatic. The core OS team at Apple is, perhaps predictably, the polar antithetical of the graphical design team. Apple's kernel engineers in particular are pragmatic, cautious, and wise. They're too human, however—if you prick them, achieve they not bleed?—which may define why they spent some time at WWDC spelling out the philosophy behind Mac OS X's kernel development process.

    Apple's focus is on system-level performance, not micro-benchmarks. The kernel team's job is to acquire the software at the higher levels discover good. If improving the performance of some tiny aspect of the kernel tenfold does not provide a measurable performance multiply for some user-visible feature or task, it's not an effective exercise of development time, benchmark bragging rights exist damned.

    That's not to grunt that Apple's kernel team isn't competitive. But when it comes to dedicated kernel benchmarks, there's a natural home-field advantage: Linux tends to achieve well on LMBench, Solaris does well on libmicro, and so on. This is not surprising; the preference of benchmark determines where optimization is done. Apple's decision to measure kernel performance "from the top" by looking at the behavior of the existent applications running on the replete OS dictates which aspects of the kernel fetch the most attention.

    In Mac OS X in general, and in Leopard in particular, improvements to scheduling and latency are important. There's a powerful disagreement between being "fast" and being "responsive," and Apple's focus is on the latter. Here are a few of the highlights from the Leopard kernel. (For the nitty gritty details, there's always the source code... or will be, once Apple updates its repository.)

    Kernel highlights

    The Leopard kernel is better about scheduling processes on CPUs, touching from a single, flat queue of processes to a hierarchical one that better reflects the actual hardware (e.g., two divide chips, each with two CPU cores). Bouncing a process from one CPU to another is inferior for performance; the on-chip caches don't fetch a chance to properly warm up. But multiple cores on the identical chip often share some caches. A hierarchy of process queues in the kernel created with this knowledge allows for better scheduling choices.

    The Leopard virtual recollection system is better about determining which pieces of recollection are actually being used by your application right now and which are safe to swap out to disk. When it comes time to swap to disk, Leopard will (finally!) dynamically designate swap files, which means that you should fetch some disk space back when the recollection pressure abates.

    Resource limits, the bane of my existence in Tiger and earlier, are dynamic where practicable in Leopard. These are things devotion the number of open files or processes per user and so on. If you've never bumped up against these limits, consider yourself lucky; a lot of things desist working in very inferior ways when you can't open any more files, for example.

    I routinely dash into these limits in Tiger and believe often been forced to occupy heroic measures to multiply them. A few of the defaults believe too increased in Leopard (e.g., the default maximum number of processes per user has increased from 100 to 266. I'll quiet preserve mine over 2000, thanks). And for profitable measure, there are even a few fresh limits on previously unlimited resources devotion resident and wired recollection sizes.

    The Leopard kernel too has a fresh "sandboxing" system which forces inevitable processes to dash in their own isolated, restricted environments for security reasons. Apple's implementation is based on mandatory access control (yet another "MAC" acronym that's not short for "Macintosh"). These sandboxes are defined, in typically unpretentious Unix style, by unostentatious text files (examples can exist institute in /usr/share/sandbox) and are applied to many system services in Leopard, including Bonjour, Quick Look, Spotlight, NTP, and many others.


    Perhaps the most significant change in the Leopard kernel is the addition of DTrace. DTrace was developed by Sun and is open source. Apple's core OS team has continued its streak of shrewdly identifying and adopting best-of-breed open-source projects and has completed the substantial chore of porting DTrace from Solaris to the Mac OS X kernel. DTrace solves a long-standing kernel development problem, and does so in such a fantastic route that it creates fresh opportunities for Apple to help total programmers, not just kernel hackers.

    To understand how DTrace helps kernel developers, consider the following scenario. Let's grunt you're a developer working on some aspect of process creation in the kernel. To help during your development, you'd devotion some sort of notification every time a fresh process is created. So you find the duty in the kernel that creates a fresh process, and you add a bit of your own code to the surge of that duty that prints some information to a log file. Now you recompile your kernel, reboot, and continue your work.

    Unfortunately, you've hard-coded at least three things using this technique: 1) the fact that you want some debugging information, 2) the location of the inquiry, and 3) the mechanism of the report. Furthermore, it's likely that you'll want similar bits of debugging code in other places in the kernel in the future, and it's unlikely that you'll want every one of these bits dynamic at the identical time.

    So, being the profitable puny programmer that you are, you advance up with a more common solution. At each point where some debugging code may exist useful, you wrap the code in a conditional expression that asks, "Should this piece of debugging exist turned on right now?"

    This seems devotion a profitable solution until you've filled the kernel with these snippets. bethink that the kernel, by its nature, tends to contain code that executes very quickly and very frequently. A tiny check to view if a particular piece of debugging should exist turned on may only occupy a millisecond, but if the entire routine executed in ten milliseconds before you added this check, you've just increased the execution time significantly. And if this routine is called many thousands of times per second, you're starting to talk some existent wall-clock time down the drain. Now multiply this by many hundreds or thousands of debugging probes in the kernel, and it becomes limpid why total these checks cannot exist left in the finished product.

    The obvious solution is to convert these debugging checks from conditions that are evaluated at runtime to conditionally compiled code. When debugging is enabled during the kernel build process, some or total of the debugging code is included in the build. But when debugging is disabled for a production build, the debugging code is omitted entirely from the kernel.

    Though I've simplified things greatly, this is the gist of traditional kernel-level debugging probes. You travail with a special "debug build" that may exist slow but which contains total the diagnostics you requisite for development. When you requisite to add, enable, or disable some debugging code, you recompile and reboot. When you're happy, you compile an optimized production build of the kernel that contains nothing of this debugging code.

    Into this environment comes DTrace, which proposes the following seemingly impossible combination of features.

  • No recompilation required. Enable or disable debugging probes in existent time on a running kernel.
  • Near-zero overhead when not in use. The impact of disabled debugging code is so minute that total such code can exist left in production kernel builds.
  • Programmers reading this will exist forgiven for cringing a bit at the odor of self-modifying code, but my counsel is to just close your eyes and reflect of England. The bottom line is that it actually works, and works well.

    DTrace supports its own simplified programming language called "D" (no, not that one) which is used to define probes. Here's an sample that prints a notification every time a fresh process is created.

    #!/usr/sbin/dtrace -s #pragma D option quiet syscall::exec*:return { printf("%Y fresh process %s (pid %d) createdn", walltimestamp, curpsinfo->pr_psargs, curpsinfo->pr_pid); }

    The output looks devotion this.

    2007 Sep 22 22:10:16 fresh process ls (pid 1743) created 2007 Sep 22 22:11:34 fresh process nmblookup (pid 1746) created 2007 Sep 22 22:18:11 fresh process coreservicesd (pid 85) created 2007 Sep 22 22:21:11 fresh process login (pid 1752) created 2007 Sep 22 22:21:12 fresh process bash (pid 1753) created 2007 Sep 22 22:21:12 fresh process sh (pid 1755) created ...

    Here's another one, slightly more complicated. It waits for the ls program to acquire the stat() system call, then traces the execution of this convoke through the kernel.

    #!/usr/sbin/dtrace -s #pragma D option flowindent syscall::stat:entry /execname == "ls" && guard++ == 0/ { self->traceme = 1; } fbt::: /self->traceme/ { /* default action */ } syscall::stat:return /self->traceme/ { self->traceme = 0; }

    Here's the (abbreviated) output.

    CPU FUNCTION 1 -> stat 1 -> vfs_context_current 1 <- vfs_context_current 1 -> vfs_context_proc 1 <- vfs_context_proc 1 -> namei 1 -> vfs_context_proc 1 <- vfs_context_proc 1 -> lookup 1 -> name_cache_unlock 1 -> mac_vnode_check_lookup 1 -> vfs_context_proc 1 <- vfs_context_proc 1 -> mac_policy_list_conditional_busy ... 1 <- vfs_context_issuser 1 <- vnode_getattr 1 -> vfs_context_current 1 <- vfs_context_current 1 -> nameidone 1 <- nameidone 1 -> vfs_context_proc 1 <- vfs_context_proc 1 <- stat

    In action, it's indistinguishable from magic. You write these puny text files with script-like bang-pound lines using this unearthly C-like language and you believe essentially free reign to grope total over the kernel. (You believe to exist root to dash DTrace at all, for obvious reasons.)

    The D language does not advocate branching, subroutines, or loops—a profitable thing, because accidentally creating an sempiternal loop or recursion inside the kernel definitely should not exist one tiny plain-text script away. You too can't exercise DTrace to modify kernel recollection or CPU registers or to convoke arbitrary functions.

    But within its limited scope, D is quiet quite powerful. It supports most common C/C++ data types, aggregates, local variables, and a total slew of shell/awk-style conventions: script arguments in $1 .. $N, originate and desist blocks, etc. It even has endemic advocate for cute ASCII histograms. It's quite pleasant to use—especially compared to recompiling the kernel and rebooting.

    And bethink this is total running on a unostentatious feeble consumer copy of Leopard, not a special build. DTrace is included on total Leopard systems; it's not an optional install. This means that developers can rely on their users having it. Since DTrace scripts are unostentatious text files, remotely debugging a thorny problem by e-mail suddenly got about a thousand times easier.

    (Debug kernel builds that contain a replete complement of symbols and other metadata are quiet useful. DTrace does not supplant them. What it does achieve is provide an unprecedented plane of flexibility on top of them—flexibility that remains even in the shipping version of the kernel.)

    <span style="text-decoration: line-through;">Xray</span> Instruments<br /> </span>Xray Instruments

    Install the developer tools, and you'll fetch a Garage Band-like GUI application for applying debugging instruments (get it?) to individual applications or the entire system. This application was called Xray for most of its development life, which explains the icon. It's now called Instruments for reasons that surely involve lawyers. If you'll condone me, I'm going to preserve calling it Xray for the ease of this review.

    Unsurprisingly, many of the most powerful instruments are based on DTrace. There's even a GUI for creating custom DTrace-based instruments, plus the faculty to record and play back a series of actions. Mmm... automated GUI-based performance regression testing.

    DTrace and Xray invite profitable questions. "How many files does my application open on launch?" "How many times is a particular duty called?" "What does the recollection usage of my application discover devotion over time?" DTrace and Xray acquire the previously daunting chore of answering these questions almost trivial and (dare I grunt it) fun. I can't imagine any Mac developer seeing Xray and not instantly longing to sic it on his application.

    All of this newfound power can't help but lead to better, faster, more stable applications—from third-party developers as well as from Apple itself. And it's total thanks to an obscure, open-source, low-level kernel debugging framework from Sun.

    State of the kernel

    With Tiger, Apple finally completed the kernel's transition from its NeXT roots to its Mac OS X future by nailing down the kernel APIs and providing a limpid path forward. Leopard has taken the first powerful step down that path. The addition of DTrace is the most significant change. It's an entirely fresh feature and was not created with Mac OS X's kernel in mind. DTrace will too believe the biggest impact on the development process and by extension on the nature and property of applications available to users.

    The ease of the changes are "more of the same," and that's a profitable thing: performance optimizations, scalability improvements, better standards compliance, total in appropriately conservative doses. The addition of DTrace must believe helped a bit with the ease of Leopard's development, but it has taken a while for DTrace to advance up to speed on Mac OS X. The existent payoff will advance in the next major version of the OS, which will believe spent its entire development life in a post-DTrace world.


    Tiger included advocate for 64-bit processes, but only if they did not exercise any of the major GUI APIs on the system. Here's how the 64-bit future of Mac OS X looked to me at the time.

    There are few benefits to being a 64-bit process for the vast majority of GUI applications. Nevertheless, it's safe to assume that, eventually, total Macs will include 64-bit CPUs. The introduction of 64-bit versions of total Mac OS X subsystems (Carbon, Cocoa, Core Foundation, QuickTime, Quartz, etc.) seems inevitable.

    I just miracle how much benefit there will exist from introducing any of that advocate piecemeal. [... ] total the higher-level GUI libraries rely on lower-level services devotion Quartz and Core Foundation anyway. So it seems to me that the best shuffle in the future will exist to roll out a complete 64-bit system total in one shot. That's a tall order, which is why I reflect it'll exist a while.

    Well, it certainly has been a while since Tiger, and guess what? Leopard is the release that goes 64-bit total in one shot... with a few caveats. But before getting to that, I want to revisit the view that "there are few benefits to being a 64-bit process for the vast majority of GUI applications."

    I wrote that before Apple's transition to Intel processors. Thanks to the tortured history of the x86 instruction set, there actually are performance benefits for most applications when touching from 32-bit Intel (x86) to 64-bit Intel (x86_64). The table below explains why.

    32-bit PowerPC 64-bit PowerPC 32-bit Intel (x86) 64-bit Intel (x86_64) GPRs* 32 32 8 16 GPR size 32 bits 64 bits 32 bits 64 bits FPRs*/Vector Registers 32 32 8 16 Calling convention Register-based Register-based Stack-based Register-based PC-relative addressing No No No Yes *GPR stands for common purpose register, FPR for floating-point register.

    The PowerPC instruction set was designed with a 64-bit implementation in mind; its "transition" to 64-bit was really nonexistent. The x86 instruction set, on the other hand, was created in the 16-bit era and has accumulated quite a bit of cruft going from 16-bit to 32-bit. Some of that cruft was wisely abandoned during the transition from 32-bit to 64-bit. Applications compiled for x86_64 don't just fetch larger registers, they fetch more registers, plus a more modern calling convention and more addressing modes.

    Every 32-bit x86 application can benefit from these changes, it's just a question of how significant that benefit will be. This is not factual of PowerPC applications, which fetch the added recollection and cache pressure of 64-bit register sizes without any of Intel's cruft-abandoning benefits.

    I grunt "x86 application" and "PowerPC application," but of course Leopard, devotion Tiger, supports what Apple calls Universal Binaries. These are solitary executable files that contain code for total supported architectures: 32-bit Power PC, 64-bit PowerPC, 32-bit x86, and 64-bit x86_64. Here's an sample from Leopard.

    % cd /Developer/Applications/ % file Xcode Xcode (for architecture ppc7400): Mach-O executable ppc Xcode (for architecture ppc64): Mach-O 64-bit executable ppc64 Xcode (for architecture i386): Mach-O executable i386 Xcode (for architecture x86_64): Mach-O 64-bit executable x86_64

    And there you believe it: the powerful 64-bit intelligence in Leopard is that GUI applications can now exist 64-bit. Leopard applications can too specify an architecture preference order as well as a minimum OS version for each architecture. total of this 64-bit goodness comes in a solitary OS; there is no special 64-bit version. Leopard is one operating system that runs both 32-bit and 64-bit applications.

    There is no "mixed mode" in Leopard. Every process is either 32-bit or 64-bit. Since a 64-bit process cannot load 32-bit plug-ins (and vice versa) there will exist a significant transition term for applications that rely heavily on plug-ins. (I don't envy Adobe's developers... and it gets even worse for them, as you'll soon see.)

    Apple has gone 64-bit across the board, with two major exceptions. The first is the kernel itself, which remains 32-bit in order to maintain compatibility with existing drivers. The second is a bit of a downhearted story... or perhaps a hopeful one. You decide.

    Brave fresh 64-bit world

    At the HIToolbox status of the Union session at WWDC 2006, a slip entitled "The Future of HIToolbox" appeared. Hint number one: it is rarely a profitable sign when the phrase "The Future of (insert technology)" appears on a slip at WWDC.

    For those of you that don't know, HIToolbox is the most modern and most principal allotment of the API more commonly known as Carbon. The man on stage at this session began by saw the following, which I'm providing in audio shape so you can fetch the full, nuanced undergo of this moment.

  • The future of HIToolbox (MP3)
  • For several milliseconds, Carbon programmers attending this session at WWDC 2006 saw their coding lives twinkle before their eyes. I grunt only "several milliseconds" because, after that oh-so-agonizing pregnant pause, the terminal sentence actually finished devotion this.

  • The future of HIToolbox, after the respite (MP3)
  • "Integration! Oh thank God!" Yes, Carbon programmers were given a reprieve in 2006. But the fact that the powerful thrust at WWDC that year was for Carbon programmers to learn how to integrate Cocoa APIs into their Carbon applications should believe been a powerful red flag.

    Fast-forward to WWDC 2007, this time in the 64-bit session, and the other shoe dropped. Though several non-GUI parts of the Carbon API that are shared with Cocoa will exist supported in 64-bit mode in Leopard, the GUI portions of the Carbon API will not.

    Yep, it's (finally) the desist of the line for Carbon GUI applications in Mac OS X. Oh, sure, they'll exist around for years and years to come, but the requisite of 64-bit advocate is a long-term death sentence.

    The terminal vestiges of the original Macintosh API are finally being do to rest. They've done their job and are being given a decent burial, I think. A slow, almost natural transition. Bugs will exist fixed in the 32-bit Carbon APIs, of course, but no fresh features will exist added. total fresh GUI APIs in Leopard and future Mac OS X releases will exist added as Cocoa-only APIs.

    Perhaps the most painful allotment of this for developers with great Carbon code bases (poor Adobe... ) is that Apple did, in fact, port Carbon to 64-bit. There were sessions on it at WWDC 2006, and the code appeared in Leopard seeds. The decision to drop 64-bit advocate for Carbon was obviously a arduous one to make, but eventually it was made, despite the travail already do into the effort.

    I reflect it was a profitable decision. Apple has been hamstrung by the requisite to advocate two entirely different APIs, maintaining feature parity between them, and having to define which one developers should choose.

    When it came down to it, Cocoa "won" because it's the more modern API. In the beginning, with Mac OS X 10.0, it wasn't at total limpid that Mac developers would want to learn Objective-C and a total fresh set of APIs. Here in 2007, the developers believe spoken. The only people quiet doing Carbon development are those with code bases that predate Mac OS X. Apple has been encouraging these developers to port to Cocoa for years now. Now it's finally time for some tough love.

    Making a clean break

    Carbon is just one example. Apple has wisely decided to exercise the transition to 64-bit as an chance to acquire total sorts of backwards-incompatible changes. After all, 64-bit is backwards-incompatible with 32-bit already, so there's nothing to lose.

    In Cocoa, deprecated APIs were simply not ported to 64-bit. The Objective-C runtime is all-new for 64-bit, with a fresh ABI, faster dispatching, zero-cost exceptions, and public APIs for introspection built on top of newly opaque internal structures. total over Cocoa, ints believe been replaced with NSIntegers. In total of the graphics APIs, floats believe been replaced with CGFloats.

    QuickTime too got the "Carbon treatment." The venerable plain-C API for QuickTime is not available in 64-bit. The Cocoa QTKit library is the only game in town for 64-bit QuickTime.

    And on and on. With Leopard, Mac OS X's API future is clearer than it's ever been. The future is Objective-C, Cocoa, 64-bit. replete stop, no waffling, everyone fetch on board the train.

    There's an inherent tension between developers with existing applications and skillsets and the OS vendor's desire to attract fresh blood and acquire profitable long-term decisions for the platform. The late convoke on the 64-bit Carbon decision is limpid evidence that Apple struggled mightily with these issues internally.

    In the end, Apple made the arduous preference instead of the effortless one. I reflect it will pay off, though the short-term consequences could exist pretty grim. After all, just discover at how long it's taking to fetch an Intel-native version of Microsoft Office for the Mac. Should they hope a 64-bit Cocoa version in, say, 2012? And I believe no view what Adobe's going to achieve about 64-bit versions of its products. That's many millions of lines of Carbon code between those two companies alone. They may exist in for a rough patch, so buckle up.


    Once upon a time there was an operating system called BeOS with a daring and innovative design. Not total of its audacious fresh ideas worked out as well as expected, however, and those that did were not enough to save the product from other, nontechnical forces that led to its demise. Nevertheless, BeOS made quite an imprint on the OS community. In particular, the file system and related interfaces in BeOS included four noteworthy features.

  • Journaling
  • Arbitrarily extensible file system metadata
  • Asynchronous file system notifications
  • Automatic metadata indexing and integrated query engine
  • These features combined to provide a user undergo unlike any other synchronous PC operating system. Mac users, in particular, saw these features, understood their value, and wanted them in their favorite OS—assuming they hadn't already jumped ship for BeOS.

    (The engage Practical File System Design with the exist File System describes the history and implementation of these features. A free PDF is too available.)

    In 1997, Apple purchased NeXT instead of exist and based Mac OS X on the NEXTSTEP OS. Initially, Mac OS X had nothing of the BeOS file system features listed above. The thrust to add them to Mac OS X, both external and from within Apple, met with significant resistance from engineers aligned with the NeXT/Unix philosophy. And so began a multiyear struggle for the future of Mac OS X file system technologies: the Mac guys versus the NeXTies.

    At some point (so the legend goes) the Mac guys inside Apple "won," and Apple started down a fresh path. But it takes a long time to eddy a ship as powerful as Mac OS X. From the perspective of an outside observer, the history of file system technology in Mac OS X resembles a six-year-long struggle to implement each and every BeOS file system feature listed above, total of which were decried by the NeXTies at one point or another as inefficient and unnecessary.

    Journaling was added to HFS+; Spotlight brought automatic metadata indexing and an integrated query engine; the fresh extended attributes APIs brought arbitrarily extensible metadata. Now, in Leopard, the final piece has arrived: an asynchronous file system notification API in the shape of the FSEvents framework.

    File system events déjà vu

    Tech-savvy Mac users will note that such an API existed in Tiger; it was what made Spotlight possible. The /dev/fsevents facility tracked total file i/o as it went through the Mac OS X kernel, providing notifications to interested clients. This allowed the Spotlight engine to index (or reindex) each fresh or changed file without resorting to polling. (Polling is the act of repeatedly asking if something has changed. It's massively inefficient and totally unfeasible as a route to detect changes across an entire file system.)

    The /dev/fsevents API was private—though that didn't desist industrious hackers from playing with it. But it was private for a very profitable reason. It has to achieve with the mechanics of file system notifications.

    To exist conscious of total apropos file system changes, the notification mechanism must exist at the choke point for total local i/o: the kernel. But the kernel is a harsh mistress, filled with draconian latency and recollection restrictions. Ideally, the /dev/fsevents kernel code should acquire each event available to interested clients and then shuffle on as quickly as possible.

    Back in userspace, things are much more leisurely. Processes that signed up to received file system notifications via /dev/fsevents may exist off doing something else when an event arrives. This is total par for the course in userspace, but it's extremely incompatible with the kernel's requisite to fetch things done right now, with minimal recollection and CPU overhead.

    What's the kernel to achieve when 10,000 file system changes occur in two seconds (say, as allotment of some software installation) and the stupid, slothful userspace process that registered for file system notifications is now too preoccupied with other things and hasn't pulled any notification events off its queue in the past three seconds?

    Well, the kernel has to buffer those events, of course. That is, it has to save the events and wait for total interested clients to finally fetch around to receiving them. But buffers are not unlimited. This is especially factual in the kernel. What happens when the buffers fill up?

    Well, the kernel could hide waiting for some buffer space to become available. However, consider what happens when a client gets blocked on a file system operation because there's no scope in the queue for the corresponding event, but space never becomes available because the other client that needs to read events to free up buffer space is blocked on the client that blocked waiting for space in the first place! Hello, deadlock.

    The only other option is to dynamically designate memory, but that just postpones the problem. do simply, either you limit the number of events you can buffer, accepting that sometimes the buffer will fill up and you'll believe to drop events, or you can consign to potentially using an unlimited amount of memory.

    Apple has chosen the former. The kernel buffers are a fixed size, and if they fill up because of a slow client, events fetch dropped. This means that one badly behaved client can ruin it for everyone.

    So, no, /dev/fsevents is not a profitable candidate for a public API. But the claim for efficient, asynchronous file system notifications remains. What to do? Enter Leopard's FSEvents framework. It takes a pragmatic approach to providing these features.

    This is a theme that recurs throughout Leopard's fresh technologies. Given a thorny technical problem, FSEvents does not attempt to exist total things to total people. Instead, it shrewdly narrows its focus, concentrating on the practicable and the probable. FSEvents provides an "80 percent solution" with (near) 100 percent reliability, rather than attempting to exist an all-encompassing, "perfect" solution.

    FSEvents design and implementation

    It seems to me that the key breakthrough in the design of FSEvents was arrived at by considering yet another weakness of /dev/fsevents. The private /dev/fsevents API doles out notifications in existent time to total interested clients. This appears to exist the best feature of the API, but it's actually quite a affliction for clients. Any events that occur when a client program is not running will never exist seen by that client. This is why the Spotlight indexing process is launched when the system boots and remains running as long as the computer is on. It must achieve this in order to trap and process total file system events.

    If any other program wanted to solemnize total file system events, it would believe to achieve the identical thing: launch at boot time and remain running forever. Oh, and never crash, because even a process that immediately relaunches itself after a crash may miss some events during the time that it's down; /dev/fsevents waits for no process.

    So how does this realization lead to a design for FSEvents? The own is that solving the problem of the constantly running client too makes many other problems disappear. Here's how FSEvents does it.

    The /dev/fsevents API can only advocate a few extremely well-behaved clients. Spotlight is one. In Leopard, FSEvents is another. The FSEvents framework relies on a single, constantly running daemon process called fseventsd that reads from /dev/fsevents and writes the events to log files on disk (stored in a .fseventsd directory at the root of the volume the events are for). That's it. That's the super-high-tech solution: just write the events to a log file. Boring, pragmatic, but quite effective.

    Programs wishing to exercise the FSEvents API achieve not requisite to exist running constantly. They can exist launched at any time and can ask, "Okay, what's changed since the terminal time I was running?" As long as they know where they left off in the log file, the FSEvents framework can (effectively) "play back" every event that's occurred since then and own the question accurately.

    Pragmatic? Isn't it too impartial to convoke this solution "fraught with its own intractable problems"? How powerful are these log files? Are they going to fill my disk if I constantly create, modify, and delete files? Will the log files exist trimmed? What if a process doesn't dash for a year and then wants to know what's changed since then?

    Pragmatism means compromise. Yes, if fseventsd drank from the /dev/fsevents fire hose and wrote every solitary event to disk, you'd dash out of disk space pretty quickly. To avoid this, fseventsd only writes out changes at the much less granular directory level. The FSEvents framework, in turn, can only show its clients, "Something has changed in directory /foo/bar/baz."

    Clients of FSEvents are expected to then scan the directory that has changed in order to determine what, exactly, happened (assuming they're interested in that plane of detail). The common pattern is to register for notifications for some subset of the file system tree, achieve an initial scan of that tree, wait for an event about a particular directory, then compare the fresh status of the directory to the status seen during the initial scan.

    That positive seems devotion a lot of tedious work: register, scan, fetch event, scan again, compare. This identical code has to exist written by each FSEvents client program, and there are race conditions lurking if programmers are not careful. Pragmatism has its price.

    But the payoffs are too quite substantial. No more daemon processes; launch any time to find out what's changed since you terminal checked. No risk of badly behaved clients causing dropped events. Read the events as slowly as you'd like. Hang, crash, relaunch: it's okay, you won't miss any events. You can even travel backwards in time to revisit feeble events.

    As with total kernel-based file system notification mechanisms, including /dev/fsevents, there's quiet the possibility of file system changes occurring without going through the kernel. For example, a removable disk may exist mounted on another non-Leopard computer and modified there. When it returns, the local kernel has no view what's changed.

    The FSEvents API includes callbacks for these situations, effectively telling the client, "Unknown changes believe occurred. You'll believe to achieve a replete rescan yourself, then pick up on the fresh event stream going forward." That's certainly not what a program wants to hear, but it's the unavoidable truth. and FSEvents is upfront about it. In effect, it's a shape of reliability. FSEvents will not equivocate to you.

    The fseventsd log files are written in a compressed binary format. Since only per-directory changes are kept, multiple changes to the identical directory occurring within 30 seconds of each other are coalesced into a solitary event in the log file. The upshot is that, even when running a disk-thrashing server-type workload for 24 hours straight, the fseventsd log files will only grow by a megabyte or two per day. established usage will bear a minute fraction of that.

    That's good, because these log files are kept forever. Well, as close as possible, anyway. FSEvents uses a monotonically increasing 64-bit counter for events. Barring any malicious number-skipping hackery, this counter won't wrap around in your lifetime. But if it does, or if you dash out of disk space, or if the logs are explicitly purged (there's a public API for this), FSEvents will dutifully spread the inferior intelligence to its clients: "Sorry, it's replete rescan time."

    Events are identified by their 64-bit event id, which does not necessarily believe any particular relationship with date and time. Nevertheless, FSEvents does include the faculty to put a question to for the approximate event id that corresponds to a particular date and time.

    To prevent events from being logged at total for changes to a particular volume, simply create a file named no_log in the .fseventsd directory on that volume. And in case it doesn't travel without saying, FSEvents honors the Mac OS X access control rules; you cannot receive events about directories that you don't believe authorization to read.

    Spotlight sidebar

    Spotlight has been substantially rewritten in Leopard, and is noticeably more responsive. It does not, however, exercise FSEvents. Instead, it continues to drink from the /dev/fsevents fire hose, grabbing each individual event as it happens. This may look devotion a failing of the FSEvents framework, but it's really more of an acknowledgment of the nature of Spotlight as a system-level facility.

    After all, in BeOS, metadata indexing was actually done at the file system level, within the BFS file system code. This, of course, only worked for BFS-formatted volumes, and was even further removed from anything practicable in userspace, third-party code. For better or worse, system-wide file system indexing is something that the OS is best suited to handle itself, with private APIs if needed.

    The future of the file system

    With the addition of a public API for asynchronous file system notifications, Mac OS X has finally achieved feature parity with BeOS in total major areas of file system technology. There were compromises along the way, but too many advances. BeOS never had a persistent log of file system events, nor did it provide metadata indexing on non-BFS volumes. Leopard provides that and more (Spotlight can actually search across servers now too), total with a collection of extremely conventional userspace libraries and daemons running on top of only the barest few kernel hooks.

    It's often seemed as if Apple has had to exist dragged kicking and screaming into the future of file system technology, but at least it has finally advance around. Yes, there believe been bumps in the road, and things surely believe not turned out exactly the route I expected them to. But in the end, it's the results that count.

    Mac OS X developers now believe total the tools they requisite to achieve some very inquisitive things with the file system—and this includes Apple itself. As we'll see, they've really gone to town in Leopard, finally using total the features they so grudgingly added to the OS over the terminal six years. In fact, Leopard's signature feature would not exist practicable without FSEvents.

    As for the file system itself, can you believe we're quiet using HFS+? That's right, rumors of ZFS's ascendance as the default file system in Leopard believe not advance to fruition.

    The pains to port ZFS to Mac OS X is ongoing, and Leopard ships with a read-only ZFS file system driver, but that's about it for now. A read/write ZFS driver appeared in a few earlier Leopard builds and will no doubt acquire its official appearance in some future version of Mac OS X. (A beta is available to ADC members.)

    Will ZFS ever supplant HFS+ as the default file system in Mac OS X? Time will tell, but it's limpid that, eventually, something has to supplant HFS+. Will it exist ZFS, a fresh Apple-developed file system, or something else entirely? As I wrote terminal summer:

    Although I would exist satisfied with ZFS, I reflect Apple has a unique perspective on computing that might lead to a home-grown file system with some inquisitive attributes. When might such a thing appear? Not in Leopard, it seems—or at least not in 10.5.0.

    It's credible that the completed ZFS port will exist available in the 10.5.x time frame, but I fully hope to believe to wait for Mac OS X 10.6 or later for anything to supplant HFS+ as the default file system in Mac OS X. The profitable intelligence is that, when it does finally arrive, total these powerful file system APIs will exist there waiting for it.

    Core Animation

    In the post-Mac OS X era, Apple has been a powerful fan of adding animation to its applications and the OS itself. Examples are everywhere: items in the iChat buddy list fade in and out and visually reshuffle themselves as fresh items appear; switching preference panes triggers a cross-fade and an animated window resize; items in the Dock shuffle and squirm around when a fresh item is dragged towards it.

    Too much animation can exist harmful and grating. But in the best cases, these animations actually help usability by providing an categorical visual explanation of status changes while too adding an undeniable sense of pizzazz.

    Understandably, third-party developers believe long tried to ape these effects. Historically, that's been a tall order. occupy something as simple as the cross-fade between preference panes in the System Preferences application. A developer creating, say, a text editor may want to exercise that cross-fade in his preferences dialog.

    But doing so takes him far from his comfort zone, into the world of graphics APIs, perhaps even OpenGL. What does total that believe to achieve with editing text? Sure, Apple can afford to believe one of its graphics gurus add whizzy effects, but it's another thing for minute developers to occupy the time to learn a bunch of fresh APIs unrelated to the actual functionality of their applications. And for what? Pizzazz?

    But try they did, rapidly increasing the number of Mac applications containing Core Graphics and/or OpenGL code of questionable quality, for dubious purposes. What's Apple to do?

    The motivation seems admirable: third-party developers want their applications to discover as frigid as Apple's. Broadly speaking, this is not something that should exist discouraged. But it really is inefficient to believe total these developers trying to write custom code far outside their areas of expertise.

    And for that matter, it's not such a powerful view for Apple to exist doing the identical thing. Though it may believe the talent on staff, Apple would exist much better served by having its graphics experts travail on APIs that everyone can use, rather than adding custom cross-fade code to yet another first-party application.

    And so, in Leopard, Apple has introduced Core Animation. It gets a snazzy purple sphere icon to travel with its friends.

    Core Image logo Core Image Core Audio logo Core Audio Core Video logo Core Video Core Animation logo Core Animation

    Animation frameworks can easily blossom into full-blown redesigns of the entire GUI API. After all, isn't a static interface component simply the degenerate shape of an animation? Let's reimplement everything in terms of their fresh animation framework! It'll exist awesome!

    It'll probably too exist late, incompatible, buggy, and slow—not to mention being met with resistance by developers who are not keen to rewrite their GUI code from scratch using the fresh animation-based APIs.

    Thankfully, Apple's taken a different route with Core Animation. devotion FSEvents, Core Animation is a pragmatic API. It does a few well-chosen things and does them very well. It too goes to powerful pains to acquire this functionality available to existing applications with extremely minimal changes to the code.

    Core Animation's original name, Layer Kit, reveals a lot about its design. At its heart, Core Animation manages a collection of 2D layers. Though layers are sorted by depth and can believe perspective transforms applied to them, Core Animation is not a 3D engine. That is, layers can overlap, but they cannot intersect (in the 3D sense).

    The 2D/3D distinction is further confused by the fact that Core Animation, devotion total graphics in Mac OS X, runs (albeit indirectly) on top of OpenGL. Apple's "3D" Core Animation demos (e.g., about 52 minutes into the WWDC 2006 keynote) too haven't helped. But ease assured that you will not exist constructing any teapots in Core Animation. There are no vertexes, triangles, or lights in the Core Animation API. It's a layer kit, remember? reflect "non-intersecting 2D planes in space."

    But what planes they are. To start, each layer has the following properties: geometry, background, contents, border, filters, shadow, opacity, and mask. Each layer can believe zero or more sub-layers, and the filters are Core Image filters, of course. But the layer contents are the really inquisitive part.

    At some point during pretty much every WWDC since the introduction of Mac OS X, an Apple engineer has explained how to coalesce content produced by different APIs: drawing styled text on top of an OpenGL scene, putting a gauge button or checkbox over a QuickTime movie, applying a Core Image filter to allotment of a dialog box, and so on. These demonstrations were complicated, often involving special overlay windows, manual color space conversions, and wasteful data duplication. Inevitably, the Apple engineer would apologize as he demonstrated, acknowledging that this kindhearted of thing really shouldn't exist as arduous as it is. Well, in Leopard, thanks to Core Animation (of total things), it's now nearly trivial.

    Core Animation layers provide, for the first time in Mac OS X, an effortless route to coalesce total supported content types without restrictions: QuickTime video, OpenGL, Core Graphics drawing, Quartz Composer scenes, gauge GUI controls devotion buttons, checkboxes, and pop-up menus, styled text, you designation it. Composite them, layer them, animate them; it total just works. In effect, Core Animation is the unification of total things graphical in Mac OS X.

    Layers are animated declaratively, rather than procedurally. For example, to acquire a layer fade out, simply set its opacity to zero. Rather than instantly becoming invisible, the layer will fade out over a term of time (0.25 seconds, by default). In other words, show each layer its goal status and (optionally) a few more pieces of information about the transition, and the Core Animation engine handles the actual process of changing the layer from its current status to the goal state. Though total of the animation settings are optional and believe sane defaults, animations believe configurable durations, timing curves, keyframes, and transition types. Also, multiple property changes can exist batched into a solitary atomic change.

    Under the covers, each Core Animation layer is handled by OpenGL and ends up in VRAM on the video card. (For layers that are beyond the maximum texture size of the video card, Core Animation provides a "tiled layer" API, with callbacks to retrieve each portion of the larger image as needed.) Core Animation layers are extremely lightweight; modern Macs can animate many thousands of layers simultaneously. The unification of content types in Core Animation layers provides an chance to consolidate many previously divide GPU acceleration mechanisms for video, 2D drawing, and animation into a solitary context.

    The underlying technology really is impressive, but the powerful win comes on the more prosaic end: the route this functionality is exposed to the developer.

    Core Animation in Cocoa

    Unsurprisingly, Core Animation is a Cocoa API. Politics aside, it's a profitable fit. Cocoa has existing conventions for observing changes to demur properties, and Core Animation ties right into that. But the existent genius is in the how puny travail is required to start using Core Animation in an existing application.

    The process for developers is simple. To enable animation of a view, check off the preempt checkbox in Interface Builder, or acquire the corresponding [view setWantsLayer:YES] convoke at runtime. Doing so creates a Core Animation layer for the view and total subviews it contains. The result is two view trees: the collection of "normal" views and subviews that believe always existed in your Cocoa application (windows, buttons, etc.) and another, parallel hierarchy of Core Animation layers representing the subset of established views that believe their "wants layer" property turned on.

    Each layer-backed view has an animator attribute. route calls that strike animatable properties are animated when made through this demur and are not animated when made through the view itself. For example, let's grunt you believe some existing code to set the size of a window in your application:

    [view setFrame:rect];

    To animate that using Core Animation in Leopard, causing the window to smoothly scale from its current size to the fresh size using a GPU-accelerated, OpenGL-based compositing animation engine running on a divide thread, you must ilk eleven more characters, changing the line above to this:

    [[view animator] setFrame:rect];

    This is usually the point in the WWDC presentation where Cocoa programmers unfamiliar with Core Animation originate to drool and moan.

    Yes, obviously it gets more complicated if you want to customize the animation, but only slightly. In the common case, adding animation to your existing Cocoa application really is as simple as the sample above implies. As a first pass, just route total the route calls you want to animate through the animator property. As an optional second pass, customize the few animations you want to travel faster or slower or achieve something else fancy. There is no step three, as they say. No OpenGL code, no custom drawing, no GPU programming. Ahh.

    Apple has gone hog wild with Core Animation, both in its own applications and in Cocoa itself. total the basic visual properties of views can exist animated—plus some esoteric ones devotion rotation. Yes, if you believe the prick to create spinning buttons or slanted windows, Core Animation is there for you. You can even add fresh animatable properties to your custom views.

    Apple's too created several fresh Cocoa views and controls that provide functionality that would believe required many thousands of lines of knotty code before the advent of Core Animation. The best sample is the extremely supple NSGridView. This one view can exist used to create something that looks and behaves devotion the iChat buddy list or the Dock, total with extremely minimal code. Items fading in and out as they're removed, squirming out of the route to accept a drag, flying total over to re-sort themselves, even text-base searching and visual filtering—it's total basically "free" with NSGridView and Core Animation.

    Separation of concerns

    As alluded to earlier, the animation allotment of Core Animation runs on its own thread and has its own dash loop independent of the application itself. These two parallel worlds—the application view hierarchy and the Core Animation view hierarchy that backs some portion of it—are largely divorced. Communication happens implicitly when the application changes some allotment of its visual state.

    For example, let's grunt an application moves an component in a window from position A to position B. From the perspective of the application code, the change happens instantly. The item that was in position A moves immediately to position B as soon as its coordinates are changed.

    In the parallel world of the Core Animation engine, however, the shuffle from A to B happens over several frames of animation and takes some time. This means that there's a transitory mismatch between where the application thinks the component is, and where it actually appears on the screen. This usually isn't a problem, but developers are encouraged to occupy precautions to prevent any queer effects (e.g., by disabling controls while they're in motion, reenabling them when the animation completes).

    But that's about the only ill consequence of this arrangement. The benefits are much more substantial. For starters, with today's multicore CPUs, putting Core Animation on its own thread is a limpid win in terms of CPU utilization. It too means that the application can blindly acquire changes any feeble time it wants, without concern for the status of any outstanding animations. For example, an application can shuffle an item from A to B, then shuffle it again to C before the A-to-B animation completes. The Core Animation engine will occupy it total in stride, smoothly animating the item towards C from whatever position between A and B it was in when the application initiated the shuffle to C.

    The application's total requisite of (mandatory) involvement in the animation itself is incredibly freeing. It prevents applications from becoming filled with animation-centric code. Gone are the days of preference dialogs with 50 lines of code for getting and setting preferences and 200 lines of code for creating cross-fades and autoresizing panes. Less application code means fewer bugs and more liberty for Apple to optimize the actual drawing and animation process.

    The animation age begins

    Yes, the advent of Core Animation probably means that we'll believe to endure some amount of gratuitously animated software created by "overly enthusiastic" developers. But the identical was factual during the introduction of styled text and color graphics. Mac developers learn quickly, and Mac users are profitable at rewarding restraint and punishing excess.

    The minimal, almost humble route Core Animation integrates with Cocoa belies its incredible sophistication. More so than any other fresh framework in Leopard, Core Animation provides functionality and performance that was previously difficult or impossible for the equitable Cocoa programmer to create on his own. Now, finally, third-party applications can discover as impressive as Apple's, and they can achieve so by using exactly the identical code that Apple's using—code written by expert graphics programmers and continually revised and improved by Apple to occupy handicap of the latest hardware. Excellent.

    Quartz GL

    I spent several pages of my Tiger review exploring how Mac OS X's Quartz display layer has evolved over the years, specifically how functionality has been migrating from the CPU and main recollection to the GPU and VRAM. Tiger was to bring the latest step in that evolution, Quartz 2D Extreme, which would finally shuffle execution of the drawing commands themselves to the GPU, writing the results directly to VRAM.

    I dedicated so much time (and so many sweet OmniGraffle charts) to Quartz 2D Extreme because it was one of the Tiger technologies that I was most excited about. I'd waited a long time for it, slogging through Mac OS X 10.0 where every allotment of the drawing and compositing process happened on my needy 400MHz G3 CPU, with the expectation that, someday, it'd total happen in dedicated hardware.

    Sadly, though the Quartz 2D Extreme code was indeed included in Tiger, it was disabled by default. At the time, I speculated that it might exist enabled in a subsequent update, "perhaps as early as version 10.4.1." Ha! Over two years later, Tiger has reached version 10.4.11 and Quartz 2D Extreme is quiet disabled by default.

    But surely—surely—Quartz 2D Extreme will exist enabled in the mighty Leopard, right? When it comes to touching drawing code to the GPU, maybe they should total fetch used to disappointment.

    First things first. Quartz 2D Extreme, always quite a mouthful, has been renamed Quartz GL in Leopard. I'm heavily in favor of the evisceration of "Extreme" from total Apple product names, so yay. Second, it's principal to understand why Quartz GL was disabled in Tiger for total those years. Apple's never made any public statements about this, but developers who've asked believe gotten a pretty consistent message. What it boils down to is differences between Quartz GL and the "old" more CPU-centric implementations of Quartz—differences that actually strike existing applications.

    Bugs are the most obvious issue. Quartz GL was brand fresh in 10.4.0, a release that had enough of its own problems without globally applying a fresh drawing engine to total applications. The other principal issue was explored in the Tiger review: Quartz GL can actually acquire some applications slower because the "best practices" when writing for a CPU/RAM-centric Quartz implementation are often exactly the antithetical of those for Quartz GL.

    So what's changed in Leopard? Presumably, most Quartz GL bugs believe been squashed, but the performance issues are really up to application developers to address by changing their code. But why would they exist motivated to change their code? After all, Quartz GL is disabled in Tiger. This chicken/egg situation explains why Quartz GL is not globally enabled in Leopard either.

    Unlike in Tiger, however, applications in Leopard can explicitly enable Quartz GL, either for the entire application or just for specific windows. This allows each developer to pick when and where to exercise Quartz GL. It's a profitable compromise; there's actually nothing to exist disappointed about. Quartz GL, devotion many Leopard technologies, will surely originate to seep into the applications they exercise every day. It may not exist as obvious as something devotion Core Animation, but in the long dash it's just as important.

    Resolution Independence

    Speaking of technologies present in Tiger but never enabled, resolution independence takes a few more steps forward in Leopard. A brief refresher: simply stated, resolution independence, too sometimes called "scalable user interface" or "high DPI support," is the faculty to draw user interface elements using more pixels.

    For example, the puny red "close" widget in the window title bar uses about 16x16 pixels at the default ("1.0") scale factor. This is okay for screens that exercise around 100 pixels per inch (PPI), but on a 200ppi monitor it would exist quite a minute click target. Using a scale factor of 2.0, this identical widget would exist drawn using 32x32 pixels—four times as many. That would acquire the click target exactly the identical size as the 16x16, 1.0 scale factor version on a 100ppi screen. The 2.0 scale factor version would too exist more detailed, since it uses more pixels.

    Scale factor: 1.0

    Scale factor: 1.0

    Scale factor: 2.0

    Scale factor: 2.0

    The benefits of resolution independence are twofold. On the high end, displays with much greater pixel density become feasible now that there's a route to prevent the widgets that acquire up the UI from shrinking to unclickably minute proportions. In particular, text will discover a lot sharper as the display's PPI rating begins to approach the DPI rating of modern printers.

    On the low end, resolution independence allows users with needy vision to acquire everything on their existing low PPI displays larger, while actually increasing the amount of detail (as opposed to current "screen zooming" feature that magnifies the existing pixels into an increasingly blurry mess).

    In Tiger, the user interface scale factor control existed only in the Quartz Debug application (part of Apple's free developer tools). In Leopard, the user interface scale factor control... exists only in the Quartz Debug application. Sorry.

    Actually increasing the scale factor provides a pretty convincing demonstration of why this is so. occupy a discover at the nonuniform gaps in the segmented control in this screenshot of TextEdit at a 2.0 scale factor.

    TextEdit at scale factor 2.0: uneven spacing on segmented controlTextEdit at scale factor 2.0: uneven spacing on segmented control

    As you can see, there are quiet plenty of rough edges even for the simplest of applications. Since interface scaling has a global effect, it can't exist enabled piecemeal devotion Quartz GL.

    Unlike Quartz GL, Apple has actually provided a pretty limpid message to developers about resolution independence. There believe been sessions at the past few WWDCs about how to prepare applications to dash properly at scale factors above 1.0. The existent hold-up has been Apple itself, however, which doesn't quite believe resolution independence working correctly across total of Mac OS X's GUI frameworks. Also, the exact details of how resolution independence will interact with the various APIs believe changed as recently as WWDC 2007.

    Nevertheless, the rumored date for resolution independence to materialize as a user-visible feature in Leopard is 2008. Early 2008? Late 2008? If Apple knows, it's not saying. And so the question posed two years ago quiet stands. Which will advance first, affordable high-PPI display hardware or a resolution-independent version of Mac OS X? The wait continues.

    But that's not total there is to grunt about resolution independence in Leopard. In fact, you might grunt there's one more thing...

    Core UI

    Resolution independence is a fine idea, but there's the pesky issue of exactly how to draw total those user interface widgets using more pixels. When resolution independence finally arrives in 2008 (or whenever), will the Mac OS X UI exist drawn entirely using infinitely scalable vector art? That'd positive unravel the problem of where to fetch total those extra pixels, but I'm not a fan of this approach. How about simply including huge bitmaps for each interface element, relying on the traditional bitmap scaling mechanisms to draw them at the smaller sizes? That'd travail fine, but it does look kindhearted of wasteful to exercise giant bitmaps for thing devotion line knack and basic shapes which are oh-so-compactly represented by vectors.

    Hey, what achieve they believe here lurking under /System/Library/PrivateFrameworks in Leopard? Why, it appears to exist a fresh framework: CoreUI.framework. Whatever could that exist for? Surprise! Every piece of the user interface in Leopard is being drawn in an entirely fresh route that incorporates the best of the bitmapped and vector styles.

    Let's occupy a discover at the touching parts. Core UI draws each piece of the user interface based on a series of XML "recipes" that characterize the structure and features of each element, referencing pieces of knack stored as divide resources files within the framework bundle. Here are just a few sample recipes:

    /System/Library/PrivateFrameworks/ CoreUI.framework/Resources/AquaUI.bundle/Contents/Recipes/ checkbox.xml disclosurebutton.xml disclosuretriangle.xml menu.xml menubar.xml progressindicator.xml pushbutton.xml radiobutton.xml roundbutton.xml scrollbars.xml splitter.xml syncarrow.xml ...

    Note the storage location: the Core UI framework contains other bundles which in eddy contain the recipes and resources. It's arduous not to discover at this arrangement as a kindhearted of theming engine in the tradition of Kaleidoscope, ShapeShifter, and of course Apple's own Appearance Manager... albeit an engine that's closed to outsiders and likely to change in the future. But still, it's quite a departure from the comparatively inflexible approach to drawing the UI used in Tiger and earlier. At the very least, the fresh recipe/resource structure lays bare the components that acquire up what's shown on the screen.

    Take the humble checkbox, for example. The checkbox.xml file is a dizzying 2,800+ lines long, most likely created by Apple's long-rumored (to those paying attention) in-house Core UI theming tools. It references a figure named checkmark, represented in the Resources directory by the checkmark.pdf file.


    In that identical directory you'll too find various "material" bitmaps. Here are two examples (scaled down from their actual 398x398 pixel sizes):



    The Finder sidebar

    The Finder sidebar

    Keep in reason that these are not giant radio buttons; bitmaps devotion these are used as texture sources for widgets of total shapes and sizes.

    Finally, here's what a checkbox looks devotion in Leopard at various scale factors.

    Checkboxes at 1.0, 2.0, and 3.0 scaleCheckboxes at 1.0, 2.0, and 3.0 scale

    You can view how this total starts to advance together. Browsing through the replete set of resources reveals an unsurprising division of labor between powerful bitmaps (PNGs) and vector graphics (PDFs). Anything that looks devotion line knack or is a basic shape is done with vectors. The "lickable" bits, on the other hand, are quiet represented by (presumably hand-tweaked) bitmaps, usually in very great sizes. In particular, the route Core UI constructs the various shiny Aqua widgets using a suite of "materials" bitmaps—some for highlights, some for backgrounds, and so on—is a nice route to conserve recollection while quiet using hand-drawn art.

    So what does this total intend for Mac OS X? Well first, it means that Apple is ramping up for resolution independence. They knew that already, but it's quiet nice to view how far along things are. Remember, even at the default (1.0) scale factor that Leopard will ship with, total the UI widgets you view are being drawn by Core UI. This wasn't always the case. Earlier Leopard seeds only used Core UI at scale factors greater than 1.0, falling back to the feeble route for 1.0. The shuffle to using Core UI everywhere shows some self-possession in the technology.

    Core UI too means that Apple is well-positioned to deliver the radical change to Mac OS X's appearance that I longed for in Leopard. Core UI is certainly not a general-purpose engine capable of creating any appearance an artist can dream of. It's clearly focused on creating Aqua-like appearances, with baked-in advocate for things devotion drop shadows and highlights. But the common approach of using XML recipes to compose vector and bitmap resources is a sound one that will terminal Apple a very long time, well into the coming age of resolution independence.

    Internals grab bag

    These "grab bag" sections give me a chance to briefly paw on inquisitive features that don't warrant their own sections—or, quite often, that time constraints believe prevented me from expanding into entire sections. For the first time, I'm giving the internals their own grab bag, to divide the more technical bits from the later grab bag that covers more user-visible features. do another way, this is the grab bag without screenshots. Here they go.

    Metadata in action

    Leopard is the first Mac OS X release to really occupy handicap of the extended attributes APIs added in Tiger. When faced with a problem that requires the storage of some information about a particular file or directory, Apple is finally using (gasp!) file system metadata to implement this. It's everywhere in Leopard. Just discover at these extended impute names:

  •—Finder comments in existent metadata. (They're too quiet stored in the .DS_Store files, presumably for compatibility with pre-Leopard systems).
  •—Tagging files downloaded from the Internet as possibly untrustworthy, storing the application used to download them, among other things.
  •—One of a total suite of extended attributes used by a inevitable backup feature to exist described later.
  • It's enough to acquire me shout "Hallelujah!" Apple finally gets it! view how useful this stuff is? Just imagine the insane contortions the pre-metadata-enlightenment Apple would believe gone through to store and track total this stuff, each application going off in its own direction with a custom implementation. So much wasted effort, so many unique bugs. No more! Extended attributes provide a general-purpose facility for doing the identical things, written and debugged in one place.

    Leopard even includes a command-line utility for viewing and modifying extended attributes. Readers may recall a similar utility called xattr, created by Marquis Logan for my Tiger review. Apple's own utility actually has the identical name, but slightly different command-line options.

    Other commands in Leopard believe too become extended attributes-savvy. For example, the ls command now displays a "@" character after the permissions string for each file that has extended attributes. Wandering around a Leopard system using the ls and xattr commands will disclose just how much Apple has taken file system metadata to heart. It's about time.

    Core Text

    Mac OS X finally has a single, official, gauge text drawing and layout API: Core Text. (As far as I know, this "Core" technology does not fetch its own lickable sphere icon.) Core Text replaces the confusing alphabet soup of text APIs in Mac OS X Tiger and earlier, mostly inherited from classic Mac OS: ATSUI, MLTE, and QuickDraw text.

    Core Text has a cleaner API, it's faster, it's available in 64-bit, yada yada. I mention it here for two reasons. First, it's inquisitive because Core Text actually existed in Tiger as a private API. It was used by Apple's own applications as a sort of test bed for the framework. Leopard is its coming-out party, now that it's been properly refined.

    It's similar to the FSEvents situation, but in that case Apple decided that the private API that was "auditioned" in Tiger (/dev/fsevents) was not suitable for public consumption, and another solution was needed. Perhaps /dev/fsevents, unlike Core Text, was never intended to exist public, but maybe it just appears that route in hindsight. Either way, preserve your eye out for private frameworks in Leopard that could exist up for publication in 10.6.

    Second, Core Text is an indicator of how young, in relative terms, Mac OS X really is as a platform. Here's Leopard, ostensibly a mature product in its sixth major release, just now getting a gauge text layout API? As mature as Mac OS X may seem, it was quite a mishmash of technologies at its birth: a puny BSD Unix here, some NeXT there, and a bucket of classic Mac OS splashed on top. This is total going to occupy a long time to sort out. Leopard takes some principal steps towards the future by deprecating several feeble technologies and anointing their successors.

    Code signing

    Leopard supports cryptographically signed applications. This topic rings tocsin bells for some people. The controversial Microsoft Palladium initiative increased public awareness of the issue several years ago when Microsoft misjudged the market and ended up evoking a bleak future of iron-fisted corporate control rather than the security utopia they were trying to pitch. To this day, it's arduous for some people not to view total such efforts as opportunistic power grabs dressed up as "security" features.

    The first thing to understand about code signing in Leopard is that it's not presented as, nor is it capable of anything so grand. It's not going to give Apple (or anyone else) complete control over your system, nor is it going to provide impenetrable security.

    Here's what it actually does. Code signing ties a cryptographically verifiable identity to a collection of code and ensures that any modification to that code is detected. No guarantees are made about the parties involved. For example, if you download an application signed by Acme Inc., you can prove nothing about it except that it came from the identical entity claiming to exist Acme Inc. the terminal time you downloaded something from their web site.

    This sample actually highlights the most useful application of the technology from a consumer's perspective. When upgrading a Mac OS X application today, the user is often prompted to re-verify that this application is allowed to access the Keychain to retrieve usernames and passwords. This seems devotion a profitable security feature, but total it really does is train Mac users to blindly click "Always Allow" each time it appears. And really, what is the equitable user going to do, dash the executable through a disassembler and manually verify that the code is safe?

    A signed application, on the other hand, can mathematically prove that it is indeed a fresh version of the identical application from the identical vendor that you expressed reliance for in the past. The result is an desist to dialog boxes asking you to authenticate a preference whose safety you believe no reasonable route to verify.

    In the end, it quiet total comes down to trust. Either you reliance software from Acme Inc., or you don't. That's up to you to decide. Signed applications are just as capable of erasing your arduous drive and stealing your passwords as unsigned applications.

    But unlike unsigned code, a signed application cannot exist tampered with after installation. If an application from Acme Inc. does something malicious, you can exist positive that it's not because it's been hijacked by some other bit of malware. do another way, well-behaved code will continue to exist well-behaved. Any attempt to modify it will desist it from running entirely.

    Apple has signed total applications that ship with Leopard. I hope most reputable third-party developers to achieve the identical eventually.

    Code signing too means an desist to the exercise of applications modifying themselves (e.g., saving custom theme files inside the application bundle itself rather than in ~/Library/Application Support/MyApp or another user-specific location). This exercise has always been discouraged by Apple, and now there's another reason avoid it.

    So, to review, code signing does:

  • Provably seal code
  • Verify the identity of the sealer
  • Code signing does not:

  • Impart special privileges
  • Protect against bugs
  • Protect against misplaced trust
  • Provide copy protection
  • Enslave you in The Matrix
  • It may exist just a minute step towards increased security, but it's one that's done right.


    Speaking of security, Leopard too supports address space layout randomization, or ASLR. The designation pretty much explains it: ASLR moves stuff around in recollection to acquire it harder for malicious software to foretell the address of a particular piece of code. Apple quiet has a long route to travel to reach Microsoft's current plane of paranoia about security, but then Mac OS X has not been subjected to the identical kinds of malware pressures that Windows has. Still, it's nice to view Apple taking some initiative in this area rather than waiting for catastrophe to strike and then reacting.


    LLVM stands for low plane virtual machine. It's an open-source project that Apple has taken under its wing, hiring the lead developer and actively improving the code. You can read total about what LLVM can achieve at the project's web site. The explanations you'll find there are kindhearted of impenetrable if you're not already close with compiler technology, however. The best route to reflect of LLVM is right there in the name: it's a virtual machine, but one that models something quite low-level, more devotion a CPU than a traditional virtual machine that models an entire PC.

    Why model something so primitive? Who wants to write code that targets a virtual CPU? Well, compilers, for one. The view is that you bear code in LLVM's platform-neutral intermediary representation (IR) and then LLVM will optimize it and then convert it to endemic code for the existent CPU of your choice. This conversion can exist done ahead of time, producing a traditional executable, or you can ship the platform-neutral byte code as-is and let LLVM compile it just in time (JIT).

    Why bother with the LLVM middleman? Why not let the compiler bear endemic code on its own? That's what most compilers do. Unfortunately, they achieve so with varying degrees of quality. The train of LLVM is to provide a set of modular compiler components that anyone can use, in order to concentrate the optimization efforts currently spread among many different compilers into a solitary project, thus the exercise of a platform-neutral intermediary representation.

    Think of it as a powerful funnel: every sort of code you can imagine goes in the top, total ending up as LLVM IR. Then LLVM optimizes the hell out of it, using every trick in the book. Finally, LLVM produces endemic code from its IR. The concentration of development pains is obvious: a solitary optimizer that deals with a solitary format (LLVM IR) and a solitary endemic code generator for each target CPU. As LLVM gets faster and smarter, every solitary compiler that uses LLVM too gets better.

    So, that's the pitch. The reality is that it will occupy a long time to convince the compiler world of the merit of this approach. Apple, however, is already on board. In Leopard, LLVM is used in what might strike you as an odd place: OpenGL.

    When a video card does not advocate a particular feature in hardware (e.g., a particular pixel or vertex shader operation), a software fallback must exist provided. Modern programmable GPUs provide a particular challenge. OpenGL applications no longer just convoke fixed functions, they can too pass entire miniature programs to the GPU for execution.

    Prior to LLVM, Apple implemented software fallbacks for total of this using its own custom JIT compiler for programmable GPUs. Apple wrote endemic code for each primitive operation (e.g., a dot product). These chunks are then glued together at runtime to bear the CPU equivalent of the mini-program intended to travel to the GPU.

    This approach severely limits the scope of practicable optimizations. Any transformation that spans more than one primitive operation is extremely difficult, leaving only the relatively fragile and simple optimizations within each primitive.

    Still, Apple was content with its custom JIT when it only had to target 32-bit PowerPC CPUs. But as 64-bit PowerPC and later 32-bit and 64-bit Intel CPUs joined the platform, updating that JIT for total the fresh architectures (and features devotion SSE, SSE2, SSE3... ) started to fetch a bit hairy.

    A custom compiler with fragile optimization abilities and an ever-increasing number of target CPUs? LLVM to the rescue! In Leopard, each primitive is contained in an LLVM byte code library file (search for files with a .bc extension). Mixing calls into those byte code libraries and just-in-time compiling them into a single, comprehensively optimized chunk of endemic code? No problem; that's what LLVM is designed to do.

    Predictably, LLVM rocks the house in this application, performing up to several hundreds of times faster than Apple's feeble custom JIT for inevitable operations that the feeble system couldn't even JIT, but had to interpret instead. Perhaps the biggest win is that Apple's OpenGL group no longer has to maintain its own JIT compiler. The best kindhearted of code is no code at all.

    Don't exist misled by its humble exercise in Leopard; Apple has imposing 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. In particular, its faculty to achieve mercurial incremental compilation and provide a much richer collection of metadata is a huge boon to GUI IDEs devotion Xcode.

    I know this LLVM subsection is quite a digression, but even if it's only used in a limited capacity in Leopard, LLVM is quite principal to the future of Mac OS X. Indeed, it could too exist principal to the present of the iPhone and other OS X platforms.

    I'm not positive how the iPhone supports total the visual effects used in its interface, but it's not unreasonable to imagine that Core Animation, OpenGL, and an LLVM-based software fallback are crucial to getting this total to hum on a platform with a relatively fragile GPU and CPU. And did I mention that Apple recently did some extensive travail on the LLVM ARM backend? You know, ARM, the CPU used by the iPhone. Yeah, the pieces positive look to fit.

    Anyway, thanks for the indulgence. If you want to learn more about the latest LLVM developments, check out the video of an LLVM presentation at Google given by Chris Lattner, LLVM lead developer and Apple employee.

    Objective-C 2.0

    I briefly mentioned the fresh Objective-C runtime in the 64-bit section. This is allotment of the larger revision to the Objective-C language known as Objective-C 2.0. The version-based branding is apt because Objective-C's abilities hinge so heavily on the runtime library at its core. This library handles class introspection and extension, route dispatch, and in the 2.0 version, recollection management as well.

    That's right, the biggest intelligence in Objective-C 2.0 is that it supports garbage collection. This is an opt-in feature, and a solitary code groundwork can exist compiled both with and without advocate for it. When garbage collection is enabled, total manual recollection management calls are simply ignored. This is how total of Apple's Objective-C libraries in Leopard are written; they travail with garbage collection enabled or disabled.

    For developers, Objective-C 2.0 includes several features that formalize common idioms. For example, there's now built-in advocate for simple accessor and mutator methods for demur properties. Writing many such methods is tedious and supine to mistakes. Since the best practices are, by now, well defined, Apple simply added properties as a "native" feature of the language. I do endemic in quotes because it really boils down to a shape of syntactic sugar, but a puny sugar is a profitable thing.

    Objective-C 2.0 is a powerful step forward for a language that has not changed much in the past decade or so. Though Objective-C is open-source and is supported by the GNU C compiler, Apple effectively "owns" Objective-C in the identical route that Microsoft owns C#. Apple is, by far, the heaviest user of the language and has the most stake in improving it. Objective-C 2.0 is a declaration of this ownership, and it appears uncontested. Mac developers, meanwhile, are lapping it up. But my eyes are on the future.

    During the introduction of Objective-C 2.0, Apple was mindful to do the change in context, declaring that Objective-C 2.0 is "not focused on revolutionary changes to your development world to achieve the next generation development environment" (emphasis added). That's total well and good, but then what is going to bring that "next generation development environment"?

    I've been flipping out about this for years now, and the pressure just keeps mounting. What's Apple's design to transition to a dynamic, fully memory-managed development environment? I did a three-part blog series on the topic (1, 2, 3) back in 2005 with the intentionally provocative title, "Avoiding Copland 2010." (The year 2010 is actually probably a few years before the pass point.) In it, I pooh-poohed Objective-C with garbage collection as an unsuitable long-term solution. It appears that Apple agrees with me, but that quiet leaves the problem unsolved.

    I'm positive there are Mac developers reading this that don't view any problem at all, in 2010 or otherwise. I could travel off on another tangent about how programmers always look to reflect the language they're currently using provides exactly the right amount of abstraction for the chore at hand, with anything less dynamic being considered barbaric, and anything more dynamic seen as crazy and unsafe, but I'll spare you and save it for a blog post.

    In the meantime, the take-home point related to Leopard is that Objective-C 2.0 is a profitable thing. The additions to the language acquire Objective-C much more pleasant to exercise and easier to learn. The fresh runtime is cleaner, faster, and more capable. Garbage collection, if it becomes as pervasive as it ought to, will help train a fresh generation of Mac developers to capitulation one more bookkeeping duty to the computer. If there's a cliff up ahead, at least Apple's picking up speed and starting to build a ramp. I just hope there's something on the other side to land on by the time they hit the edge.

    The Finder

    Here's what I had to grunt about the Mac OS X Finder two years ago.

    Over the years, the Mac OS X Finder has gained a well-deserved reputation as the least pleasing bundled Mac OS X application. [...] While some people devotion it, few devotion it, and many disfavor it.

    To a casual observer, this might materialize a bit extreme. The Mac OS X Finder seems, if not glamorous, then at least benign. What's the powerful deal? The inferior feelings about the Finder don't spring from a solitary source. There are at least three distinct threads of Finder dissatisfaction, usually appearing in combinations of two or more in any given Finder malcontent.

    I went on to characterize those three threads of dissatisfaction: spatial/browser-mode interaction, performance, and "the puny things." That summary is quiet worth reading; total three pillars of Finder angst remain apropos in Leopard.

    They're apropos partly because the Leopard Finder makes an pains to address each one directly. "Address" does not intend "resolve," however. But first, some profitable news.


    The Leopard Finder seems to believe finally sorted out how to deal with most network resources without locking up its entire user interface. I know there believe been deceptive alarms about this in the past, but I reflect Apple really did it this time.

    Case in point: iDisk. Even when .Mac is extremely slow to respond, the iDisk window appears instantly. Granted, the window may exist barren for some time as the Finder waits for .Mac to route data, but the principal point is that control is immediately returned to the user. do that iDisk window aside and advance back to it later when it's finished loading; you can continue your travail elsewhere. Ah, blessed sanity.

    This applies to local folders too. I can open a folder with over 10,000 items in it and then immediately switch to another Finder window and achieve something else while it loads. But I shouldn't really bother because it'll load in only a second or two. Scrolling through 10,000 items quiet has a few hiccups, but it seems mostly i/o bound now, as it should be. The dreaded beach ball never appears during this exercise.

    Problems quiet lurk, however. For example, connecting via FTP (sorry, quiet read-only), putting the server to sleep, then attempting to open a folder on the server will sometimes result in some property beach ball time. The timeout seems reduced from Tiger, however. The "Server connection interrupted" dialog appears in about fifteen seconds.

    Other times, it works just devotion the iDisk case: a fresh window appears with a spinning progress indicator in its status bar, and control returns to the user immediately. I don't know why the beach ball appears so sporadically, but it's quiet a refreshing change from the days when it was omnipresent.

    Disk i/o in common feels snappier in the Leopard Finder. The most prominent sample is how quickly icon previews are generated. Perhaps it's not so much that they're generated quickly, but that the chore is accomplished with so puny fuss. The disk ticks, the generic icons are replaced with previews, and total the while the Finder remains responsive to other actions.

    Overall, I believe to grunt this is the most significant performance improvement in the history of the Mac OS X Finder. There's quiet more travail to exist done on the dusky corners of network connectivity, but the underlying issues look to believe been addressed.

    The puny things

    The Leopard Finder goes a long route towards fixing total those niggling puny issues that believe been driving people nuts for years. In fact, several of my own personal peeves believe been addressed. preserve this positive outlook in reason as I embark on one terminal rant about how long this has total taken.

    I'll start with two screenshots (highlights added).

    Rename without warnings Adjustable grid spacing

    It's arduous for me not to exercise profanity at this point, so thoroughly achieve these two additions infuriate me. On the one hand, I've been wishing, hoping, and sometimes begging for these features for years, and I'm joyful to finally view them in Leopard. But on the other hand, actually using these features and experiencing how much more pleasant they acquire my daily life on the Mac—as I knew they would—only reminds me of how stubbornly Apple refused to add them for the past six years!

    Oh, the agony inflicted for want of such simple features! In the case of the icon grid spacing adjustment, this is something that existed in a lesser shape (only two settings: taut and wide) in classic Mac OS and was dropped during the transition to Mac OS X, devotion so many other features, without explanation or justification. Worse, the spacing between icons was expanded to a comical size in Mac OS X 10.0 and never recovered. It always seemed to me to exist some sort of punishment for daring to exercise icon view. Just discover at this screenshot from Tiger showing the Applications folder with 48x48 pixel icons, scaled to 50 percent of its original size.

    Icon view in TigerIcon view in Tiger

    Apparently the super-secret technology that enables adjustable grid spacing has finally been rediscovered at Apple, presumably in a huge warehouse filled with identical-looking crates of classic Mac OS technology. Here's a screenshot of the identical folder with the identical 48x48 icons, scaled to the identical 50 percent of its original size, when viewed with sane icon spacing in Leopard.

    Icon view in LeopardIcon view in Leopard

    No names are truncated, every solitary icon is visible, and the window uses about half the number of pixels. Amazing, this modern world they live in.

    As for the warning when changing file designation extensions, it's a reasonable thing to achieve in a system where (unfortunately) file designation mangling is the official route to encode file ilk metadata. It's the inability to disable the warning that's so obnoxious. Again, the changes required to achieve this are not complicated. Why did it occupy so long?

    I'm positive the words "limited resources" and "priorities" would materialize in any explanation Apple would give (as if they'd ever give one, ha), but ironically, I reflect that misses the bigger picture. What they believe here is a textbook case of priority inversion: two seemingly insignificant features held back for years, unnecessarily fomenting ill will by needling users on a daily basis, effectively blocking the higher priority chore of making a Mac OS X Finder that everyone can appreciate using—or, do less charitably, that fewer people loathe.

    Obviously, everyone's pet features can't exist added, but at a inevitable point the ratio of "ease of implementation" to "annoyance caused by their absence" tips over in favor of features devotion this. There were already enough legitimate reasons for people to disfavor the Finder. Leaving puny annoyances devotion this around for so long was just rubbing salt into the wounds.

    Okay, rant over. Adjustable grid spacing and the faculty to silence file renaming warnings are finally here in Leopard. These tiny features will acquire a disproportionately huge improvement in the lives of many thousands, perhaps millions of users. Apple gets replete credit for recognizing the worst offenders and fixing them. The fact that it took so long is a shame, but much better late than never.

    New views

    The fresh Finder too has some inquisitive fresh features. We'll start with the visual.

    The Leopard window discover suits the Finder well, blessedly excising the chubby borders of its metal ancestors. On the down side, the browser sidebar has adopted the iTunes look, with the obnoxious total CAPS headings and custom highlight style.

    The Finder sidebarThe Finder sidebar

    As you can view above, list view items now believe alternating background colors—a welcome change. Cover stream continues its march through Apple's product line, now appearing in the Finder as well as iTunes, iPhone, and iPod.

    Cover FlowCover Flow

    Smart folders fetch a situation in the sidebar, with the default set shown above. As usual, a profitable selection of defaults goes a long route towards making a feature more useful. Even for people who believe no view what a smart folder is, the Today, Yesterday, and Past Week items are immediately understandable and useful.

    By default, any smart folder created will initially materialize in the sidebar. Drag it off and watch it travel poof. Drag it back on and it can travel in either the PLACES or SEARCH FOR sections (so obnoxious... ). Smart folders remain unostentatious XML files that are simply treated specially by the Finder.

    Finally, icon previews fetch even more aggressive in Leopard. The Finder goes to powerful lengths to provide previews for even the most mundane and inscrutable of file types.

    Text icon previewsText icon previews

    The squinty text seems kindhearted of silly, but believe it or not, you can actually acquire out the basic structure of the document (well, the first page, anyway) even at icon sizes smaller than those shown above. And as you'll soon see, a quick preview of the file's contents is only a keystroke away.

    Quick Look

    The fresh Quick discover feature, denoted by the stylized eye icon in the toolbar, provides a surprisingly mercurial and rich preview of file contents. Its keyboard shortcut is particularly convenient. Just select any file and hit the space bar to view a preview. Here's an example.

    Quick Look. Enlarge / Quick Look.

    Most of the time, the black-tinted Quick discover pane pops up instantly. This responsiveness makes the feature much more likely to exist used. The speed extends even to more knotty document types, such as PDFs, in which the "preview" isn't far removed from actually opening the file.

    Quick Look: PDFQuick Look: PDF

    That's a resizable, page-able view of the entire PDF. The dual arrows at the bottom expand it to full-screen, providing a nice route to achieve a quick presentation.

    Quick discover has a plug-in architecture similar to Spotlight. Developers must create plug-ins that can read their own proprietary document types and generate previews. Leopard ships with plug-ins for most gauge file formats.


    Spotlight's crazy orphan search windows are gone in Leopard, leaving only its incarnation in the Finder—and a greatly improved incarnation, at that. Check it out.

    Spotlight searchSpotlight search: nested boolean logic!

    Yes, that's right, nested boolean logic is finally supported! Just option-click on one of the circular "+" widgets to create a fresh nested clause. Combined with the aforementioned rewrite of the Spotlight indexing system, the fresh file search interface is now what it should believe been total along: powerful, understandable, and fast.

    Access control lists

    Access control lists, introduced in Tiger but disabled by default, are now enabled by default in Leopard. The Finder's "Get Info" window includes a fresh pane for adjusting them.

    Access Control ListsAccess Control Lists

    Changes made to this pane that plunge within the realm of gauge Unix permissions are handled as such. Any rules that travel beyond that will trigger the creation of an ACL. It's a nice unified GUI for concepts that are only divide internally for historical reasons.

    (Note that the GUI provides only the basic options: read only, write only, and read/write. You quiet believe to refer to the chmod command for more fine-grained control.)

    Screen sharing

    Leopard has extensive advocate for screen sharing—that is, the faculty to view another computer's screen in a window on your Mac and (optionally) control that computer with your mouse and keyboard—using the VNC gauge as well as Apple's own Remote Desktop protocol. Both the client and server are included in Leopard, and the Finder is the gateway to the client. Browsing a networked computer that has a server for one of the supported protocols enabled will disclose a "Share Screen" button.

    Screen sharingScreen sharing

    Clicking it will launch the Screen Sharing application which is surprisingly capable, including many features absent from the pre-Leopard versions of the commercial Apple Remote Desktop product. In particular, scaling and adaptive property control acquire this client noticeably faster.

    Screen sharing applicationScreen sharing application

    In the screenshot above, I've scaled the remote computer (a Mac running Tiger and Apple Remote Desktop) to an extreme degree, but it's quiet fully functional and surprisingly usable even at this tiny size. The preferences dialog in the front belongs to the Screen Sharing application, as does the toolbar with handy "Send to/from Clipboard" buttons on it.

    The Screen Sharing application is hidden in /System/Library/CoreServices, but can exist launched manually and used to connect to another computer if you know the IP address. You'll exist prompted for a username and password, with the option to explicitly request authorization to share the screen.

    (Screen sharing is too built into iChat, though it appears to require both participants to exist running Leopard. URLs in the shape vnc://... will too travail in the Finder.)

    If you are your family's "Mac guy," the newfound ubiquitousness of screen sharing lonely is reason enough to fetch everyone to upgrade to Leopard.

    An application divided against itself

    The Finder quiet can't quite pick what it wants to exist when it grows up, a file browser or a spatial file manager. A clean separation of concerns would allow it to exist both, but this is a solution that Apple has thus far avoided.

    In Leopard, the two window types remain: the sidebar/toolbar-sporting "browser" window style, and the style that lacks both the sidebar and toolbar. Opening a folder from within a browser-style Finder window replaces the contents of that window, whereas the identical action in a non-browser window causes a fresh window to exist opened.

    The latter style is often called "spatial" because the creation of a fresh window for each folder is a prominent behavior of the classic Mac OS Finder and other file browsers that link spatial window status (size, position, etc.) to individual folders. But there's more to being a spatial file manager than opening a fresh window for each folder. The basic requirements for a spatial file manager are:

  • Each folder is represented by a solitary window.
  • Each window is unambiguously and irrevocably tied to a particular folder.
  • All changes to the spatial status of a window are preserved (e.g. size, position, color, view style, etc.)
  • Sorry for the review, but it's been a few years since I've covered this ground. I'm not, however, going to present an argument in favor of spatial file management in this review. (I wrote one four years ago, if you're interested.) I'm just trying to define the terms of the debate.

    Historically, the Mac OS X Finder has not fulfilled the requirements described above and therefore could not exist considered to believe a proper "spatial mode." In particular, requirement number two is violated ten ways to Sunday by the oblong toolbar button that transforms any Finder window into a browser (i.e., a portal through which the contents of any folder can exist viewed).

    Of course, the mere presence of this faculty isn't the identical thing as it actually happening. For a simulated spatial Finder, why can't a user simply pick not to transform Finder windows in this way? The converse goes for those that want a purely browser-style Finder.

    Sadly, working around the Finder's identity pass has not been so easy. In total past releases of the Mac OS X Finder, it was impossible to travail with one kindhearted of window without the other kindhearted popping up in your pan periodically, unrequested and unwanted. This annoyed browser and spatial aficionados alike.

    Upon first using the Leopard Finder, you will exist forgiven for thinking that things are looking up on the spatial/browser front. Windows are much less likely to sprout (or un-sprout) sidebars and toolbars without being explicitly asked to achieve so. Sure, fresh folders created on the desktop quiet look to unconditionally open in browser mode, but overall there's been an improvement over past releases.

    Unfortunately, things are much more grim than they first materialize for fans of spatial file management—or anyone else that cares about view style retention in the Finder.

    The Leopard Finder makes its usual, halfhearted, buggy attempt to retain window size and position for each folder. It quiet does so using .DS_Store files in each directory, and those files are quiet written in an undocumented binary format. What the Leopard Finder no longer even attempts to do, however, is bethink the view style for each folder (e.g., list view, icon view) unless explicitly asked to achieve so by the user. Here are the steps required to achieve that.

  • Open the folder.
  • Set its view style to the desired state.
  • Open the View Options panel (type command-j or select the item in the View menu).
  • Check the "Always open in ... " checkbox, where "... " will exist the view style set in step 2.
  • This process must exist repeated for every solitary folder that you want to retain its view style. If you achieve not achieve this, the view style of any given folder will exist the identical as the terminal view style that you explicitly selected for any folder.

    In other words, while window size and position remain attributes of individual folders, view style is now a global impute of the Finder application itself (optionally overridden by a per-folder setting that must exist manually applied as described above). Here's a demonstration.

    Finder global view style.

    Note how Folder B's view style appears to mimic the view style set for Folder A. What's really happening is that the global Finder view style setting is being changed. Changing the view style anywhere—whether it's in Folder A, Folder B, or somewhere else—determines the view style that every newly opened Finder window will use. The only exceptions are those folders that believe had their view styles manually pinned to a particular value using the "Always open in ... " checkbox.

    And by the way, checking that checkbox does not intend that future changes to the view style of that folder will exist retained. If you want to retain a view style change to such a folder, you must achieve the following.

  • Open the folder.
  • Set its view style to the desired state.
  • Open the View Options panel.
  • Uncheck the "Always open in ... " checkbox, where "... " will exist the view style as it appeared in step 1.
  • Check the "Always open in ... " checkbox, where "... " will now exist the style set in step 2.
  • Again, iterate this process for every every solitary folder that you want to retain the fresh view style that you've set for it.

    This avalanche of mandatory categorical action effectively represents a denial of service attack on the spatial style of file management. It overloads the user with a never-ending stream of mundane tasks, making the formerly transparent process of view style retention so inefficient that it will likely exist abandoned entirely.

    If the Mac OS X Finder wants to exist a pure browser, then fine, travel for it. But in a proper browser, total view state—not just view style—is rightfully an impute of the browser itself rather than the thing being viewed. For example, when opening a URL in Safari, the Safari application determines the size, position, and adornment (toolbars, etc.) of the resulting window, not the web site being viewed.

    So why has the Leopard Finder chosen to acquire view style lonely an impute of the application, leaving window size and position as implicitly belonging to each folder? Why the continued charade of the two different window styles? Hell, what explains the continued existence of the global "Always open folders in a fresh window" preference that effectively stops any window from being a proper browser?

    The Finder remains a truly conflicted application. On the one hand, the poise has shifted heavily in favor of browser-style file management in Leopard. On the other hand, many features related to spatial file management remain. It's a mess, and shifting the mess to one side or the other is not going to help much. It's particularly painful to watch Apple continue to flounder in this area when there's a blindingly obvious solution.

    Of course, Apple could travel all-browser or all-spatial, but presumably neither of those extremes is attractive or we'd believe seen one already. No, the Finder has to achieve both. I've often gone into powerful detail about the particulars of such a Finder, but apparently there's too much nuance in that approach. Let me grunt it more plainly: for the devotion of God, Apple, just freaking divide the two modes! Let each exist factual to itself, free to wave and expand in the preempt ways. I can boil it down to three bullet points.

  • Two window styles: browser and spatial.
  • No faculty to transform a window from one style to another.
  • The "New Finder Window" command becomes "New Browser Window."
  • Then just acquire the browser and spatial windows behave according to the rules of their respective well-established conventions. That's it! Oh, sure, there are details to exist sorted out, like, say, coming up with a reliable, efficient, user-specific mechanism for storing view status information, eliminating the scourge of .DS_Store files. But these are details; fetch the two modes sorted and everything else will plunge into situation eventually.

    The Finder on the couch

    I first noticed the fresh view style behavior in Leopard when I logged in one day and saw that total my open Finder windows had reverted to icon view. That's obviously a bug, I thought, and I filed one with Apple. As I investigated further and came to understand the underlying cause, I replaced the previous bug with a fresh one that reported the queer "global view state" phenomenon. Needless to say, the bug was closed with the status "Behaves Correctly."

    Uncharacteristically for Apple, a brief explanation of the rationale for the change accompanied the closure. The boilerplate-esque text said, in part, "To appeal to most users, the view style mechanism has changed in Leopard. [... ] To view total folders in your favorite view style you requisite only click on the view style button once, and you will remain in that view style."

    Rarely are they given any insight into Apple's reasoning when it comes to user interface changes, so I'm inclined to mine this tiny nugget for total its worth. It seems limpid to me that the fresh behavior is intended to fullfil a claim for more browser-like behavior, something that "most users" believe told Apple they want. I don't find that surprising; ever since the sidebar appeared, the Finder has certainly looked the allotment of a browser. Its behavior, however, has remained schizophrenic. The common user response: "It looks devotion a browser, but doesn't behave devotion one. gratify correct this."

    On the other hand, apparently some people at Apple believe that going to a full-on browser would exist too much. Perhaps they terror it will result in a flood of complaints about "windows not remembering their settings."

    This is the ilk of feedback you can hope from regular users: expressions of particular pang points. It's not their job to unravel the Finder's problems or even to understand the underlying causes. But being reactive to this kindhearted of feedback at this plane of granularity will only lead to feature churn.

    And so you fetch changes devotion those made to the Leopard Finder. A change here to address a situation where the Finder isn't browser-like enough, implemented in such a route that it (further) breaks spatial mode. Oops, now let's sling in an "Always open in ... " view option to acquire those other people happy. And round and round it goes. thrust something in over here, something else pops out over there. No one is thinking about the powerful picture.

    As a sop for spatial file management fans, the "Always open in ... " view option fails spectacularly. It's more devotion a giant middle finger from Apple. At the very least, an option to restore the pre-Leopard behavior of automatically retaining view style on a per-folder basis (radar 5543643) is necessary to restore some semblance of balance. But in the long run, it's total unavailing unless the larger issues are addressed.

    Finder summary

    The Finder was one of the biggest surprises for me in Leopard. It was not limpid at total from the brief Leopard Finder demos shown at the various Macworld Expo and WWDC keynotes that such significant changes had been made. Certainly, there's wasn't even a whiff of the fresh policy on view style retention.

    After many years of bugs, needy performance, a feeble browser, and a pseudo-spatial mode, it'll exist inquisitive to view what kindhearted of reaction this change gets in the wider Mac community. You don't requisite to know or reliance about any of the high-concept user interface theories to fetch annoyed when the results of your actions are not respected enough to exist preserved. On the other hand, the Finder has been flaky about status preservation for years. How many Mac users believe simply given up trying to acquire the Finder a familiar, hospitable place? Maybe no one will even notice that view style changes are no longer preserved automatically.

    Well I positive as hell noticed, and it pisses me off. I'll exist gritting my teeth as I stray my arduous drives, manually pinning down the view style of each folder I reliance about. I'll grimace every time I naively change a view style only to exist surprised later when I realize that my change was ignored because I forgot to (re)pin it manually. I'll curse as I disburse time and energy finding a route to automate the entire tedious process. (I've gotten as far as figuring out how to set the "Always open in ... " checkbox using a hex editor on the preempt .DS_Store file. Sad, but true.)

    The Leopard Finder's saving grace may exist that the increased responsiveness and fresh features are likely to overshadow total other issues, and will travel a long route towards damping the flames of hatred burning in inevitable corners of the Mac world (even as the view style changes ignite more).

    Way back in 2002, I wrote that "the changes being made to the Mac OS X Finder betray a fundamental requisite of vision." This continues to exist the case. Not only does the Leopard Finder occupy no bold steps towards a daring fresh world of file management, it even further distances itself from a coherent incarnation of established file management paradigms. The changes in Leopard achieve bespeak that Apple has taken a renewed interest in improving the Finder, but motion is not the identical thing as progress. For where I'm sitting, it looks devotion one step forward, two steps back.

    The Dock

    If the Finder looks devotion a starlet headed for rehab, then the Dock is out on a bender in Leopard. We've already seen the aesthetic damage. Now it's time to occupy stock of the functional vandalism.

    The left side of the Dock remains mostly unchanged. It quiet holds only applications, running or otherwise. total of the fresh features are on the right half of the Dock, where "everything else" lives. Files, minimized windows, and the trash total pass into Leopard unscathed. It's docked folders that received the most attention from Apple, for better or for worse. (Mostly worse.)

    First off, I cheated a bit earlier with the screenshot of special folders. Docked folders in Leopard display their actual folder icons only when they are empty. Docked folders containing one or more items display the icons of those items stacked on top of each other, sorted by designation (the default), kind, or date. In a fresh Leopard install, here's what the Applications folder will discover devotion in the dock.

    The Applications folder in the DockThe Applications folder in the Dock

    Seriously. It gets worse. Let's add the fresh Downloads folder next to the Application folder. Here's what it looks devotion in the Dock after downloading your first disk image.

    The Downloads folder(!) in the DockThe Downloads folder(!) in the Dock

    Yep, that's it right next to the trash. I kid you not. Let's add an actual disk image file to the Dock.

    The Downloads folder and a disk image in the DockThe Downloads folder and a disk image in the Dock

    That's the Downloads folder on the left, and the disk image file on the right. It's slightly bigger.

    If you are not shaking your head, uttering something profane, or taking some deity's designation in vain right about now, congratulations, Apple may believe a position for you in their user interface design group.

    Do I requisite to further define my objection to this insanity? I hope not, but if so, let's continue by looking at a more typical Dock with several folders containing multiple items. First, the Tiger version.

    Docked folders in TigerDocked folders in Tiger

    Now Leopard.

    Docked folders in LeopardDocked folders in Leopard

    Just try and freaking guess what those icons are in the Leopard Dock, I dare you. Sure, two of them are probably easy: the Applications folder that you've already seen, and maybe the Downloads folder which just has two additional items in it. But the others? Forget it. Here's the actual list, from left to right: Home, Applications, Downloads, Documents, Pictures, Movies. And yes, I had to scrub my mouse over the icons to fetch that list right.

    When it comes to ease of identification, the Tiger version wins, hands down. And bethink that the icons in the Leopard Dock will change their appearance as the contents of those folders change over time.

    In the Leopard Dock, my home folder appears as a bunch of stacked folder icons because that's mostly what it contains: other folders. There's actually one document peeking out in the middle of the stack as a sliver of white. The icon on the top is the Desktop folder icon. So, out of the box, your home folder, when docked, appears to exist the Desktop folder.

    We already talked about Applications. It's basically Address Book, the head of the Automator robot icon, then a bit of folder peeking out the sides. My Documents, Pictures, and Movies folders total contain mostly other folders as the first few items, alphabetically.

    Changing the sorting doesn't help much. The problem is that this is fundamentally a inferior idea. There's just not enough scope in a solitary Dock tile for a stack of icons to convey any meaningful information. Only the top one, two, maybe three items believe any visual impact. And those few items may exist delusory (e.g., the home folder appearing to exist the Desktop folder) or completely generic (e.g., the Pictures and Movies folders showing up as unostentatious folder icons.) Seriously, Apple, this is a inferior idea. And achieve I requisite to show you that there's no route to disable this behavior? Sigh. And we're not done yet.

    Clicking a non-empty docked folder that contains other items no longer opens the folder in the Finder. Before I fetch into what does happen when you click on a docked folder, let me further point out that (surprise!) there is apparently no route to fetch the feeble behavior back. I modifier-clicked my fingers off with no luck. Yes, there's quiet the "Show in Finder" context menu item, and as we'll see, at least one other alternative that requires two clicks (possibly quite distantly separated), but nothing as succinct as the behavior that existed in Mac OS X 10.0 through 10.4. Leopard just takes this feature away.

    Here's what does happen when you click a docked folder. If the folder is empty, it opens in the Finder. If it is not barren but contains less than a dozen or so items, it sprouts a curving stack of icons, topped by a "Show in Finder" button. Clicking on an icon is the identical as opening it in the Finder: folders open in a fresh Finder window, documents open in the preempt application, and applications launch. A command-click reveals an item in the Finder.

    Docked folder stackDocked folder stack

    Apple calls this view "Fan." The curve is jaunty, but it too makes it a bit more difficult to click items high in the stack, requiring a varying amount of lateral motion rather than a straight shot upwards. Putting the "Show in Finder" icon is at the top seems particularly cruel. If it were at the bottom, the two clicks required to open a docked folder in the Finder would exist tolerably close together.

    If there are many items in a folder, clicking on its dock icon reveals an icon grid on a tinted background.

    Docked folder gridDocked folder grid

    Items in the grid respond to clicks in the identical ways as items in the fan view. Each docked folder can exist viewed as a fan or a grid or can exist set to "automatic" (the default), which uses a fan when there are few items and switches to grid to handle many items.

    Both of these fresh features are actually pretty nice. It's too inferior Apple decided to completely supplant the feeble behavior. It would believe been so effortless to believe it all: just add a "Window" menu item alongside Fan and Grid in the "View as" submenu.

    Docked folder views: a suggestionDocked folder views: a suggestion

    Finally, the Leopard Dock is spring-loaded, at long last. That is, when dragging an item onto a docked folder and holding it over the folder for a few moments, the docked folder springs open to disclose its contents, allowing further nesting of the dragged item.

    Taking stock of the Dock

    Put simply, there are few positive changes to the Dock in Leopard. Fans and grids are nice, but even those fresh features are hampered by the needless abandonment of feeble behaviors. The "stacked contents" docked folder display route is a total loss. char it with fire, or at least provide some route to eddy it off.

    And lest they forget, despite these fresh Leopard feature, the Dock is quiet quite anemic. This isn't talked about much these days, but total the feeble power-user complaints about the Dock quiet believe merit: the requisite for icon scrubbing, the touching targets, the arbitrary division of items, the route each duty affects the others (e.g., minimizing many windows makes the Dock a less effective launcher by shrinking and touching total items), etc.

    The benefits of the Dock are obvious and well established. Many of its weaknesses are actually strengths for beginners and users with less knotty needs. But as the boneheaded changes to the Leopard Dock amply illustrate, there's one persistent fact that makes the Dock's failings stand out: you believe to exercise it.

    Mac OS X forces you to exercise the Dock by making it the exclusive home for some essential functionality. The three biggies are window minimization, application notifications (i.e., bouncing icons and icon badges), and application Dock menus. Maybe you could give up one of those, but it's pretty much impossible to live without having any of them.

    Replacing or even just replicating any of these features elsewhere can only exist done using scary, unsupported hacks (and thank God that's even possible) or inefficient, application-specific work-arounds (e.g., polling via Apple Events to simulate Dock icon badges for unread message counts and so on).

    If Apple's going to not only reject to acquire the Dock better suited to more knotty or demanding usage scenarios, but too periodically hose existing functionality and add really terrible fresh behaviors, it needs to occupy away the Dock's exclusive ownership of essential features. Let me conceal the Dock entirely and exercise a third-party replacement without sacrificing basic functionality and without compromising the stability of my system. I know it's always a pang to add fresh public APIs, but these changes are long overdue, and they'd benefit Apple in the long dash as well. Mr. Serlet, split down this wall! Don't compel me to exercise the Dock, and I swear I'll desist actively hating it.

    Time Machine

    Time Machine is the best fresh feature in Leopard, perhaps the best feature ever added to Mac OS X. do simply, Time Machine is a backup and recovery system that people will actually use. It effectively cuts the Gordian Knot of the age-old backup plight for established users: "I know I should back up, but I never do. I wouldn't even know how to achieve something devotion that anyway." Well, enough of that. If you believe more than one arduous disk attached to your Mac, it's more difficult not to exercise Time Machine than to exercise it.

    Backup disk selection dialogBackup disk selection dialog

    The first time two or more arduous disks are connected to a Mac running Leopard, a dialog box will materialize asking the user to select a backup disk. pick one and you're done; no further action is needed. Were you to stray over to the Time Machine preference pane, you'd view this tidy puny display.

    Time Machine preferencesTime Machine preference pane

    The comically huge on/off button dominates the screen. (Shades of the iPhone "slide to unlock" control, eh?) The only two other controls are the "Change Disk" button and the "Options" button which leads to this dialog.

    Backup optionsBackup options

    It's total pretty self-explanatory, and the defaults are sensible enough that no one ever even needs to know these screens exist.

    The benefits of Time Machine are revealed in two principal ways. First, if your main arduous drive dies or is replaced, booting from the Leopard install DVD will provide a one-click route to restore from your terminal Time Machine backup. Second, when viewing any window in the Finder, triggering a special mode will display the contents of that window at total points in the past for which backup data exists. Files can exist recovered from the past, replacing the current incarnations or existing alongside them.

    This total sounds so simple that it's boring, but that's the genius of it. Apple took a survey of its customers' backup habits before creating Time Machine. Eighty percent of Mac users said they knew they should backup their data. (This is scary already. Only 80 percent?) Twenty-six percent said they achieve backup their data. That actually doesn't sound too inferior until you fetch to the next question. Only four percent backup regularly.

    In a nutshell, this means that if you could snap your fingers and acquire one Mac user's main arduous drive disappear, there's a 96 percent chance that you just destroyed files that are completely unrecoverable. With more and more irreplaceable personal data being stored on Macs (e.g., family photos and movies) it'd exist irresponsible of Apple not to address this issue in some way.

    I harped on this topic a bit a few years ago, coming at it from the hardware side by suggesting that Apple do at least two arduous drives in every Mac. In Leopard, Apple has approached the problem from the other direction, eliminating the software hurdles and relying on Mac users to supply the additional arduous drive.

    In hindsight, this is a more practical solution. Mac users are much more likely to purchase and attach a spare arduous drive than they are to navigate the complexities of backup software on their own—software that may cost as much as a arduous drive, these days.

    And as the icing on the cake, Apple even made file recovery fun. It starts with the icon for the Time Machine, which is in the Dock by default.

    Time Machine iconTime Machine icon

    Click it and everything but the front-most Finder window falls off the screen, revealing a crazy-ass swirling nebula and touching star field, into which fades a succession of historic incarnations of the lone remaining Finder window.

    Time Machine mode (cropped due to space constraints;  view Apple's web site for <a href="">more images</a>)Time Machine mode (cropped due to space constraints; view Apple's web site for more images)

    Cancel "button"

    Cancel "button"

    Time line

    Time line

    Completely non-standard arrows and buttons are used to navigate and restore files. A timeline along the right shows each backup as a tick mark, magnifying the marks on mouse-over much devotion the Dock magnification feature. It's total completely ridiculous, and you know what? I devotion it!

    I'm willing to indulge Apple when it comes to these flourishes in Time Machine for two reasons. First, nothing of the silliness renders the features significantly less usable. Yes, those arrow buttons are crazy, but they're too huge click targets, and they clearly convey their purposes. Ditto for the buttons at the bottom. Second, and most importantly, Time Machine is designed in such a route that it's easy—almost trivial, in fact—for third-party developers to create their own interface to manage backed-up data. Which leads us to...

    Time Machine internals

    Backups are stored in a folder named Backups.backupdb at the top plane of the drive selected as the Time Machine backup repository. Within that is a folder with the computer designation (as set in the Sharing preference pane in System Preferences) which contains a series of date-stamped folders (YYYY-MM-DD HHMMSS), each of which contains a folder named for each volume being backed up. Here's an example.

    Time Machine backup "database"Time Machine backup "database"

    In this case, the computer designation is "Leopard" and the arduous drive designation is "Leopard Demo." Each "Leopard Demo" folder contains the complete contents of the volume as it existed at the time indicated by the parent folder's name.

    Wait a second, the complete contents? Let's see, there are ten date-stamped folders, each containing a "Leopard Demo" folder... does that intend that the Time Machine backup drive shown above is at least ten times larger than the Leopard Demo volume? Fortunately, no. Time Machine is a bit more ingenious than that.

    When creating a fresh date-stamped backup, Time Machine does not copy any files that believe not been modified since the terminal backup. The identical goes for entire folders; if total the files in a particular folder believe not been modified, then the entire folder is not copied.

    And yet there they total are. If you navigate into one of the "Leopard Demo" folders, you'll view every solitary file. Not aliases, not symlinks, the actual files:

    Complete disk contents in each backupComplete disk contents in each backup

    Well, sort of. In my Tiger review, I included an explanation of Unix file permissions. To understand what Time Machine is doing, you must first know something about another gauge Unix feature: symbolic links and arduous links. This is very basic stuff for anyone with Unix experience, but I got a lot of positive feedback about the Unix permissions tutorial so I hope you'll allow me a brief digression. Feel free to skip this section if you know this stuff already.

    Symbolic links and arduous links

    Mac OS has included the faculty to create an "alias" of a file since System 7. Aliases are small, unostentatious files whose contents are interpreted by the Finder and other Mac OS APIs, allowing the original file to exist found. To the core OS in Mac OS X, however, aliases are meaningless. They're literally just small, unostentatious files. (In fact, their size is shown as zero because total the data is in the resource fork.) The first allotment of this lesson is that aliases believe absolutely nothing to achieve with symbolic links and arduous links.

    For decades, Unix has had two ways to achieve something similar to what aliases do: symbolic links and arduous links. A symbolic link, too called a symlink, is a pointer to another file. The location of this file is specified using an absolute or relative path string. Symbolic links are created with the ln command using the -s flag. Here's an example.

    % ls -l -rw-r--r-- 1 john staff 894 Oct 18 10:04 myfile % ln -s myfile mysymlink % ls -l -rw-r--r-- 1 john staff 894 Oct 18 10:04 myfile lrwxr-xr-x 1 john staff 6 Oct 18 10:06 mysymlink -> myfile

    As indicated by the leading "l" in the Unix permissions string, mysymlink is a symbolic link. It points to myfile, which the ls command shows to the right of the puny ASCII arrow. Note that the symbolic link is tiny: only six bytes. That's not a coincidence. Symbolic links are "dumb" in that they literally contain nothing more than the target file path as a string. In this case, the string is the relative path "myfile" which (surprise) is exactly six characters long.

    If I shuffle mysymlink to an entirely different directory that too happens to contain a file named myfile, then the symlink will point to that file instead. If I delete myfile, the symlink will remain, quiet containing that identical path string which no longer leads to an actual file. Observe:

    % rm myfile % cat mysymlink cat: mysymlink: No such file or directory

    The mistake reported is a bit confusing. The mysymlink file quiet exists. But when the operating system attempts to open that file, it dutifully follows the symbolic link and finds that there is no file at the path specified by the link. The cat command then reports the mistake it encountered when trying to open the file it was originally told to open.

    This property of symlinks can too exist considered a feature in some circumstances: "simple" rather than "dumb." But sometimes a more robust mechanism is needed. Enter arduous links.

    A arduous link is simply a reference to some data on disk. reflect of a file as a combination of a designation and a pointer to some data. Deleting a file really means deleting the designation portion of that duo. When there are no more names pointing to a particular piece of data disk, then that disk space can exist reused.

    Most files believe just one name. In effect, every unostentatious file is a arduous link. occupy another discover at the myfile listing from before.

    -rw-r--r-- 1 john staff 894 Oct 18 10:04 myfile

    See that number "1" right before the word "john"? That indicates that the data linked to the designation myfile has only one name. In other words, deleting myfile will drop the weigh to zero, allowing the disk space previously used by myfile to exist used for other purposes. Note that creating a symlink does not increment this number.

    % ls -l -rw-r--r-- 1 john staff 894 Oct 18 10:04 myfile lrwxr-xr-x 1 john staff 6 Oct 18 10:06 mysymlink -> myfile

    In fact, the symlink itself has a "1" in that column, indicating that there is only one designation linked to those the six bytes of data. Now let's acquire a arduous link, again using the ln command, but this time with no flags.

    % ln myfile myhardlink % ls -l -rw-r--r-- 2 john staff 894 Oct 18 10:04 myfile -rw-r--r-- 2 john staff 894 Oct 18 10:04 myhardlink lrwxr-xr-x 1 john staff 6 Oct 18 10:06 mysymlink -> myfile

    Now the link weigh for both myfile and myhardlink is two. This indicates that the data linked to by myfile has two names, and the data linked to by myhardlink has two names. In this case, both link to the identical data. They believe no route of knowing that merely by looking at the link counts; they know because they just ran the ln command ourselves.

    Though the size for both myfile and myhardlink is listed as 894 bytes, those 894 bytes exist only once on the disk. Again, it's one chunk of data with two names. As far as the OS is concerned, neither myfile nor myhardlink is the "real" file. They are both equally real, as existent as either one would exist if the link weigh was one instead of two.

    Since these two files link to the identical data, the results of modifying that data will exist reflected in each file. For example, let's add five bytes to the chunk of data linked to myfile (the word "test" plus a newline character):

    % cat >> myfile test ^D

    Now let's discover at the result.

    % ls -l total 24 -rw-r--r-- 2 john staff 899 Oct 18 10:38 myfile -rw-r--r-- 2 john staff 899 Oct 18 10:38 myhardlink lrwxr-xr-x 1 john staff 6 Oct 18 10:06 mysymlink -> myfile

    The sizes of myfile and myhardlink are now both reported as 899 (894 + 5). Meanwhile, mysymlink is quiet the lone designation linked to its six bytes of data containing the string "myfile".

    Back to Time Machine

    Okay, digression over. Let's revisit the mystery of the ten apparently complete copies of my "Leopard Demo" volume in the Time Machine Backups.backupdb folder. As you might believe guessed by now, Time Machine uses arduous links to repeatedly link to the solitary instance of a particular chunk of data on disk. Here's an example:

    % cd Backups.backupdb/Leopard/2007-10-18-103601/Leopard Demo % ls -l mach_kernel -rw-r--r--@ 10 root wheel 10235416 Sep 18 23:50 mach_kernel

    And there you believe it: the "10" next to the word "root" indicates that there are ten names linked to the data that mach_kernel links to. That data exists only once on the Time Machine backup volume. This arrangement is repeated for each file that has not been modified since the terminal backup.

    Time Machine goes one step further. Historically, Unix has only allowed arduous links to files. In Leopard, Apple has included the faculty to acquire arduous links to directories. This has not been allowed in Unix because it can lead to total sorts of very nasty sempiternal loops during file look-ups. Of course, symbolic links can create loops too, but they're a lot easier to detect and prevent since symbolic links are easily distinguished from established files. But as discussed earlier, every file is essentially a arduous link, and total arduous links believe equal standing in the eyes of the OS, making loop detection a bit trickier.

    Nevertheless, the benefits for Time Machine were substantial enough for Apple to (carefully) add this faculty to Leopard. For example, if the entire /System directory has not changed since the terminal backup, Time Machine just has to acquire a solitary arduous link to that directory in the fresh backup folder. Without advocate for arduous links to directories, Time Machine would believe to create 18,744 directories containing a total of 68,839 arduous links to files (using numbers from my /System directory).

    Yes, directories are minute and arduous links only occupy up the scope necessary for their directory entries (at minimum, enough to store the designation and a pointer to the data on disk), but those bytes add up mercurial when you're talking tens of thousands of arduous links being created every time you want to achieve a backup. arduous links to directories acquire this total much simpler and more efficient.

    There is one final bit of cleverness in Time Machine. When it comes time to achieve a backup, how does Time Machine know which files believe changed since the terminal backup? If you've been reading along (and not skipping sections devotion a wuss), the own is obvious: FSEvents.

    Though Apple was kindhearted enough to acquire it a public framework, Time Machine is arguably the entire reason FSEvents was created. Time Machine can wake up whenever it wants—it doesn't requisite to exist running constantly—and efficiently find out what's changed since it terminal checked (that is, since the terminal file system event id that it saw). Since FSEvents reports changes at a directory level, Time Machine quiet has to determine which files in that directory believe changed. No problem! It's got the previous backup of that directory to exercise as reference. FSEvents and Time Machine are a perfect match for each other.

    Implementation consequences

    It's luckless that Time Machine's cleverness does not extend just a bit further. The smallest unit of data that Time Machine will backup is an individual file. That means that if you change one byte in a 10GB file, that entire 10GB file needs to exist copied to the backup volume. arduous link can't help you here. There's no route to acquire a arduous link to "9.99999GB of the feeble data, plus this one byte of fresh data."

    But how often does that happen? Sure, it's a worst case scenario for a file-level backup system devotion Time Machine, but isn't it rare to repeatedly modify a minute portion of a giant file? Well, it depends. I can reflect of two instances that will champ many thousands of Mac users.

    First, if you exercise Microsoft Entourage, your e-mail is kept in a single, great database file. Mine is about 2GB. Most people fetch fresh e-mail every day. Ugh.

    Second, if you exercise any sort of virtualization software devotion VMware or Parallels, each virtual machine arduous disk image is a multi-gigabyte file that changes pretty much every time you exercise the VM. Double ugh.

    So, how many Mac users own some virtualization software or exercise Entourage? That number has to exist in the thousands, and is probably growing.

    Apple has been encouraging developers to exercise many minute files rather than one powerful one for years now, mostly to acquire it easier for Spotlight to index application data. In Tiger, Apple Mail switched to saving individual messages rather than larger, monolithic mailbox files for this reason. Presumably Entourage could achieve the same, although I believe no view if it does so in the upcoming Microsoft Office 2008 release. But for virtual machine files, the problem is intractable. And those mind to exist the biggest solitary files on most disks.

    This problem needs to exist addressed. The best solution is for Apple to shuffle to a fresh file system that supports block-level snapshots. ZFS, for example, would apt the bill. Sadly, no such transition has happened in Leopard. Time Machine backs up to a unostentatious feeble HFS+ volume (though read-only advocate for ZFS is included in Leopard, with experimental read/write advocate available to developers).

    Reimplementing Time Machine on top of ZFS or some other similarly capable file system would exist a powerful win in terms of space efficiency. Unfortunately, that's a tall order. Don't hold your breath for anything devotion that until 10.6 at least.

    In the meantime, it is practicable to exclude individual files from Time Machine backups by dragging them into the "Do not back up" list available in the Time Machine preference pane. That will exclude the file by path. The identical underlying API (CSBackupSetItemExcluded()) can actually exist used to exclude a file directly, preventing the file from being backed up no matter where it's moved or how it's renamed. (Extended attributes in action yet again.)

    Time Machine's backup format too means that it's not practicable to boot from a Time Machine backup volume. Instead, you must boot from a Leopard install DVD and restore the Time Machine backup onto a fresh volume. If, devotion me, you feel better too having a bootable backup around, an application devotion SuperDuper is quiet necessary. (I reject to add the exclamation point. Sorry, David.)

    On the shimmering side, the backup format isn't really a "format" at all. It's a bunch of unostentatious files on disk in date-stamped folders. Don't devotion the loony space-motif file restoration interface in the Finder? Don't exercise it. You can stray around the Backups.backupdb folder using the Finder, the command line, or any other file manager. But the biggest win with total these public APIs and simple structures is that the field is wide open for third-party developers to create applications that complement and build upon Time Machine.

    It's a clean machine

    Despite a few consequences of Apple's continued inability to field a successor to the venerable HFS+ file system, Time Machine is a conceptual and technical home run. Okay, so it's an infield home run, but it quiet scores. Time Machine makes a chore that was once so knotty and intimidating that almost no one even attempted it, and makes it invisible. devotion total powerful ideas, it seems obvious after you've seen it, but that in no route diminishes the achievement.

    Time will show (ha) if this machine is enough to fetch to Apple's stated goal of having 100 percent of Mac users backup regularly, but I reflect it'll certainly acquire a dent. I often fetch scolded by other mothers via e-mail when I exercise my mother as an example, but it's just too apropos to pass up here. Time Machine is literally the only route I can reflect of that I could ever fetch my mom to back up her Mac. Once she has upgraded to Leopard, I can show her over the phone to buy an external drive, plug it in, and click a button in a dialog box. No cross-country visit, no Apple Remote Desktop session (although Leopard makes that allotment easier, too), no software installation, no fresh application to learn.

    Yep, it's a glimpse into the self-sufficient-mom future they total imagine. The open backup format and APIs are exactly the right route to add a major feature without the affliction of being total things to total people. Let third-party developers to add value; they'll devotion you for it. Time Machine earns its situation as the marquee feature of Leopard. profitable show, Apple.


    Each fresh version of Mac OS X has been faster on the identical hardware than its predecessor. I've said as much in my reviews, but the definition of "faster" is admittedly nebulous when applied to an entire operating system.

    There are at least two principal ways that an OS gets "faster." The first is traditional code optimization, where some subsystem is improved to exercise less CPU time or less recollection or achieve less disk i/o, thus performing the identical chore in less time. The second factor is perceived speed. Though a chore may actually occupy longer, it may feel faster due to changes in the route the OS reacts during the process.

    Application launching is the canonical sample that combines both. You can time how long it takes for an application to finish launching, giving you a measurement of actual performance. The perceived performance, on the other hand, has more to achieve with the number of bounces the Dock icon makes, when the first application window begins to draw itself, and whether there's a beach ball cursor at any time during the process.

    Leopard, devotion its predecessors, gets faster on the identical hardware in both areas. Frameworks believe been extensively revised and optimized, yielding existent performance benefits in the areas of screen drawing (2D or 3D), text display, and most of the features that were fresh in Tiger.

    In particular, Spotlight's improvement has been revelatory. Maybe it will abase with time, but after a few months of usage it's quiet lightning fast. I've actually been too slothful to install Quicksilver on each fresh Leopard seed, relying instead on Spotlight as a quick launcher—something that would exist inconceivable to me in Tiger. And Leopard is not getting off effortless by just indexing a clean install. No, it's indexing total 2+ million of my files.

    This brings up an inquisitive point. Does a faster Spotlight contribute to the "OS" being faster? I grunt it does. From a user's perspective, an OS is a collection of features and bundled applications. Only nerds reliance about the "real" definition of an operating system, encompassing only the lowest-level services. Spotlight is perceptible and measurably faster in Leopard, and that makes a powerful disagreement to users.

    Speaking of Spotlight, the continued addition of similar "system services" to Mac OS X has caused some concern. Upon booting into Tiger for the first time, for example, users had to endure a long disk-thrashing undergo as Spotlight indexed total their files. Granted, it happened in the background, but it did slow things down. Perhaps more importantly, the sound of a arduous drive grinding away in the background can exist quite disconcerting.

    Now Leopard adds Time Machine, which is set to achieve even worse: initially read and then write the entire contents of every file on your disk. It doesn't fetch much heavier than that when it comes to disk i/o. In practice, the upside is that this doesn't believe to happen immediately upon your first login. If you don't apportion a drive to Time Machine, it will achieve nothing. And you can always eddy Time Machine off temporarily with the powerful honkin' switch, then eddy it back on when you'll exist away from the computer for a while. This increased control goes a long route towards making Leopard a more pleasant upgrade.

    Most bundled applications fetch a boost of speed in Leopard, if only in the seemingly universally less disk-intensive launch process. One Dock bounce, a few arduous drive clicks, and most applications are ready to go. I feel devotion I'm probably being cheated by yet more "bounce shaving," but the stopwatch bears it out, if only by fractional seconds in most cases.

    Window resizing takes its accustomed baby step towards absolute responsiveness, no doubt aided by the faster text drawing and Cocoa framework optimizations. iCal remains the best (or is it the worst) test candidate for this task. It's quiet laggy, but improved.

    I believe a sentiment the existent performance wins will advance as third party developers (and Apple too, I suppose) believe time to optimize for Leopard, using Quartz GL, compiling for 64-bit Intel, using the fresh Objective-C 2.0 runtime, and so on.

    In short, it's more of the identical for Mac OS X performance in Leopard: uniform improvement, with a few shimmering spots, and no existent downsides.


    For the longest time, very early in Leopard's development process, it wouldn't even boot my (PowerPC) Mac successfully. Each newly downloaded developer version would kernel panic before getting to the Finder. This was discouraging, to grunt the least. No previous Mac OS X version behaved this badly for this long during its development. Eventually, the kernel panic was fixed, and I could finally boot. But as the release month of October approached, there were quiet an alarming number of basic things that did not travail reliably. I was getting inferior flashbacks of the bug-ridden 10.4.0 release.

    Then, around September, Apple released a build that miraculously seemed to acquire everything work, and travail well. Now obviously I believe no view how closely Apple's developer seeds track with the actual status of the OS code in-house. Maybe Apple was holding back, seeding older versions, while the head revision inside Apple was in a temporarily unstable status awaiting the final powerful push. But whatever the case, this dramatic come-from-behind developer seed triumph is unprecedented in the history of Mac OS X development. That September seed was so good, so stable, that I thought it could exist the GM.

    Well, the actual GM is just as good, probably even better—though I've yet to bear a solitary crash of anything even in the September seed. Of course, I only believe a limited set of hardware and software to test on, so I can't grunt definitively that 10.5.0 is going to exist powerful for everyone. And yes, the Miracle of September does give me some pause. But I'm cautiously optimistic that 10.5.0 won't exist a iterate of the 10.4.0 experience. That said, a 10.5.1 release is almost certainly not too far away. I just reflect you won't exist in desperate requisite of it when it arrives.

    Grab bag

    It's time for the grab bag section with total the shiny screenshots. This will exist short, I think, because it certainly can't exist exhaustive. Also, Apple itself has provided quite an extensive rundown of over 300 fresh features in Leopard. Thanks, Apple. Still, I'll believe my say.


    Leopard includes an extremely competent virtual desktop implementation in Leopard, appropriately called Spaces. To some, this is a major fresh feature on the plane of Time Machine. To me, it's a grab bag item, albeit the headliner. Your mileage may vary.

    In the continued flavor-of-the-version shuffle, the "Dashboard & Exposé" preference pane from Tiger has been renamed to "Exposé & Spaces" in Leopard. Here's the fresh Spaces tab.

    Spaces preference paneSpaces preference pane

    You can add rows and columns of spaces, up to a maximum of 16 in total. Applications can exist assigned to specific spaces or can materialize in total of them, which is a nice touch. For the next revision, a route to apportion different desktop background to different spaces would exist nice.

    "Activating" spaces means displaying total the spaces on the screen at once. Once in this view, you can drag windows from one space to another. Dragging a window to a screen edge and holding it there will accomplish the identical thing. I only wish that activating spaces did not interrupt the current drag operation. Ideally, I'd devotion to click and hold on a window title bar, then activate spaces and continue my drag of that window into a fresh space. (I achieve something similar on a daily basis when dragging files, using the command-tab application switcher as an circuitous route to fetch the drag destination to advance to the front without releasing the item that I'm dragging.)

    Spaces's keyboard and mouse bindings are extremely flexible, allowing most sane combinations of keys, screen corners, and mouse buttons to exist used as triggers. And above all, Spaces is fast. Space-switching happens instantly, accompanied by minimalist but pleasing sliding animations and a nice HUD (which I've been unable to fetch a screenshot of, but you can view it at Apple's web site).

    After many years of heroic hacks by third parties, it's nice to finally believe a supported implementation of this feature, and a profitable one at that.

    New icons

    From Spaces to icons? Yes indeed. A bunch of existing applications fetch fresh icons in Leopard.

    New iconsNew icons

    I'm not positive how I feel about System Preferences adopting the iPhone settings icon, but overall, the fresh icons discover nice. Most icons believe been updated, in fact, if only to include larger sizes. Many believe been entirely redrawn but discover almost exactly devotion their predecessors. It total combines to gives a nice additional sheen to the OS.

    Leopard too includes a nice set of icons representing most Macs made in the past few years, presumably meant to more accurately picture networked machines, though for some reason, the Finder thinks my PowerBook is a Cinema Display. Anyway, the icons are extremely nice looking. But at what point achieve these things desist being "icons?" At 512x512 pixels, they're more devotion "idealized photos." pick for yourself.

    This is an icon?This is an icon?

    Apple was even nice enough to include an icon for (to quote the file name) a "generic PC."



    (I actually reflect the worst allotment is the monitor itself, not what's on it.)


    The fresh Network preference pane is awesome. Strike that, maybe it's just that the feeble one sucked so badly. Anyway, here it is.

    Network preference paneNetwork preference pane

    It includes a total bunch of features that were either well hidden (often in other preference panes) or only available from the command line: duplicating services, importing and exporting configurations, managing virtual interfaces, the total nine yards. total of the esoteric stuff is behind that "Advanced" button, but at least it's finally total in one place.

    Network: advanced settingsNetwork: advanced settings Sharing

    The Sharing preference pane is is similarly refined and expanded. The screen I've chosen to display below reveals the long-overdue addition of a GUI for sharing specific folders.

    File sharingFile sharing

    Nearly every service has some minute fresh feature, usually in the shape of more flexibility about who gets to exercise the service.

    Guest account

    The fresh guest account feature allows anyone to login without a password.

    Guest accountGuest account

    The accustomed set of constraints can exist applied to the guest account, including the so-called "parental controls" that severely restrict access. A temporary home directory is created when a guest user logs in. The user id is always the identical (201), and only one guest can exist logged in at a time. There's no terror of one guest seeing another guest's left-over files because the entire home directory is deleted upon logout. Thankfully, Apple provides a warning.

    Guest logout warningGuest logout warning

    Though I didn't travel looking for it, I suspect it wouldn't exist too arduous to find the template for the guest account, perhaps in the shape of a disk image or property list, and customize it to create a more restful environment for guests. (Say, by putting a giant Unreal Tournament 2007 alias in the heart of the desktop. Hello, multiplayer gaming terminal.)

    Disk Utility

    The Disk Utility application can now delete and resize partitions without erasing total data on the disk. This is probably a result of the travail Apple's done for Boot Camp, whose installer has long had similar capabilities (but really it was long overdue). The warning dialog Disk utility puts up during destructive operations is reassuringly clear.

    Make me feel safe, Disk UtilityMake me feel safe, Disk Utility Slightly less embarrassing text-to-speech

    The fresh "Alex" text-to-speech voice is considerably better than the previous voices, which date back to the classic Mac OS days. More modern text-to-speech technology quiet sounds a lot better to my ears. Apple really needs to significantly update the core engine, not just add fresh voices. No screenshot.

    Back to my Mac

    Leopard includes advocate for what is essentially dynamic DNS via the fresh Back to My Mac feature of the .Mac service.

    Back to My MacBack to My Mac

    Enabling this feature lets any Mac know the IP address of total your other Macs by having each one report its IP address to the .Mac service. The result is that total your Macs are available as servers in the Finder sidebar, without requiring you to enter a server address. It's handy, but not much help if you travel across several draconian firewalls daily.

    Grammar checker

    The system-wide spelling checker now does grammar too. inferior grammar gets a green underline instead of red.

    System-wide grammar checkerSystem-wide grammar checker

    It's not the most robust grammar checker in the world—for example, it thinks "This are good" is perfectly fine—but devotion the spelling checker, its omnipresence makes up for its limited abilities.

    iCal's Dock icon

    Apple has finally submitted to adding what must exist quite a hack to fetch the iCal application icon to display the correct date on its Dock icon, even when the application is not running.

    iCal Dock icon: now with correct Date™ technologyiCal Dock icon: now with correct Date™ technology Terminal

    The Terminal application has grown up, proudly sprouting tabs, window groups, and saved window styles, including an preempt wacky default set.

    Terminal settingsTerminal settings

    And hey, anyone bethink that Apple ilk Services bug that prevented my preferred Terminal font (Monaco 9pt forever!) from displaying correctly? You know, the one that lingered for five years after I first reported it?



    Fixed! Can you believe it? A fresh look, tabs, and the faculty to render bit-mapped fonts as well as a Mac 128k. My cup runneth over.

    Welcome to tomorrow

    I started this review talking about expectations. As I've learned more about Leopard, it's become increasingly limpid where, exactly, those two-and-a-half years of development time went. Leopard is absolutely packed with improvements. It seems that not a corner of the OS has gone untouched.

    Perhaps that's not as limpid to the casual user who just sees the surface changes and the major fresh features in Leopard. But even in that case, there's more than enough to recommend it. If you're wondering whether you should upgrade to Leopard, the answer, as it's been for every major revision of Mac OS X, is yes.

    I grunt this despite my abysmal hatred for many of the user interface changes. But perhaps I'm not representative of the equitable Mac user. In total likelihood, my hatred will translate into an occasional-to-persistent mild annoyance for most users. And truthfully, people can fetch used to just about anything (as the history of Mac OS X has shown).

    I'm most excited about Leopard's internals. They're the star of this release, even if they don't fetch top billing. There's a profitable reason we've already seen so many prominent Leopard-only software announcements. This is where developers want to be.

    Leopard's tug on developers will translate into better applications for users... eventually. In the meantime, I'm arduous pressed to reflect of a solitary Mac user I know who wouldn't benefit from Time Machine's hassle-free backup magic. If you're looking for one reason to upgrade, this is it. Yeah, backups are boring, which is why you're probably not doing them regularly right now. No more excuses.

    In many ways, Leopard feels devotion a fresh beginning. While Tiger consolidated the gains made in 10.0 through 10.3, pinning down APIs and dipping its toe into a few practicable future directions for the GUI, Leopard charges bravely forward, choosing one particular fresh discover and mandating it everywhere, redesigning total of the most prominent visual elements of the interface, and shedding feeble technologies devotion cat fur.

    What's emerged is quite a queer beast: gorgeous on the inside and, well, a bit unlovely on the outside. I hope a few years of user feedback will file down some of the sharper edges, even as my dream of a radical fresh discover is postponed until 10.6 or later. It'd too exist nice if Apple would finally acquire a decision about the successor to the HFS+ file system some time this decade.

    What a long, queer trip it's been. Leopard turned out very differently than I imagined it would only a year ago. Despite some powerful disappointments near the desist of its development process—the fresh Dock, the menu bar, more Finder floundering—the foundation is stronger than it's ever been.

    Though this is not likely to happen, most of Leopard's biggest problems could exist fixed in a 10.5.x point release. That's something that certainly could not believe been said about any prior version Mac OS X. With Leopard, Apple has managed to snatch, certainly not defeat, but at least partial ignominy from the jaws of absolute victory.

    The stage is set for Mac OS X 10.6 to triumph beyond the bounds of its ancestors. In the meantime, it's the Mac development community's chance to shine. Whether it reigns for two and a half years, devotion Tiger, or even longer, I'm looking forward to my time aboard starship Leopard.

    (Caution: Dock slippery when wet.)

    Build a Hackintosh Mac for Under $800 | existent questions and Pass4sure dumps

    Update: This post is no longer maintained. For the most up-to-date Hackintosh build, view their always up-to-date guide to edifice a Hackintosh.

    Article preview thumbnail The Always Up-to-Date guide to edifice a Hackintosh (macOS Sierra)

    Building a hackintosh—that is, installing macOS on non-Apple hardware—used to require extremely…

    Read more Read

    If the high charge tag for Apple hardware has kept you from buying a Mac but you're willing to roll up your sleeves and fetch adventurous, you can build your own "Hackintosh"-a PC that runs a patched version of OS X Leopard. What?!, you say. Apple's shuffle to Intel processors in 2006 meant that running OS X on non-Apple hardware is possible, and a community hacking project called OSx86 launched with that goal in mind. Since then, OSx86 has covered major ground, making it practicable for civilians-like you and me!-to do together their own Hackintosh running Mac OS 10.5. Today, I'll display you how to build your own high desist computer running Leopard from start to finish for under $800.

    Right now the cheapest Mac on sale at the Apple store is a $600 Mac Mini sporting a 1.83GHz proc, 1GB of RAM and an 80GB arduous drive. For $200 more, your Hackintosh can vaunt a 2.2GHz proc with 4GB of RAM, a 500GB drive, and a completely upgradeable case for expanding your setup in the future.

    Building a DIY Mac requires some travail on your part, so exist ready to dedicate time to this project. To acquire things as effortless as possible, I'm going to lay out how I built my Hackintosh from start to finish, from the hardware I used to the final patches I applied to the Leopard install. If you can build a Lego set and transcribe text, you've got total the basic skills required.

    The Hardware

    There's no definitive best bet for a Hackintosh hardware configuration, so you may exist able to experiment and advance up with a better selection of parts than I did. However, I can guarantee that Leopard will (or at least has) dash successfully on this hardware setup.

    To acquire things easy, I've do together my entire hardware setup as a wish list on Newegg. (You may notice that the total charge is listed at around $850, but I knocked $110 off the charge tag due to a brace of mail-in rebates-so "Under $800" it remains, however fudgingly.)

    The build consists of a 2.2GHz Intel Core 2 Duo processor, a total of 4GB of RAM (four sticks at 1GB each), an ASUS P5W DH Deluxe motherboard, a GeForce 7300GT (the identical basic video card that comes installed in the default Mac Pro configuration), a 500GB arduous drive, a DVD burner, and an Antec Sonata case (which I've always liked for its looks and tranquil fans). The motherboard is the most principal element, since the patches we'll apply later are tailored specifically for this motherboard. You could probably tweak a lot of the other hardware without many complications, but if you stick with this motherboard and succeed the installation instructions, you shouldn't view any major complications.

    The Build

    Now that you've got total the parts, it's time to start putting your Mac together. We've minute every step of the computer edifice process at one point or another in the past here on Lifehacker, so rather than cover that ground again, I'll contour the process with links to their previous instructions. As always, exist positive to read your hardware manuals before you begin-particularly from the motherboard-to fetch to know your hardware before you start the installation. Also, always bethink to exist mindful of static electricity and always preserve yourself grounded and your board unpowered until you're finished.

  • Install the motherboard and CPU: You can succeed these instructions almost without variation, but the heatsink and fan installation, in particular, is a paw different. Rather than hooking the heatsink to your motherboard, the included Intel heatsink pops into place. For a more minute description of how this works, consult your motherboard's manual and the manual included with your processor.
  • Install your RAM: The only thing you requisite to preserve in reason when you're installing the RAM is that you should install the matched pairs-that is, the pairs that advance in the identical package-in devotion colored slots. This isn't strictly necessary, but it's a profitable exercise and generally means better performance.
  • Install the video card: These instructions actually detail how to install a PCI card, which is just a more common route of looking at your video card. The card we're using is a PCI Express card and should exist installed in the top (orange) PCI slot.
  • Install the arduous drive and DVD drive: Your arduous drive is an SATA drive, which is not the ilk of drive installed in the instructions (though they achieve address SATA drives). Just connect one of the power supply's SATA power cables to the drive and then connect the drive to the red SATA connector on your motherboard (it's labeled on the board as SATA1). succeed the identical basic instructions to install your DVD drive but plug the drive into one of the other SATA ports (I used the SATA4 port).
  • When you've finished putting everything together, your open case should discover devotion the nearly completed image below. In that picture, I've yet to install the arduous drive and DVD drive and I quiet requisite to connect the case power and other connectors to the motherboard. (You may install other features of the motherboard if you prefer, devotion the FireWire connector for the back of the case).

    To acquire positive everything's working properly, close it up, plug it into a monitor and keyboard and power it up. If the computer boots into the BIOS (by pressing Delete when prompted), you're ready to shuffle on. If the computer won't boot, you may believe to open the case back up and double-check your installation. Among other things, exist positive that your RAM is properly seated.

    Article preview thumbnail Laptop Troubleshooting Tip: Re-seat your RAM

    Only a few hours after I posted about Mac hardware failure the other day, my Powerbook promptly…

    Read more Read

    I should note that at this point of my installation, I ran into a bum power supply unit (PSU) in my case. Unfortunately that meant that I didn't know whether the PSU was bunk or my motherboard was fried, and since I don't own a voltage meter it took an extra trip to Fry's and some troubleshooting to fetch to the bottom of it. The point is that when you're edifice a PC yourself, you can and should exist prepared to dash into snags, so if you're not ready to troubleshoot if a problem arises, you may want to reflect twice before trying this. That said, I've built several PCs in the past and this was my only major snag in the course of a build, so it's too very likely that your build could travel off without a hitch.

    Either way, as soon as you're able to boot into the BIOS, you're ready to fetch started with the pre-installation.


    There are two things you requisite to tackle to prepare your computer for installation. First, you'll requisite to tweak your BIOS settings to properly travail with the Leopard install. Second, you requisite to patch the Leopard DVD to install on your newly built Hackintosh computer.

    Tweak your BIOS: The first thing I did once my build was finished was update my BIOS, since the default BIOS wasn't properly recognizing my processor. Luckily doing so is pretty simple. Just head over to the ASUS download site, narrow down, and then download the latest BIOS for your motherboard. Once downloaded, just stick the file on a USB twinkle drive. Then boot up your build and enter the BIOS setup. devotion I said above, power on your computer and hit Delete when prompted to boot into the BIOS.

    Once you're there, arrow to the Tools tab of the BIOS, select EZ Flash2, and then hit Enter. Now pick your twinkle drive by tabbing to the preempt drive, find the BIOS file you downloaded, and install it. When the BIOS has updated, your computer should automatically restart.

    Now that you've updated your BIOS, you're ready to fetch into some nitty gritty preparation. If you plugged in your drives devotion I suggested during your build, you should view your arduous drive and DVD drive listed in the BIOS as Third IDE Master and Fourth IDE Slave. (Don't worry about the fact that your arduous drive isn't listed as the Primary IDE Master.) Arrow down to IDE Configuration and hit Enter.

    In the IDE config, you want to set "Configure SATA As" to AHCI. Next hit elude once to travel back to the Main screen. Now hit the right arrow key to shuffle to the Advanced tab. In the Advanced section travel to "Onboard Devices Configuration" and set "JMicron SATA / PATA Controller" to Disabled.

    Now you requisite to arrow over to the Boot tab to configure the boot priority (which tells your computer what order you want to boot off devices in your computer). travel to "Boot Device Priority" and set your DVD drive as priority one and your arduous drive as priority two.

    Done? Then you're ready to shuffle onto patching your Leopard DVD.

    Patch Leopard for your Hackintosh: There are a brace of different ways one could travel about creating a patched Leopard DVD. The easiest is probably to download an already patched version using BitTorrent (I can attest to having seen the patched version floating around before Demonoid went under, but it's probably available elsewhere as well). The second route requires patching a Leopard DVD yourself, which isn't really as arduous as it sounds.

    If you pick to travel the first route and you find a pre-patched version off BitTorrent, you can skip to the next section. Otherwise, let's fetch down to work. To patch the Leopard install disc, you'll requisite a Mac and a pre-patched image of the Leopard installer on your desktop. You can fetch this in two ways: Either by downloading the image-again with BitTorrent-or by buying and then ripping a Leopard DVD to your arduous drive. Either route you choose, when you're finished you should situation the ripped installer on your desktop and acquire positive that it's named osx-leopard105.dmg.

    Now it's time to fetch patching. To achieve so, you requisite to grab the patch files (created by the resourceful OSx86 forum member BrazilMac, who bundled the patch files and whose instructions I followed for the installation), which you can download from one of many sources here under the "FILES FOR THIS GUIDE" section at the top of the page. After you've downloaded the zipped patch files, unzip the archive and drag total of the contents of the archive to your desktop (it should contain two files and three folders in total).

    UPDATE: We've removed direct links to the forum post containing the patch files on the OSx86 Scene Forum.

    Now open the shell script in your favorite text editor. At the top of the file, supplant XXX with your username on your Mac (so that it reflects the path to your current desktop). For example, mine would discover like:


    While we're at it, let's edit the file as well. This time, edit the fourth and fifth lines at the top of the file to discover devotion this:

    PATCH="/Volumes/LeopardPatch/leopatch/" # path to the patched extensionsLEO="/Volumes/Leopard" # path to Leopard installation

    Save and close both files.

    Finally, it's time to patch the DVD. Open up Terminal, ilk sudo -s, then enter your administrative password (your login password). Then ilk cd Desktop and hit Enter. Now you're ready to apply the patch. preserve in reason that you'll requisite plenty of space on your arduous drive to achieve the patch. I had around 20GB of free space when I did it, though I'm positive you could fetch away with less. To execute the patch, type:


    and hit Enter. The patch will now execute, which means you've got some time on your hands. You've been working your ass off up until this point, though, so kick back and relax for a bit. I didn't believe a clock on it, but I'm pretty positive the patch took at least an hour on my MacBook Pro.

    If you believe danger with the patch and you've got less free space, try freeing up some arduous drive space and trying again. When the patch has successfully completed, you should view a fresh file on your desktop: Leo_Patched_DVD.iso weighing in somewhere around 4,698,669,056 bytes. Now we've got to char this image to a DVD.

    Luckily the patch removes lots of unnecessary files so we've shrunk the almost 7GB install DVD to 4.38GB, just enough to apt on a single-layer DVD. To char the image, insert a blank DVD, open up Disk Utility, select the Leopard_Patched_DVD.iso file in the sidebar, and then click the char button. Once it's finished, you're finally ready to proceed to the installation.

    But just one more thing before you do. Copy the patch files that they just unzipped from your desktop to a USB thumb drive and designation the drive LeopardPatch. We'll requisite these files for the post-installation patch that we'll apply later.


    If you've followed total of the steps up to this point, you should now exist ready to fire up the patched Leopard install DVD. So power on your Hackintosh, insert the DVD, and let the boot process originate (you did bethink to set the DVD drive as the first boot device, right?). You'll exist prompted to press any key to start the installation or hit F8 for options. Hit F8.

    You'll now view the boot: prompt. Enter -v -x and press Enter. (Don't put a question to me why, but this is the only route the install DVD would boot for me. Not using these options caused the boot to hang indefinitely every time.) You should now view lots of text scrolling over your monitor. You may even view some daunting errors. Don't exist alarmed; just let it continue. After several minutes, the graphical Leopard installer should exist staring you in the face.

    Format the install drive: I know that you're raring to install now that you're finally here, but there's one thing they requisite to achieve first: Format their arduous drive so that it's prepared to receive the Leopard installation. So travel to Utilities in the menu bar and select Disk Utility (if you don't believe a working mouse yet, you can quiet access the menu bar from the keyboard). Once Disk Utility fires up, it's time to format the drive. Here's how:

    Article preview thumbnail Access the Dock and Menu Bar from Your Keyboard

    Mac users: Access your menu bar and launch dock items from the comfort of your keyboard with the…

    Read more Read
  • Select your arduous drive in the left sidebar.
  • Click on the tab labeled Partition.
  • Select a 1 partition Volume Scheme, designation the volume Leopard, and pick Mac OS Extended (Journaled) as the format.
  • Last, click the Options button and pick Master Boot Record as the partition scheme.
  • Now that your drive is ready, so are you.

    Install Leopard: This really is the easiest part-just succeed the on-screen instructions and pick your newly created Leopard partition as the install destination. Then, before you acquire that final click on the Install button, click Customize and de-select Additional Fonts, Language Translations, and X11. These components were removed so they could apt everything on the patched DVD, so they won't exist installing them now.

    Now you're ready. Click install and grab a quick drink. In around 10 minutes, Leopard should believe installed, leaving you with just one more step before you're running with the Leopard.


    After the installation completes, your computer will automatically restart. Unfortunately you're not ready to boot into Leopard just yet-you've got one thing left to do. So insert the thumb drive you copied the patches to and, just devotion terminal time, hit F8 when prompted by the DVD. Again, enter -v -x at the boot prompt and hit Enter. When the install disc finally loads, travel to Utilities in the menu bar and select Terminal. It's time to apply the post-install patch.

    When terminal loads, ilk cd /Volumes/LeopardPatch at the prompt and hit Enter to navigate to the patch directory. Now, just devotion when you patched the install disc, type:


    ...and hit Enter. The script will shuffle and copy files about (answer yes when prompted), and when it's finished, you'll exist prompted to restart your computer. When your computer reboots this time, you're ready. It's time to boot into Leopard.

    OSx86 on Your Hackintosh

    Let your computer reboot, but exist positive to leave the install DVD in the drive. When the DVD prompts this time, just let the countdown time out. When it does, your installation of Leopard will automatically boot up. You've done it!

    From this point forward, you're running Leopard on your PC just as though you were running Leopard on a regular Mac. You'll exist jubilantly welcomed in a handful of languages as if Steve Jobs himself is shaking your hand for a job well done. total of your hardware should travail exactly as you'd expect. Your sound, networking, and video will total travail off the bat. (I haven't tested the motherboard's built-in wireless yet, but it reportedly works.) Your iPods will sync flawlessly, and CDs and DVDs read and char just as you'd expect.

    On the software front, Mail, Address Book, iTunes, and everything else I've tried so far travail flawlessly. Firefox is browsing, Quicksilver is doing its thing, Spaces are rocking, Stacks are stacking, Cover stream is flowing, and Quick discover is previewing. I haven't tried Time Machine yet, but the patch they used reportedly works with Time Machine as well.

    UPDATE: After you complete your install the first travel round, here's how to upgrade to OS X 10.5.1 (the first update to Leopard) in just a few simple steps.

    Article preview thumbnail Upgrade Your Hackintosh to OS X 10.5.1

    Click to viewA brace of weeks ago, I minute how I built a Hackintosh Mac on the cheap from start …

    Read more Read But Really, How Does It Work?

    I'm quiet stretching my legs in this fresh build, and I'm planning on bringing some benchmarks to the table soon so you believe a better view how this machine matches up to its Mac counterparts, but so far it's running devotion a champ. UPDATE: I benchmarked my Hackintosh against a Mac Pro and MacBook Pro and it stood up very well. Check out the benchmarks here. The only problem with the install at the flash is that it won't boot without the Leopard DVD in the DVD drive at boot-meaning that every time you reboot you'll requisite to acquire positive that the Leopard DVD is sitting in the DVD drive. It's not a dealbreaker for me by any means, but it's an annoyance. I've institute one post suggesting a workaround at the OSx86 forums (near the bottom of the first post in the thread), but I haven't tried it yet. If and when I do, I'll exist positive to post an update.

    Article preview thumbnail Hackintosh vs. Mac Pro vs. MacBook Pro Benchmarks

    Click to viewOn Tuesday I minute how I built a Hackintosh Mac from start to finish on the cheap,…

    Read more Read

    And that's that. It's a chore to set up, to exist sure, but it's too the most powerful Mac per dollar I've ever used. If you've got any undergo edifice a Hackintosh of your own or you've got any questions, let's hear them in the comments.

    Adam Pash is a senior editor for Lifehacker who loves a profitable hack and cherishes his Macintosh, so edifice a Hackintosh was a perfect fit. His special feature Hack attack appears every Tuesday on Lifehacker. Subscribe to the Hack attack RSS feed to fetch fresh installments in your newsreader.

    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 [47 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 [12 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 [746 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 [1530 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 [63 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 [368 Certification Exam(s) ]
    Mile2 [2 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 [36 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 [269 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 [11 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 :
    Issu :
    Dropmark-Text :
    Blogspot :
    RSS Feed : : :

    Back to Main Page

    Killexams 9L0-061 exams | Killexams 9L0-061 cert | Pass4Sure 9L0-061 questions | Pass4sure 9L0-061 | pass-guaratee 9L0-061 | best 9L0-061 test preparation | best 9L0-061 training guides | 9L0-061 examcollection | killexams | killexams 9L0-061 review | killexams 9L0-061 legit | kill 9L0-061 example | kill 9L0-061 example journalism | kill exams 9L0-061 reviews | kill exam ripoff report | review 9L0-061 | review 9L0-061 quizlet | review 9L0-061 login | review 9L0-061 archives | review 9L0-061 sheet | legitimate 9L0-061 | legit 9L0-061 | legitimacy 9L0-061 | legitimation 9L0-061 | legit 9L0-061 check | legitimate 9L0-061 program | legitimize 9L0-061 | legitimate 9L0-061 business | legitimate 9L0-061 definition | legit 9L0-061 site | legit online banking | legit 9L0-061 website | legitimacy 9L0-061 definition | >pass 4 sure | pass for sure | p4s | pass4sure certification | pass4sure exam | IT certification | IT Exam | 9L0-061 material provider | pass4sure login | pass4sure 9L0-061 exams | pass4sure 9L0-061 reviews | pass4sure aws | pass4sure 9L0-061 security | pass4sure coupon | pass4sure 9L0-061 dumps | pass4sure cissp | pass4sure 9L0-061 braindumps | pass4sure 9L0-061 test | pass4sure 9L0-061 torrent | pass4sure 9L0-061 download | pass4surekey | pass4sure cap | pass4sure free | examsoft | examsoft login | exams | exams free | examsolutions | exams4pilots | examsoft download | exams questions | examslocal | exams practice | | | |