Pass4sure Real Questions and study guide and dumps | braindumps | ROMULUS

Pass4sure 9L0-061 prep pack is designed to pass 9L0-061 certification exam There is no match of killexams.com on internet - braindumps - ROMULUS

Pass4sure 9L0-061 dumps | Killexams.com 9L0-061 real questions | http://tractaricurteadearges.ro/

9L0-061 MAC OS X 10.5 Troubleshooting

Study usher Prepared by Killexams.com Apple Dumps Experts


Killexams.com 9L0-061 Dumps and real Questions

100% real Questions - Exam Pass Guarantee with tall 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 real Questions

where am i capable of find retract a leer at usher for actual information brand recent 9L0-061 exam?
I am one a number of the tall achiever in the 9L0-061 exam. What a superb material they provided. Inside a quick time I grasped the entire lot on utter of the applicable subjects. It advance to breathe surely terrific! I suffered masses whilst making ready for my previous strive, but this time I cleared my exam very with out issues without tension and worries. It is virtually admirable mastering adventure for me. Thank you masses killexams.com for the real help.


Get %. ultra-modern information to prepare 9L0-061 exam. first-rate for you.
i used to breathe a lot disappointed in the ones days due to the fact I didnt any time to prepare for 9L0-061 exam prep because of my a few each day routine drudgery I ought to spend maximum time at the way, a long distance from my domestic to my drudgery region. i used to breathe so much concerned about 9L0-061 exam, due to the fact time is so near, then in the future my pal informed approximately killexams.com, that turned into the flip to my life, the reply of my utter troubles. I should upshot my 9L0-061 exam prep at the artery easily through the consume of my computer and killexams.com is so dependable and extremely good.


Can you believe that utter 9L0-061 questions I had were asked in real test.
word of mouth is a totally robust artery of advertising for a product. I say, whilst something is so desirable, why no longerdo some tall quality publicity for it I would really fondness to unfold the phrase about this one of a nature and truly high-quality killexams.com which helped me in acting outstandingly rightly in my 9L0-061 exam and exceeding utter expectancies. i would roar that this killexams.com is one of the maximum admirable on line coaching ventures i acquire ever stumble upon and it merits quite a few recognition.


Pleasant sustain with , pass with tall score.
It changed into very encourging revel in with killexams.com team. They informed me to attempt their 9L0-061 exam questions as soon asand neglect failing the 9L0-061 exam. First I hesitated to apply the material because I afraid of failing the 9L0-061 exam. But once I informed by my buddies that they used the exam simulator for thier 9L0-061 certification exam, i purchased the guidance percentage. It gyrate out to breathe very reasonably-priced. That changed into the number one time that I satisfied to consume killexams.com education material after I got 100% marks in my 9L0-061 exam. I in fact understand you killexams.com team.


what number of questions are requested in 9L0-061 exam?
I efficiently comprehended the difficult issues fondness delivery Competence and content information effects from killexams. I efficaciously marks 90% marks. utter credit to killexams.com. I was trying to find a reference usher which helped me in planning for the 9L0-061 exam. My occupied calendar just authorized me to more time of hours by means of using one system or each different. Via reserving and purchasing the killexams.com Questions/solutions and exam simulaotr, I had been given it at my entryway venture inner one week and began making plans.


Get pack of information to prepare 9L0-061 exam. Best for you.
9L0-061 Exam was my purpose for this yr. A very lengthy recent Years resolution to position it in complete 9L0-061 . I without a doubt thought that analyzing for this exam, making ready to skip and sitting the 9L0-061 exam would breathe simply as loopy because it sounds. Thankfully, I discovered a few critiques of killexams.com online and decided to apply it. It ended up being absolutely really worth it as the package had protected each question I got on the 9L0-061 exam. I passed the 9L0-061 definitely pressure-unfastened and came out of the trying out hub lighthearted and comfortable. Definitely worth the money, I suppose this is the exceptional exam fondness viable.


What acquire a observe manual upshot I requisite to skip 9L0-061 exam?
I prepare human beings for 9L0-061 exam undertaking and advert utter in your web web page for similarly advanced making equipped. That isdefinitely the notable internet site on-line that gives solid exam material. That is the awesome asset I recognize of, as i havebeen going to severa locales if no longer all, and i acquire presumed that killexams.com Dumps for 9L0-061 is honestly up to the mark. Plenty obliged killexams.com and the exam simulator.


Weekend retract a leer at is enough to skip 9L0-061 examination with I were given.
I passed the 9L0-061 exam thanks to this bundle. The questions are accurate, and so are the subjects and test courses. The format could breathe very convenient and permits you to examine in one-of-a-kind codecs - practising at the trying out engine, studying PDFs and printouts, so that you can exercise session the style and stability thats prerogative for you. I personally loved practising on the trying out engine. It completely simulates the exam, thats especially vital for 9L0-061 exam, with utter their specific query sorts. So, its a bendy but trustworthy artery to attain your 9L0-061 certification. Ill breathe using killexams.com for my subsequent stage certification checks, too.


What is needed to leer at and pass 9L0-061 examination?
killexams.com is straightforward and stout and you may pass the exam if you undergo their questions and answers. No phrases to categorical as i acquire passed the 9L0-061 exam in first try. a few different questions banks too are availble inside the market, but I sense killexams.com is exceptional amongst them. i am very assured and am going to apply it for my different test additionally. thanks lots ..killexams.


it's miles proper source to find 9L0-061 real exam questions paper.
I prepared the 9L0-061 exam with the befriend of killexams.com Apple test preparation material. it was complicated but overall very helpful in passing my 9L0-061 exam.


Apple MAC OS X 10.5

how to Revisit each edition of Mac OS X from your Browser | killexams.com real Questions and Pass4sure dumps

The Aqua GUI in Apple’s operating methods has passed through a magnificent evolution due to the fact that March of 2000, when it found its manner into OS X 10.0, and too you might possibly breathe stunned at just how distinctive every thing looks now. thanks to the newly launched Aqua Screenshot Library, that you would breathe able to revisit every version of OS X (and macOS) in the course of the years and consider the gradual evolution of Apple’s working device—all from your browser.

The huge gallery is the newest drudgery by artery of 512 Pixels, an internet library that attempts to preserve tabs on utter issues Apple (together with the Mac’s many wallpapers). The Aqua Screenshot Library, as creator Stephen Hackett notes, offers a finished appear on the history of Apple’s operating systems, which covers its bounce to from bulkier CRTs to compact, LED-backlit displays; Apple’s a variety of font alterations through the years; and Apple’s creep from disc-primarily based operating programs to (free) digital downloads.

Let’s retract a leer at some of these primary Mac milestones.

Mac OS X 10.0 (“Cheetah”)

March 24, 2001, marked the primary official release of the Mac OS X operating system, following a public beta the 12 months earlier than. Hackett notes that its 128MB reminiscence requirement turned into “more than most Mac users had in their systems at the time.” This result in many complaints concerning the OS’s gradual performance and tall aid demand. The Cheetah interface retained the pin-striped menu and window design from the beta, however utter started the pussycat-primarily based naming style which might closing as much as version 10.eight, “Mountain Lion.”

Mac OS X Leopard (10.5)

The final months of 2007 introduced some massive adjustments to OS X. The free up of Leopard saw Aqua tackle a lots extra streamlined look, with utter home windows now defaulting to a single, simple gray design, as neatly as the debut of a redesigned Finder device. earlier than this, several apps—and distinctive types of OS X—had diverse UI designs (for more desirable or worse). With Leopard’s free up, OS X begun to appear to breathe greater uniform. most significantly, it changed into the first edition to encompass those rad, house-primarily based backgrounds.

OS X Mountain Lion (10.8)

Mountain Lion was the first version of OS X to compass after Steve Jobs’ dying, and it focused on aligning Mac computers with the late CEO’s other primary contribution to the tech trade: the iPhone. The 2011 OS X update, Mac OS X Lion (10.7), kicked off Apple’s merging of iOS aesthetics into OS X, and the enterprise doubled down with Mountain Lion. rig and purposes were renamed after iOS features, and Apple introduced some wee visible and input adjustments to bridge the two working techniques even closer together—in fashion, as a minimum.

OS X Mavericks (10.9)

Mavericks turned into a tremendous business pivot for Apple, because it changed into the primary version of the OS the enterprise released for free of charge, offered to clients as an upgrade by artery of the App hold in October 2013. Apple hasn’t gone returned to paid operating methods in view that—thankfully. Mavericks turned into additionally the first edition of OS X to consume non-tom cat nomenclature. It too ditched the galactic tradition theme for California landscapes, which they can utter disagree was a stout blunder. right?

macOS Sierra (10.12)

version 10.12 of Apple’s operating rig for the Mac is most is exceptional for its massive rebranding. Apple dropped the “OS X” identify fully during this unencumber, instead calling its operating rig “macOS” to align it the business’s working systems on different systems: iOS, watchOS, and tvOS. 

searching the Aqua Screenshot Library is a fun system to espy just how some distance macOS has come, specially to leer how Apple’s design priorities alternate between the predominant releases. despite the fact, the Aqua Screenshot gallery is just one of 512 Pixels’ many initiatives to try. breathe positive to poke around the other Apple-themed collections Hackett has assembled over the years, too, together with the incredible 512 Pixels YouTube channel.


a artery to restoration Mac OS X version 10.5 Leopard | killexams.com real Questions and Pass4sure dumps

Snow Leopard debuted in 2007.

Snow Leopard debuted in 2007.

Win McNamee/Getty photos information/Getty photographs

Mac OS X edition 10.5 Leopard offers the most synchronous edition of the Macintosh working system that runs on many PowerPC-primarily based Apple computer systems. fondness outdated and later versions of the Mac OS, Leopard includes utilities which you could consume to troubleshoot and maintain your OS and your difficult pressure. To merit to the bottom of freezes and crashes, or easily provide your Mac a tuneup, start with Apple's built-in protection tools before you compass for third-birthday party restoration purposes or reinstall your OS.


While it is very difficult stint to elect trustworthy certification questions / answers resources with respect to review, reputation and validity because people merit ripoff due to choosing wrong service. Killexams.com manufacture it positive to serve its clients best to its resources with respect to exam dumps update and validity. Most of other's ripoff report complaint clients advance to us for the brain dumps and pass their exams happily and easily. They never compromise on their review, reputation and quality because killexams review, killexams reputation and killexams client self-confidence is captious to us. Specially they retract pervade of killexams.com review, killexams.com reputation, killexams.com ripoff report complaint, killexams.com trust, killexams.com validity, killexams.com report and killexams.com scam. If you espy any mistaken report posted by their competitors with the designation killexams ripoff report complaint internet, killexams.com ripoff report, killexams.com scam, killexams.com complaint or something fondness this, just hold in mind that there are always unfavorable people damaging reputation of pleasurable services due to their benefits. There are thousands of satisfied customers that pass their exams using killexams.com brain dumps, killexams PDF questions, killexams rehearse questions, killexams exam simulator. Visit Killexams.com, their sample questions and sample brain dumps, their exam simulator and you will definitely know that killexams.com is the best brain dumps site.

Back to Braindumps Menu


C2010-597 braindumps | 212-055 cheat sheets | HP0-P11 questions and answers | C2090-541 exam prep | 090-091 brain dumps | 9A0-350 brain dumps | 000-962 dumps | P2170-033 rehearse exam | 000-208 exam prep | 310-230 test prep | 117-199 study guide | VCXN610 rehearse Test | JN0-660 sample test | 000-226 free pdf | C2040-412 rehearse test | LOT-925 mock exam | C2020-013 test prep | C2170-051 study guide | 250-371 free pdf | M70-101 test prep |


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

9L0-061 Dumps and rehearse programming with real Question
We are doing fight to giving you actual MAC OS X 10.5 Troubleshooting exam questions and answers, close by clarifications. Each on killexams.com has been affirmed by Apple confirmed authorities. They are extraordinarily qualified and affirmed individuals, who acquire various occasions of master encounter related to the Apple exams.

Are you searching out Apple 9L0-061 Dumps of actual questions for the MAC OS X 10.5 Troubleshooting Exam prep? They provide most updated and considerable 9L0-061 Dumps. Detail is at http://killexams.com/pass4sure/exam-detail/9L0-061. They acquire compiled a database of 9L0-061 Dumps from actual exams so as to permit you to prepare and pass 9L0-061 exam on the first attempt. Just memorize their and relax. You will pass the exam. killexams.com Huge Discount Coupons and Promo Codes are as beneath;
WC2017 : 60% Discount Coupon for utter exams on website
PROF17 : 10% Discount Coupon for Orders extra than $69
DEAL17 : 15% Discount Coupon for Orders greater than $99
DECSPECIAL : 10% Special Discount Coupon for utter Orders

In case you're searching out 9L0-061 rehearse Test containing real Test Questions, you are at legitimate place. They acquire aggregated database of questions from Actual Exams keeping thinking the desist goal to enable you to merit ready and pass your exam on the first attempt. utter preparation materials at the site are Up To Date and tested by their specialists.

killexams.com give front line and a la mode rehearse Test with Actual Exam Questions and Answers for pristine syllabus of Apple 9L0-061 Exam. rehearse their real Questions and Answers to ameliorate your comprehension and pass your exam with tall Marks. They ensure your accomplishment in the Test Center, securing the majority of the subjects of exam and manufacture your information of the 9L0-061 exam. Pass four beyond any doubt with their exact questions.

100% Pass Guarantee

Our 9L0-061 Exam PDF incorporates Complete Pool of Questions and Answers and Brain dumps verified and built up comprehensive of references and references (wherein appropriate). Their objective to gather the Questions and Answers isn't in every case best to pass the exam toward the start endeavor anyway Really ameliorate Your information about the 9L0-061 exam subjects.

9L0-061 exam Questions and Answers are Printable in tall quality Study usher that you could download in your Computer or some other instrument and start making prepared your 9L0-061 exam. Print Complete 9L0-061 Study Guide, convey with you while you are at Vacations or Traveling and fondness your Exam Prep. You can merit prerogative of passage to state-of-the-art 9L0-061 Exam out of your online record each time.

inside seeing the true blue exam material of the brain dumps at killexams.com you could without various a develop expand your proclaim to distinction. For the IT masters, it's miles major to adjust their abilities as appeared by system for their drudgery require. They manufacture it essential for their clients to hold certification exam Thanks to killexams.com certified and true to goodness exam material. For an astonishing predetermination in its area, their brain dumps are the brilliant decision. A decent dumps making is an essential area that makes it limpid for you to retract Apple certifications. Regardless, 9L0-061 braindumps PDF offers settlement for candidates. The IT declaration is an essential troublesome attempt on the off casual that one doesn't find usurp course as evident usher material. In this manner, they acquire genuine and updated material for the organizing of certification exam. It is fundamental to obtain to the usher fabric if one wants toward hold time. As you require packs of time to search for restored and genuine exam material for taking the IT accreditation exam. if you find that at one area, what can breathe higher than this? Its just killexams.com that has what you require. You can store time and hold a key separation from problem if you buy Adobe IT accreditation from their site on the web.

killexams.com Huge Discount Coupons and Promo Codes are as under;
WC2017: 60% Discount Coupon for utter exams on website
PROF17: 10% Discount Coupon for Orders greater than $69
DEAL17: 15% Discount Coupon for Orders greater than $99
DECSPECIAL: 10% Special Discount Coupon for utter Orders


Download your MAC OS X 10.5 Troubleshooting Study usher straight away subsequent to looking for and Start Preparing Your Exam Prep prerogative Now!

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


Killexams 117-201 bootcamp | Killexams 000-138 exam prep | Killexams CAT-340 exam prep | Killexams 250-101 study guide | Killexams HCE-5710 test prep | Killexams HP0-265 dumps | Killexams A2070-580 free pdf | Killexams HP0-M45 brain dumps | Killexams NS0-153 braindumps | Killexams E20-060 free pdf download | Killexams 70-475 real questions | Killexams HP0-S01 questions and answers | Killexams C9020-560 free pdf | Killexams HP2-E49 rehearse test | Killexams A2010-599 cheat sheets | Killexams 000-082 dumps questions | Killexams HP0-704 braindumps | Killexams 650-294 rehearse test | Killexams 1Y0-309 rehearse questions | Killexams 000-715 rehearse exam |


killexams.com huge List of Exam Braindumps

View Complete list of Killexams.com Brain dumps


Killexams 650-575 exam questions | Killexams CCBA cram | Killexams HP2-H35 rehearse test | Killexams HP0-D31 real questions | Killexams MB3-214 rehearse Test | Killexams 1Z1-456 braindumps | Killexams 000-038 bootcamp | Killexams 000-083 cheat sheets | Killexams 000-415 test prep | Killexams M9560-231 examcollection | Killexams GB0-280 test questions | Killexams 132-S-100 real questions | Killexams 000-324 questions answers | Killexams 000-M07 pdf download | Killexams HP0-S30 sample test | Killexams VCP-101E rehearse questions | Killexams BCCPA braindumps | Killexams 156-315-71 mock exam | Killexams JN0-341 questions and answers | Killexams ES0-007 test prep |


MAC OS X 10.5 Troubleshooting

Pass 4 positive 9L0-061 dumps | Killexams.com 9L0-061 real questions | http://tractaricurteadearges.ro/

How to Repair Mac OS X Version 10.5 Leopard | killexams.com real 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. fondness previous and later versions of the Mac OS, Leopard includes utilities you can consume to troubleshoot and maintain your OS and your difficult drive. To resolve freezes and crashes, or simply give your Mac a tuneup, start with Apple's built-in maintenance tools before you compass for third-party repair applications or reinstall your OS.


Mac OS X 10.5 Leopard: the Ars Technica review | killexams.com real questions and Pass4sure dumps

reader comments with 0 posters participating Share this story
  • Share on Facebook
  • Share on Twitter
  • Share on Reddit
  • 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 upshot with 18 months of development time instead of 12, I tremble to contemplate what they could upshot with a complete 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 tall expectations for 10.5 back in 2005, they've only grown as the months and years acquire passed. Apple's tantalizingly categorical withholding of information about Leopard just fanned the flames. My status of mind leading up to the release of Leopard probably matches that of a lot of Mac enthusiasts: this better breathe good.

    Maybe the average 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 acquire been five releases of Mac OS X in the time it's taken Microsoft to deliver Windows Vista.

    But far breathe it from me to consume Microsoft to calibrate my expectations. Leopard has to breathe something special. And as I espy 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 breathe trolling through the internals to espy what's really changed.

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

    This review will cover utter of those angles, in varying degrees of depth. fondness utter other Mac OS X releases before it, Leopard is too stout for one review to cover everything. (After all, Tiger's internals solitary 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 absorbing to me while too trying to provide a reasonable overview for the non-geeks who've decided to retract the plunge into an Ars Technica review. (Hi, Mom.)

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

    Background

    This is the fragment where I usually link to the entire history of Ars Technica's Mac OS X coverage, from the hoary DP2 in 1999 utter the artery 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 contemplate it's time to manufacture a cleanly shatter from the past. While Mac OS X is soundless changing as snappy as it ever has, I feel fondness the concept of Mac OS X as a product has settled down in the minds of users. What was once seen as a fanatical 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 acquire gone through utter five stages of grief over what's been lost—some of us multiple times. Though what's been found in Mac OS X has long overshadowed those concerns, leisure assured that they are not forgotten. The dissimilarity now is that enough time has passed to allow them (I hope) to shed utter semblance of nostalgia and breathe seen as they always should acquire been, as captious statements about the current status of Mac OS X, complete stop.

    Moving on to hardware, can you believe I soundless don't acquire an Intel Mac in the house? Okay, maybe it's not so difficult to believe if you befall 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 artery to my house as you read this, alas it did not manufacture it in time for this review. On the sparkling side, my relatively static hardware collection allows for pleasurable 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 difficult 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 difficult 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 expect that Apple is spending most of its time on Intel-specific performance enhancements, but even if this were not the case, Intel's CPUs acquire long since left behind the final PowerPC chips used in Macs in terms of utter 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 pleasurable news, I suppose, is that Leopard certainly isn't hamstrung on PowerPC Macs. More on performance later. For now, let's talk fluff.

    Branding

    Big cat names are soundless 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 epic 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 recent release. I guess this is yet another symptom of a maturing product. I fondness the space theme. fondness 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 apple.com.

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

    Installation

    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 retract this utter 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 recent look

    There's been mention of a "new look" in most post-10.0 Mac OS X reviews, and with pleasurable reason. With each release of Mac OS X, Apple has chosen to revise the leer 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 factor 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 recent 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 acquire multiple looks for, say, a button as long as it's soundless 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 acquire my own reasons for being down on the status of Mac OS X's appearance through the Tiger era. withhold simply, after six years of tweaks, I'm ready for a stout change.

    I touched on this in the introduction, and it colors my entire view of Leopard: I'm looking for a discontinuity, a recent beginning, in utter aspects of the OS. This is unfair (and you'll espy 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; utter the "top secret" hype certainly fanned those flames.

    Just to breathe clear, I'm talking only about the appearance of the OS for now. I certainly wasn't expecting stout changes to the interface behavior—a crazy iPhone-like multitouch reimagining, pervasive voice or handwriting recognition, and so on. But there's plenty of play 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. recall what that was like?

    Introducing Aqua.

    Aqua hit fondness a ton of bricks, and it wasn't just because it was such a shatter from the past. Aqua was a comprehensive overhaul of the leer 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 roar 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 leer of the OS, they too compromised the overall aesthetic design. What started as a (flawed) drudgery 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 expect Leopard to wipe the slate cleanly and, further, to succeed where Aqua failed by being at once a drudgery of craft 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 merit up on stage and say, "Aqua's had a pleasurable 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 recent designation meant a recent beginning.

    Leopard's recent look: the reality

    Leopard's appearance is not a recent beginning, but it is soundless 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 fondness this (mouse over for graphite).

    Notice that I didn't roar 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 kind of window in Leopard, and you're looking at it. This slate gray appearance replaces utter other benchmark window styles. Existing applications that examine for metal or unified windows will merit this appearance instead.

    Custom appearances fondness those used by some of Apple's applications retain their unique looks. (Yes, Garage troop is soundless 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 universal principles, but there was one intuition (aside from my crave for radical change) that the multiplying window appearances bothered me. The stout problem was that it was never limpid which appearance to consume 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 penniless choices and some repugnant applications.

    And, verity breathe told, if there's no coherent intuition for the consume of a recent window appearance, then why does it requisite to exist at utter as a system-wide option for utter developers? I'm not positive what to convene the recent One true Window Appearance in Leopard (Aqua? Slate?), but I'm lighthearted someone at Apple finally made a choice and stuck with it.

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

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

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

    There's too been a welcome revision to the leer 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 soundless a bit of an oddity, coming in microscopic clumps as they do. The Safari-style square toolbar buttons are more common, and much nicer looking. The downhearted (mouse-down) status of these buttons is particularly nice.

    The idle status of the recent windows is now more clearly distinguished from the vigorous state. idle windows fade to a much lighter umbrage of gray. The switch from sunless to light gray can actually breathe a bit jarring when it happens to big windows.

    Inactive windowInactive window

    It takes a while to merit used to these changes. Long-time users used to looking for "dark windows" to pick out Safari, for example, will breathe 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 recent window leer is overwhelmingly a net win. It eliminates developer and user confusion, sweeps up and disposes of several repugnant (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 recent window style, because it turns out to breathe 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 recent leer (continued)

    Arguably, the recent window appearance was too an arbitrary change. (Why sunless gray? Why not standardize on the veteran "unified" appearance instead?) But in the imposing scheme of things, the particular design chosen is not as captious as the fact that a choice was made. Of course, it could acquire been an repugnant choice (I don't contemplate it is) or it could acquire suffered from terrible usability issues (I don't contemplate it does), but at least the intent was a pleasurable one: to simplify.

    The selfsame cannot breathe said for a several other significant changes to the leer of Leopard's interface. Their intent is unclear at best, they intuition usability issues where nonexistent 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 benchmark controls, the folder icon is the most ubiquitous piece of reused art. A lot of people didn't fondness the folder icon introduced in Mac OS X 10.0 and carried through essentially unchanged to Tiger.

    As the leer 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 utter paltry issues, and subjective ones at that. Most Mac users were not clamoring en masse for recent folder icons.

    Leopard folder icon. Enlarge / Leopard folder icon.

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

    The leer isn't bad, right? It's soundless 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 wretchedness starts when you espy what the "special" folder icons leer fondness (Applications, Documents, etc.)

    Leopard special folder iconsLeopard special folder icons

    The embossed leer is attractive, but it's too incredibly low-contrast and pretty much impossible to manufacture out at wee sizes. I hold several special folders in my Dock, and I rely on being able to pick them out quickly, even at wee sizes. Here's how they leer 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 dissimilarity 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 recent folder icons at Indie HIG (a site whose mere actuality 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 factor that maybe could acquire used some freshening up, but it was far from broken. Apple's gone and made it worse in a artery 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 fade under the knife is the Dock. Now here's an interface factor with some serious, long-standing issues, but recall 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 manufacture this more "Leopard"? We'll acquire to abate 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 breathe positive to intuition some visibility issues. Next, the already-small triangles that issue under running application icons can probably breathe further obscured. Let's supplant those with fuzzy blue orbs. Also, if they can in a artery manufacture the Dock less space-efficient, that'd breathe a plus. But they too acquire to jazz it up, don't we?

    I know! Let's manufacture it pseudo-3D! And finally, the obligatory demo feature: reflections everywhere! Reflections on the fuzzy blue orbs, a reflection highlight line running across the entire Dock, and—the coupe de grâce—real-time reflections of any windows that creep 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 unfavorable Ideas, again addressed more thoroughly by others. This is fondness the folder icon situation utter over again, but even worse. It's an illustration of sacrificing usability for the sake of purely aesthetic changes that are far from universally loved (to withhold it mildly) in isolation, and inexcusable given the cost paid for them.

    Seriously, pseudo-3D? Really? If a compulsion for gaudiness must breathe quenched, at least try to confine such exercises to more obscure features. Don't scribble utter over the second-most visible interface factor in the entire OS fondness 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 wee 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 leer of the horizontal Dock are too the most likely to acquire their Docks on the side. Either way, the presence of an alternate leer is a tacit admission that the default design has problems.

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

    % defaults write com.apple.dock no-glass -boolean YES % killall Dock

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

    Dock labelsDock labels

    Did I roar "second-most visible interface element" earlier? Oh, you espy 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 fade there, I know. "The menu bar? Surely they didn't... I mean, what's to change there?" Oh yes, buckle your straightjackets; they acquire 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 breathe 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 breathe fondness congratulating someone for extinguishing the left half of his cadaver after intentionally lighting himself on fire.

    The rationale proffered by Apple for the consume 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 factor in the entire interface.

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

    Why, Apple? Why!? Was there something horribly wrong with the existing menu bar—something that could only breathe fixed by injuring its legibility? fondness the folder icons and the Dock, it's not so much a mortal 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 befall in a meeting for this notion to merit the green light? Is this the sunless side of Steve Jobs's iron-fisted rule—that there's always a risk that an obviously ridiculous and horrible notion will breathe expressed in his presence and he'll (inexplicably) latch onto it and manufacture it happen? Ugh, I don't even want to contemplate about it.

    In the meantime, there's positive to breathe 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 acquire been saving Apple's bacon by doing what Apple should acquire done itself. I already requisite several "hacks" to breathe elated in Tiger, but a hack for the menu bar? It's just getting ridiculous.

    I guess I should try to roar something nice about the Leopard menu bar too. Well, the recent 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 acquire a subtle change: rounded corners. Only the lower corners are rounded in drop-down menus, while utter 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 stout fan of rounded corners (round rects forever!) I don't fondness them in this particular location; I contemplate it makes drop-down menus in particular leer less crisp. But at least the change has no detrimental upshot on usability and isn't aggressively ugly.

    The recent menu highlight color is a deep, affluent 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 roar about the recent leer in Leopard, but because the things I acquire covered span the scope of quality. The new, standardized window style makes the biggest visual impact and is the best aspect of the recent design. At the other desist of the spectrum are the baffling alterations and adornments that manufacture Leopard less usable and (in many cases) less pleasant to leer at. There are wee visual improvements in individual applications, but the overall leer of the OS proper is foundering.

    I was ready for an all-new leer 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 manufacture mistakes, let them breathe made in service of a truly daring design. I'm willing to forgive, and even to leer 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 upshot not forgive.

    The Kernel

    Let's fade in the antithetical direction entirely and dive into the core of the OS. We'll drudgery their artery 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 utter previous kernels) and wouldn't roar why. Many theories sprang up to fill the void. I, of course, had my own pet theory.

    The most rational intuition that I can contemplate 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 dead end, and therefore not worth the endeavor to pretty up and publish.

    Presumably, utter of the major drudgery 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 recent kernel entirely, or maybe it has significant changes to advocate virtualization more efficiently, or something in between. Apple seems to breathe 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 breathe along the captious 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 breathe very surprised if there's no stout kernel-related technology or announcement at WWDC. That said, I don't espy any pressing requisite for major kernel shenanigans in Leopard, just more of the selfsame kinds of improvements that came in Tiger. Maybe no stout announcement really would breathe the best practicable outcome.

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

    A lot of the kernel rumor craziness had its origins in the notion that Mac OS X is a penniless performer at the kernel level 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 verity 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, upshot they not bleed?—which may elaborate 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 manufacture the software at the higher levels leer good. If improving the performance of some tiny aspect of the kernel tenfold does not provide a measurable performance extend for some user-visible feature or task, it's not an efficacious consume of development time, benchmark bragging rights breathe damned.

    That's not to roar 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 upshot well on LMBench, Solaris does well on libmicro, and so on. This is not surprising; the choice of benchmark determines where optimization is done. Apple's determination to measure kernel performance "from the top" by looking at the deportment of the real applications running on the complete OS dictates which aspects of the kernel merit the most attention.

    In Mac OS X in general, and in Leopard in particular, improvements to scheduling and latency are important. There's a stout dissimilarity 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 part chips, each with two CPU cores). Bouncing a process from one CPU to another is unfavorable for performance; the on-chip caches don't merit a casual to properly warm up. But multiple cores on the selfsame chip often participate some caches. A hierarchy of process queues in the kernel created with this information 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 prerogative now and which are safe to swap out to disk. When it comes time to swap to disk, Leopard will (finally!) dynamically earmark swap files, which means that you should merit some disk space back when the recollection pressure abates.

    Resource limits, the bane of my actuality in Tiger and earlier, are dynamic where practicable in Leopard. These are things fondness 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 unfavorable ways when you can't open any more files, for example.

    I routinely hasten into these limits in Tiger and acquire often been forced to retract heroic measures to extend them. A few of the defaults acquire too increased in Leopard (e.g., the default maximum number of processes per user has increased from 100 to 266. I'll soundless hold mine over 2000, thanks). And for pleasurable measure, there are even a few recent limits on previously unlimited resources fondness resident and wired recollection sizes.

    The Leopard kernel too has a recent "sandboxing" system which forces inescapable processes to hasten 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 unpretentious text files (examples can breathe found in /usr/share/sandbox) and are applied to many system services in Leopard, including Bonjour, Quick Look, Spotlight, NTP, and many others.

    DTrace

    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 vein of shrewdly identifying and adopting best-of-breed open-source projects and has completed the substantial stint 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 bizarre artery that it creates recent opportunities for Apple to befriend utter programmers, not just kernel hackers.

    To understand how DTrace helps kernel developers, consider the following scenario. Let's roar you're a developer working on some aspect of process creation in the kernel. To befriend during your development, you'd fondness some sort of notification every time a recent process is created. So you find the function in the kernel that creates a recent process, and you add a bit of your own code to the nascence of that function 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 vigorous at the selfsame time.

    So, being the pleasurable microscopic programmer that you are, you advance up with a more universal solution. At each point where some debugging code may breathe useful, you wrap the code in a conditional expression that asks, "Should this piece of debugging breathe turned on prerogative now?"

    This seems fondness a pleasurable solution until you've filled the kernel with these snippets. recall that the kernel, by its nature, tends to hold code that executes very quickly and very frequently. A tiny check to espy if a particular piece of debugging should breathe turned on may only retract 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 real 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 utter these checks cannot breathe left in the finished product.

    The obvious solution is to transmogrify 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 utter 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 drudgery with a special "debug build" that may breathe laggard but which contains utter 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 nonexistent 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 real time on a running kernel.
  • Near-zero overhead when not in use. The impact of disabled debugging code is so wee that utter such code can breathe left in production kernel builds.
  • Programmers reading this will breathe forgiven for cringing a bit at the smell of self-modifying code, but my recommendation is to just close your eyes and contemplate 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 illustration that prints a notification every time a recent process is created.

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

    The output looks fondness this.

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

    Here's another one, slightly more complicated. It waits for the ls program to manufacture the stat() system call, then traces the execution of this convene 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 microscopic text files with script-like bang-pound lines using this eerie C-like language and you acquire essentially free reign to grope utter over the kernel. (You acquire to breathe root to hasten DTrace at all, for obvious reasons.)

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

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

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

    (Debug kernel builds that hold a complete complement of symbols and other metadata are soundless useful. DTrace does not supplant them. What it does upshot is provide an unprecedented level 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 merit 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 forgive me, I'm going to hold calling it Xray for the leisure 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 aptitude to record and play back a chain of actions. Mmm... automated GUI-based performance regression testing.

    DTrace and Xray invite pleasurable questions. "How many files does my application open on launch?" "How many times is a particular function called?" "What does the recollection usage of my application leer fondness over time?" DTrace and Xray manufacture the previously daunting stint of answering these questions almost paltry and (dare I roar 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 befriend but lead to better, faster, more stable applications—from third-party developers as well as from Apple itself. And it's utter 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 stout step down that path. The addition of DTrace is the most significant change. It's an entirely recent feature and was not created with Mac OS X's kernel in mind. DTrace will too acquire the biggest impact on the development process and by extension on the nature and quality of applications available to users.

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

    64-bit

    Tiger included advocate for 64-bit processes, but only if they did not consume 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, utter Macs will involve 64-bit CPUs. The introduction of 64-bit versions of utter Mac OS X subsystems (Carbon, Cocoa, Core Foundation, QuickTime, Quartz, etc.) seems inevitable.

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

    Well, it certainly has been a while since Tiger, and guess what? Leopard is the release that goes 64-bit utter in one shot... with a few caveats. But before getting to that, I want to revisit the notion 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 universal 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 merit larger registers, they merit more registers, plus a more modern calling convention and more addressing modes.

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

    I roar "x86 application" and "PowerPC application," but of course Leopard, fondness Tiger, supports what Apple calls Universal Binaries. These are lone executable files that hold code for utter supported architectures: 32-bit Power PC, 64-bit PowerPC, 32-bit x86, and 64-bit x86_64. Here's an illustration from Leopard.

    % cd /Developer/Applications/Xcode.app/Contents/MacOS % 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 acquire it: the stout 64-bit tidings in Leopard is that GUI applications can now breathe 64-bit. Leopard applications can too specify an architecture preference order as well as a minimum OS version for each architecture. utter of this 64-bit goodness comes in a lone 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 breathe 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 recent 64-bit world

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

    For those of you that don't know, HIToolbox is the most modern and most captious fragment of the API more commonly known as Carbon. The man on stage at this session began by adage the following, which I'm providing in audio contour so you can merit the full, nuanced sustain of this moment.

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

  • The future of HIToolbox, after the pause (MP3)
  • "Integration! Oh thank God!" Yes, Carbon programmers were given a reprieve in 2006. But the fact that the stout thrust at WWDC that year was for Carbon programmers to learn how to integrate Cocoa APIs into their Carbon applications should acquire been a stout 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 breathe 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 breathe around for years and years to come, but the requisite of 64-bit advocate is a long-term death sentence.

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

    Perhaps the most painful fragment of this for developers with big 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 determination to drop 64-bit advocate for Carbon was obviously a difficult one to make, but eventually it was made, despite the drudgery already withhold into the effort.

    I contemplate it was a pleasurable decision. Apple has been hamstrung by the requisite to advocate two entirely different APIs, maintaining feature parity between them, and having to elaborate 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 utter limpid that Mac developers would want to learn Objective-C and a entire recent set of APIs. Here in 2007, the developers acquire spoken. The only people soundless 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 cleanly break

    Carbon is just one example. Apple has wisely decided to consume the transition to 64-bit as an break to manufacture utter 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 recent ABI, faster dispatching, zero-cost exceptions, and public APIs for introspection built on top of newly opaque internal structures. utter over Cocoa, ints acquire been replaced with NSIntegers. In utter of the graphics APIs, floats acquire 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. complete stop, no waffling, everyone merit on board the train.

    There's an inherent tension between developers with existing applications and skillsets and the OS vendor's crave to attract recent blood and manufacture pleasurable long-term decisions for the platform. The late convene on the 64-bit Carbon determination is limpid evidence that Apple struggled mightily with these issues internally.

    In the end, Apple made the difficult choice instead of the easy one. I contemplate it will pay off, though the short-term consequences could breathe pretty grim. After all, just leer at how long it's taking to merit an Intel-native version of Microsoft Office for the Mac. Should they expect a 64-bit Cocoa version in, say, 2012? And I acquire no notion what Adobe's going to upshot about 64-bit versions of its products. That's many millions of lines of Carbon code between those two companies alone. They may breathe in for a harsh patch, so buckle up.

    FSEvents

    Once upon a time there was an operating system called BeOS with a daring and innovative design. Not utter of its audacious recent ideas worked out as well as expected, however, and those that did were not enough to redeem the product from other, nontechnical forces that led to its demise. Nevertheless, BeOS made quite an impression 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 sustain 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 book Practical File System Design with the breathe File System describes the history and implementation of these features. A free PDF is too available.)

    In 1997, Apple purchased NeXT instead of breathe and based Mac OS X on the NEXTSTEP OS. Initially, Mac OS X had nonexistent 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 recent path. But it takes a long time to gyrate a ship as stout 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, utter 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 recent extended attributes APIs brought arbitrarily extensible metadata. Now, in Leopard, the final piece has arrived: an asynchronous file system notification API in the contour 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 utter 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 recent 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 artery 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 pleasurable reason. It has to upshot with the mechanics of file system notifications.

    To breathe sensible of utter pertinent file system changes, the notification mechanism must exist at the choke point for utter 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 manufacture each event available to interested clients and then creep 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 breathe off doing something else when an event arrives. This is utter par for the course in userspace, but it's extremely incompatible with the kernel's requisite to merit things done prerogative now, with minimal recollection and CPU overhead.

    What's the kernel to upshot when 10,000 file system changes occur in two seconds (say, as fragment of some software installation) and the stupid, idle 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 redeem the events and wait for utter interested clients to finally merit around to receiving them. But buffers are not unlimited. This is especially true in the kernel. What happens when the buffers fill up?

    Well, the kernel could obscure 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 play 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 earmark memory, but that just postpones the problem. withhold simply, either you restrict the number of events you can buffer, accepting that sometimes the buffer will fill up and you'll acquire to drop events, or you can commit 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 laggard client, events merit dropped. This means that one badly behaved client can destroy it for everyone.

    So, no, /dev/fsevents is not a pleasurable 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 recent technologies. Given a thorny technical problem, FSEvents does not attempt to breathe utter things to utter 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 breathe 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 real time to utter interested clients. This appears to breathe the best feature of the API, but it's actually quite a tribulation for clients. Any events that occur when a client program is not running will never breathe 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 upshot this in order to trap and process utter file system events.

    If any other program wanted to observe utter file system events, it would acquire to upshot the selfsame thing: launch at boot time and abide 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 reply 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 consume the FSEvents API upshot not requisite to breathe running constantly. They can breathe launched at any time and can ask, "Okay, what's changed since the final 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 reply the question accurately.

    Pragmatic? Isn't it too impartial to convene this solution "fraught with its own intractable problems"? How stout are these log files? Are they going to fill my disk if I constantly create, modify, and delete files? Will the log files breathe trimmed? What if a process doesn't hasten 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 lone event to disk, you'd hasten 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 relate 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 level of detail). The common pattern is to register for notifications for some subset of the file system tree, upshot an initial scan of that tree, wait for an event about a particular directory, then compare the recent status of the directory to the status seen during the initial scan.

    That positive seems fondness a lot of tedious work: register, scan, merit event, scan again, compare. This selfsame code has to breathe 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 final 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 fade backwards in time to revisit veteran events.

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

    The FSEvents API includes callbacks for these situations, effectively telling the client, "Unknown changes acquire occurred. You'll acquire to upshot a complete rescan yourself, then pick up on the recent 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 contour of reliability. FSEvents will not prevaricate to you.

    The fseventsd log files are written in a compressed binary format. Since only per-directory changes are kept, multiple changes to the selfsame directory occurring within 30 seconds of each other are coalesced into a lone 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. bona fide usage will capitulate a wee 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 hasten out of disk space, or if the logs are explicitly purged (there's a public API for this), FSEvents will dutifully spread the unfavorable tidings to its clients: "Sorry, it's complete rescan time."

    Events are identified by their 64-bit event id, which does not necessarily acquire any particular relationship with date and time. Nevertheless, FSEvents does involve the aptitude to examine for the approximate event id that corresponds to a particular date and time.

    To obviate events from being logged at utter 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 fade without saying, FSEvents honors the Mac OS X access control rules; you cannot receive events about directories that you don't acquire leave to read.

    Spotlight sidebar

    Spotlight has been substantially rewritten in Leopard, and is noticeably more responsive. It does not, however, consume FSEvents. Instead, it continues to drink from the /dev/fsevents fire hose, grabbing each individual event as it happens. This may appear fondness 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 exploit 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 utter 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), utter 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 breathe dragged kicking and screaming into the future of file system technology, but at least it has finally advance around. Yes, there acquire been bumps in the road, and things surely acquire not turned out exactly the artery I expected them to. But in the end, it's the results that count.

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

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

    The endeavor 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 manufacture 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 breathe ZFS, a recent Apple-developed file system, or something else entirely? As I wrote final summer:

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

    It's colorable that the completed ZFS port will breathe available in the 10.5.x time frame, but I fully expect to acquire 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 pleasurable tidings is that, when it does finally arrive, utter these considerable file system APIs will breathe there waiting for it.

    Core Animation

    In the post-Mac OS X era, Apple has been a stout 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 recent items appear; switching preference panes triggers a cross-fade and an animated window resize; items in the Dock shuffle and squirm around when a recent particular is dragged towards it.

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

    Understandably, third-party developers acquire long tried to ape these effects. Historically, that's been a tall order. retract 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 consume that cross-fade in his preferences dialog.

    But doing so takes him far from his solace zone, into the world of graphics APIs, perhaps even OpenGL. What does utter that acquire to upshot with editing text? Sure, Apple can afford to acquire one of its graphics gurus add whizzy effects, but it's another thing for wee developers to retract the time to learn a bunch of recent 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 leer as impertubable as Apple's. Broadly speaking, this is not something that should breathe discouraged. But it really is inefficient to acquire utter these developers trying to write custom code far outside their areas of expertise.

    And for that matter, it's not such a considerable notion for Apple to breathe doing the selfsame thing. Though it may acquire the talent on staff, Apple would breathe much better served by having its graphics experts drudgery 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 fade 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 factor simply the degenerate contour of an animation? Let's reimplement everything in terms of their recent animation framework! It'll breathe awesome!

    It'll probably too breathe 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 recent animation-based APIs.

    Thankfully, Apple's taken a different route with Core Animation. fondness FSEvents, Core Animation is a pragmatic API. It does a few well-chosen things and does them very well. It too goes to considerable pains to manufacture 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 acquire 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, fondness utter 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 leisure assured that you will not breathe constructing any teapots in Core Animation. There are no vertexes, triangles, or lights in the Core Animation API. It's a layer kit, remember? contemplate "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 acquire zero or more sub-layers, and the filters are Core Image filters, of course. But the layer contents are the really absorbing part.

    At some point during pretty much every WWDC since the introduction of Mac OS X, an Apple engineer has explained how to fuse content produced by different APIs: drawing styled text on top of an OpenGL scene, putting a benchmark button or checkbox over a QuickTime movie, applying a Core Image filter to fragment 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 kind of thing really shouldn't breathe as difficult as it is. Well, in Leopard, thanks to Core Animation (of utter things), it's now nearly trivial.

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

    Layers are animated declaratively, rather than procedurally. For example, to manufacture 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, relate 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 utter of the animation settings are optional and acquire sane defaults, animations acquire configurable durations, timing curves, keyframes, and transition types. Also, multiple property changes can breathe batched into a lone 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 break to consolidate many previously part GPU acceleration mechanisms for video, 2D drawing, and animation into a lone context.

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

    Core Animation in Cocoa

    Unsurprisingly, Core Animation is a Cocoa API. Politics aside, it's a pleasurable fit. Cocoa has existing conventions for observing changes to object properties, and Core Animation ties prerogative into that. But the real genius is in the how microscopic drudgery 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 usurp checkbox in Interface Builder, or manufacture the corresponding [view setWantsLayer:YES] convene at runtime. Doing so creates a Core Animation layer for the view and utter subviews it contains. The result is two view trees: the collection of "normal" views and subviews that acquire always existed in your Cocoa application (windows, buttons, etc.) and another, parallel hierarchy of Core Animation layers representing the subset of bona fide views that acquire their "wants layer" property turned on.

    Each layer-backed view has an animator attribute. system calls that influence animatable properties are animated when made through this object and are not animated when made through the view itself. For example, let's roar you acquire 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 recent size using a GPU-accelerated, OpenGL-based compositing animation engine running on a part thread, you must nature 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 start 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 illustration above implies. As a first pass, just ship utter the system calls you want to animate through the animator property. As an optional second pass, customize the few animations you want to fade faster or slower or upshot 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. utter the basic visual properties of views can breathe animated—plus some esoteric ones fondness rotation. Yes, if you acquire the press to create spinning buttons or slanted windows, Core Animation is there for you. You can even add recent animatable properties to your custom views.

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

    Separation of concerns

    As alluded to earlier, the animation fragment of Core Animation runs on its own thread and has its own hasten 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 fragment of its visual state.

    For example, let's roar an application moves an factor in a window from position A to position B. From the perspective of the application code, the change happens instantly. The particular 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 creep 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 factor is, and where it actually appears on the screen. This usually isn't a problem, but developers are encouraged to retract precautions to obviate any fanatical effects (e.g., by disabling controls while they're in motion, reenabling them when the animation completes).

    But that's about the only ill upshot 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 manufacture changes any veteran time it wants, without concern for the status of any outstanding animations. For example, an application can creep an particular from A to B, then creep it again to C before the A-to-B animation completes. The Core Animation engine will retract it utter in stride, smoothly animating the particular towards C from whatever position between A and B it was in when the application initiated the creep 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 freedom 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 acquire to endure some amount of gratuitously animated software created by "overly enthusiastic" developers. But the selfsame was true during the introduction of styled text and color graphics. Mac developers learn quickly, and Mac users are pleasurable at rewarding restraint and punishing excess.

    The minimal, almost humble artery Core Animation integrates with Cocoa belies its incredible sophistication. More so than any other recent framework in Leopard, Core Animation provides functionality and performance that was previously difficult or impossible for the average Cocoa programmer to create on his own. Now, finally, third-party applications can leer as impressive as Apple's, and they can upshot so by using exactly the selfsame code that Apple's using—code written by expert graphics programmers and continually revised and improved by Apple to retract advantage 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 creep 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 fragment of the drawing and compositing process happened on my penniless 400MHz G3 CPU, with the expectation that, someday, it'd utter befall 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 breathe 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 soundless disabled by default.

    But surely—surely—Quartz 2D Extreme will breathe enabled in the mighty Leopard, right? When it comes to touching drawing code to the GPU, maybe they should utter merit 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 utter Apple product names, so yay. Second, it's captious to understand why Quartz GL was disabled in Tiger for utter those years. Apple's never made any public statements about this, but developers who've asked acquire 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 influence existing applications.

    Bugs are the most obvious issue. Quartz GL was brand recent in 10.4.0, a release that had enough of its own problems without globally applying a recent drawing engine to utter applications. The other captious issue was explored in the Tiger review: Quartz GL can actually manufacture 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 acquire been squashed, but the performance issues are really up to application developers to address by changing their code. But why would they breathe 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 elect when and where to consume Quartz GL. It's a pleasurable compromise; there's actually nothing to breathe disappointed about. Quartz GL, fondness many Leopard technologies, will surely start to seep into the applications they consume every day. It may not breathe as obvious as something fondness Core Animation, but in the long hasten 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 aptitude to draw user interface elements using more pixels.

    For example, the microscopic 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 consume around 100 pixels per inch (PPI), but on a 200ppi monitor it would breathe quite a wee click target. Using a scale factor of 2.0, this selfsame widget would breathe drawn using 32x32 pixels—four times as many. That would manufacture the click target exactly the selfsame size as the 16x16, 1.0 scale factor version on a 100ppi screen. The 2.0 scale factor version would too breathe 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 tall end, displays with much greater pixel density become feasible now that there's a artery to obviate the widgets that manufacture up the UI from shrinking to unclickably wee proportions. In particular, text will leer 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 penniless vision to manufacture 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. retract a leer 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 soundless plenty of harsh edges even for the simplest of applications. Since interface scaling has a global effect, it can't breathe enabled piecemeal fondness Quartz GL.

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

    Nevertheless, the rumored date for resolution independence to issue 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 soundless 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 utter there is to roar about resolution independence in Leopard. In fact, you might roar there's one more thing...

    Core UI

    Resolution independence is a fine idea, but there's the pesky issue of exactly how to draw utter those user interface widgets using more pixels. When resolution independence finally arrives in 2008 (or whenever), will the Mac OS X UI breathe drawn entirely using infinitely scalable vector art? That'd positive decipher the problem of where to merit utter 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 drudgery fine, but it does appear kind of wasteful to consume giant bitmaps for thing fondness line craft and basic shapes which are oh-so-compactly represented by vectors.

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

    Let's retract a leer at the touching parts. Core UI draws each piece of the user interface based on a chain of XML "recipes" that describe the structure and features of each element, referencing pieces of craft stored as part resources files within the framework bundle. Here are just a few illustration 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 gyrate hold the recipes and resources. It's difficult not to leer at this arrangement as a kind 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 obdurate approach to drawing the UI used in Tiger and earlier. At the very least, the recent recipe/resource structure lays bare the components that manufacture 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 pattern named checkmark, represented in the Resources directory by the checkmark.pdf file.

    checkmark.pdfcheckmark.pdf

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

    aquamaterial.png

    aquamaterial.png

    The Finder sidebar

    The Finder sidebar

    Keep in mind that these are not giant radio buttons; bitmaps fondness these are used as texture sources for widgets of utter shapes and sizes.

    Finally, here's what a checkbox looks fondness 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 espy how this utter starts to advance together. Browsing through the complete set of resources reveals an unsurprising division of labor between stout bitmaps (PNGs) and vector graphics (PDFs). Anything that looks fondness line craft or is a basic shape is done with vectors. The "lickable" bits, on the other hand, are soundless represented by (presumably hand-tweaked) bitmaps, usually in very big sizes. In particular, the artery 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 artery to conserve recollection while soundless using hand-drawn art.

    So what does this utter breathe of value for Mac OS X? Well first, it means that Apple is ramping up for resolution independence. They knew that already, but it's soundless nice to espy how far along things are. Remember, even at the default (1.0) scale factor that Leopard will ship with, utter the UI widgets you espy 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 veteran artery for 1.0. The creep to using Core UI everywhere shows some self-confidence 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 fondness drop shadows and highlights. But the universal approach of using XML recipes to compose vector and bitmap resources is a sound one that will final Apple a very long time, well into the coming age of resolution independence.

    Internals grab bag

    These "grab bag" sections give me a casual to briefly handle on absorbing features that don't warrant their own sections—or, quite often, that time constraints acquire prevented me from expanding into entire sections. For the first time, I'm giving the internals their own grab bag, to part the more technical bits from the later grab bag that covers more user-visible features. withhold 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 retract advantage 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 leer at these extended attribute names:

  • com.apple.metadata:kMDItemFinderComment—Finder comments in real metadata. (They're too soundless stored in the .DS_Store files, presumably for compatibility with pre-Leopard systems).
  • com.apple.quarantine—Tagging files downloaded from the Internet as possibly untrustworthy, storing the application used to download them, among other things.
  • com.apple.backupd.SnapshotVolumeLastFSEventID—One of a entire suite of extended attributes used by a inescapable backup feature to breathe described later.
  • It's enough to manufacture me yell "Hallelujah!" Apple finally gets it! espy how useful this stuff is? Just imagine the insane contortions the pre-metadata-enlightenment Apple would acquire gone through to store and track utter 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 selfsame 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 selfsame name, but slightly different command-line options.

    Other commands in Leopard acquire 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 expose 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, benchmark text drawing and layout API: Core Text. (As far as I know, this "Core" technology does not merit 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 absorbing 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 breathe public, but maybe it just appears that artery in hindsight. Either way, hold your eye out for private frameworks in Leopard that could breathe 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 benchmark text layout API? As mature as Mac OS X may seem, it was quite a mishmash of technologies at its birth: a microscopic BSD Unix here, some NeXT there, and a bucket of classic Mac OS splashed on top. This is utter going to retract a long time to sort out. Leopard takes some captious steps towards the future by deprecating several veteran technologies and anointing their successors.

    Code signing

    Leopard supports cryptographically signed applications. This topic rings alarm 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 difficult for some people not to espy utter 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 selfsame entity claiming to breathe Acme Inc. the final time you downloaded something from their web site.

    This illustration 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 fondness a pleasurable security feature, but utter it really does is train Mac users to blindly click "Always Allow" each time it appears. And really, what is the average user going to do, hasten 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 recent version of the selfsame application from the selfsame vendor that you expressed trust for in the past. The result is an desist to dialog boxes asking you to authenticate a choice whose safety you acquire no reasonable artery to verify.

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

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

    Apple has signed utter applications that ship with Leopard. I expect most reputable third-party developers to upshot the selfsame eventually.

    Code signing too means an desist to the rehearse 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 rehearse has always been discouraged by Apple, and now there's another intuition 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 breathe just a wee step towards increased security, but it's one that's done right.

    ASLR

    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 manufacture it harder for malicious software to forecast the address of a particular piece of code. Apple soundless has a long artery to fade to compass Microsoft's current level of paranoia about security, but then Mac OS X has not been subjected to the selfsame kinds of malware pressures that Windows has. Still, it's nice to espy Apple taking some initiative in this area rather than waiting for cataclysm to strike and then reacting.

    LLVM

    LLVM stands for low level 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 utter about what LLVM can upshot at the project's web site. The explanations you'll find there are kind of impenetrable if you're not already chummy with compiler technology, however. The best artery to contemplate of LLVM is prerogative there in the name: it's a virtual machine, but one that models something quite low-level, more fondness 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 notion is that you capitulate code in LLVM's platform-neutral intermediary representation (IR) and then LLVM will optimize it and then transmogrify it to native code for the real CPU of your choice. This conversion can breathe 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 capitulate native code on its own? That's what most compilers do. Unfortunately, they upshot so with varying degrees of quality. The point 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 lone project, thus the consume of a platform-neutral intermediary representation.

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

    So, that's the pitch. The reality is that it will retract 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 breathe provided. Modern programmable GPUs provide a particular challenge. OpenGL applications no longer just convene fixed functions, they can too pass entire miniature programs to the GPU for execution.

    Prior to LLVM, Apple implemented software fallbacks for utter of this using its own custom JIT compiler for programmable GPUs. Apple wrote native code for each primitive operation (e.g., a dot product). These chunks are then glued together at runtime to capitulate the CPU equivalent of the mini-program intended to fade 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 weak 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 utter the recent architectures (and features fondness SSE, SSE2, SSE3... ) started to merit a bit hairy.

    A custom compiler with weak 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 native 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 veteran custom JIT for inescapable operations that the veteran 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 kind of code is no code at all.

    Don't breathe misled by its humble consume 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 recent LLVM-based (but gcc-compatible) compiler system? That project is called Clang, and it's already yielded some impressive performance results. In particular, its aptitude to upshot snappy incremental compilation and provide a much richer collection of metadata is a huge boon to GUI IDEs fondness 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 captious to the future of Mac OS X. Indeed, it could too breathe captious to the present of the iPhone and other OS X platforms.

    I'm not positive how the iPhone supports utter 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 utter to hum on a platform with a relatively weak GPU and CPU. And did I mention that Apple recently did some extensive drudgery on the LLVM ARM backend? You know, ARM, the CPU used by the iPhone. Yeah, the pieces positive appear 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 recent Objective-C runtime in the 64-bit section. This is fragment 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, system dispatch, and in the 2.0 version, recollection management as well.

    That's right, the biggest tidings in Objective-C 2.0 is that it supports garbage collection. This is an opt-in feature, and a lone code foundation can breathe compiled both with and without advocate for it. When garbage collection is enabled, utter manual recollection management calls are simply ignored. This is how utter of Apple's Objective-C libraries in Leopard are written; they drudgery 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 object properties. Writing many such methods is tedious and prone to mistakes. Since the best practices are, by now, well defined, Apple simply added properties as a "native" feature of the language. I withhold native in quotes because it really boils down to a contour of syntactic sugar, but a microscopic sugar is a pleasurable thing.

    Objective-C 2.0 is a stout 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 selfsame artery 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 withhold 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 utter 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 map to transition to a dynamic, fully memory-managed development environment? I did a three-part blog chain 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 crossroad 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 soundless leaves the problem unsolved.

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

    In the meantime, the take-home point related to Leopard is that Objective-C 2.0 is a pleasurable thing. The additions to the language manufacture Objective-C much more pleasant to consume and easier to learn. The recent runtime is cleaner, faster, and more capable. Garbage collection, if it becomes as pervasive as it ought to, will befriend train a recent generation of Mac developers to capitulation one more bookkeeping function to the computer. If there's a cliff up ahead, at least Apple's picking up accelerate 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 roar 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 fondness it, few adore it, and many detest it.

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

    I went on to describe those three threads of dissatisfaction: spatial/browser-mode interaction, performance, and "the microscopic things." That summary is soundless worth reading; utter three pillars of Finder angst remain pertinent in Leopard.

    They're pertinent partly because the Leopard Finder makes an endeavor to address each one directly. "Address" does not breathe of value "resolve," however. But first, some pleasurable news.

    Performance

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

    Case in point: iDisk. Even when .Mac is extremely laggard to respond, the iDisk window appears instantly. Granted, the window may breathe barren for some time as the Finder waits for .Mac to ship data, but the captious point is that control is immediately returned to the user. withhold that iDisk window aside and advance back to it later when it's finished loading; you can continue your drudgery 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 upshot 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 soundless 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 soundless lurk, however. For example, connecting via FTP (sorry, soundless read-only), putting the server to sleep, then attempting to open a folder on the server will sometimes result in some quality 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 fondness the iDisk case: a recent 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 soundless a refreshing change from the days when it was omnipresent.

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

    Overall, I acquire to roar this is the most significant performance improvement in the history of the Mac OS X Finder. There's soundless more drudgery to breathe done on the sunless corners of network connectivity, but the underlying issues appear to acquire been addressed.

    The microscopic things

    The Leopard Finder goes a long artery towards fixing utter those niggling microscopic issues that acquire been driving people nuts for years. In fact, several of my own personal peeves acquire been addressed. hold this positive outlook in mind as I embark on one final rant about how long this has utter taken.

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

    Rename without warnings Adjustable grid spacing

    It's difficult for me not to consume profanity at this point, so thoroughly upshot 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 lighthearted to finally espy them in Leopard. But on the other hand, actually using these features and experiencing how much more pleasant they manufacture 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 contour (only two settings: tight and wide) in classic Mac OS and was dropped during the transition to Mac OS X, fondness 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 breathe some sort of punishment for daring to consume icon view. Just leer 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 selfsame folder with the selfsame 48x48 icons, scaled to the selfsame 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 lone 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 upshot in a system where (unfortunately) file designation mangling is the official artery to encode file nature metadata. It's the inability to disable the warning that's so obnoxious. Again, the changes required to upshot this are not complicated. Why did it retract so long?

    I'm positive the words "limited resources" and "priorities" would issue in any explanation Apple would give (as if they'd ever give one, ha), but ironically, I contemplate that misses the bigger picture. What they acquire 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 stint of making a Mac OS X Finder that everyone can fondness using—or, withhold less charitably, that fewer people loathe.

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

    Okay, rant over. Adjustable grid spacing and the aptitude to silence file renaming warnings are finally here in Leopard. These tiny features will manufacture a disproportionately huge improvement in the lives of many thousands, perhaps millions of users. Apple gets complete 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 recent Finder too has some absorbing recent features. We'll start with the visual.

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

    The Finder sidebarThe Finder sidebar

    As you can espy above, list view items now acquire alternating background colors—a welcome change. Cover tide 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 merit a situation in the sidebar, with the default set shown above. As usual, a pleasurable selection of defaults goes a long artery towards making a feature more useful. Even for people who acquire no notion 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 issue in the sidebar. Drag it off and watch it fade poof. Drag it back on and it can fade in either the PLACES or SEARCH FOR sections (so obnoxious... ). Smart folders remain unpretentious XML files that are simply treated specially by the Finder.

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

    Text icon previewsText icon previews

    The squinty text seems kind of silly, but believe it or not, you can actually manufacture 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 recent Quick leer feature, denoted by the stylized eye icon in the toolbar, provides a surprisingly snappy and affluent preview of file contents. Its keyboard shortcut is particularly convenient. Just select any file and hit the space bar to espy a preview. Here's an example.

    Quick Look. Enlarge / Quick Look.

    Most of the time, the black-tinted Quick leer pane pops up instantly. This responsiveness makes the feature much more likely to breathe used. The accelerate extends even to more complex 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 artery to upshot a quick presentation.

    Quick leer 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 benchmark file formats.

    Spotlight

    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 recent nested clause. Combined with the aforementioned rewrite of the Spotlight indexing system, the recent file search interface is now what it should acquire been utter 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 recent pane for adjusting them.

    Access Control ListsAccess Control Lists

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

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

    Screen sharing

    Leopard has extensive advocate for screen sharing—that is, the aptitude to espy another computer's screen in a window on your Mac and (optionally) control that computer with your mouse and keyboard—using the VNC benchmark 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 expose 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 quality control manufacture 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 soundless 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 breathe launched manually and used to connect to another computer if you know the IP address. You'll breathe prompted for a username and password, with the option to explicitly request leave to participate the screen.

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

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

    An application divided against itself

    The Finder soundless can't quite conclude what it wants to breathe when it grows up, a file browser or a spatial file manager. A cleanly separation of concerns would allow it to breathe 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 selfsame action in a non-browser window causes a recent window to breathe opened.

    The latter style is often called "spatial" because the creation of a recent window for each folder is a prominent deportment 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 recent window for each folder. The basic requirements for a spatial file manager are:

  • Each folder is represented by a lone 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 dispute 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 breathe considered to acquire 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 breathe viewed).

    Of course, the mere presence of this aptitude isn't the selfsame thing as it actually happening. For a simulated spatial Finder, why can't a user simply elect 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 crossroad has not been so easy. In utter past releases of the Mac OS X Finder, it was impossible to drudgery with one kind of window without the other kind popping up in your countenance periodically, unrequested and unwanted. This annoyed browser and spatial aficionados alike.

    Upon first using the Leopard Finder, you will breathe 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 upshot so. Sure, recent folders created on the desktop soundless appear 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 issue 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 soundless does so using .DS_Store files in each directory, and those files are soundless written in an undocumented binary format. What the Leopard Finder no longer even attempts to do, however, is recall the view style for each folder (e.g., list view, icon view) unless explicitly asked to upshot so by the user. Here are the steps required to upshot that.

  • Open the folder.
  • Set its view style to the desired state.
  • Open the View Options panel (type command-j or select the particular in the View menu).
  • Check the "Always open in ... " checkbox, where "... " will breathe the view style set in step 2.
  • This process must breathe repeated for every lone folder that you want to retain its view style. If you upshot not upshot this, the view style of any given folder will breathe the selfsame as the final 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 attribute of the Finder application itself (optionally overridden by a per-folder setting that must breathe 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 acquire 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 breathe of value that future changes to the view style of that folder will breathe retained. If you want to retain a view style change to such a folder, you must upshot 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 breathe the view style as it appeared in step 1.
  • Check the "Always open in ... " checkbox, where "... " will now breathe the style set in step 2.
  • Again, reiterate this process for every every lone folder that you want to retain the recent view style that you've set for it.

    This avalanche of mandatory categorical action effectively represents a denial of service storm 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 breathe abandoned entirely.

    If the Mac OS X Finder wants to breathe a sheer browser, then fine, fade for it. But in a proper browser, utter view state—not just view style—is rightfully an attribute 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 manufacture view style solitary an attribute 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 actuality of the global "Always open folders in a recent window" preference that effectively stops any window from being a proper browser?

    The Finder remains a truly conflicted application. On the one hand, the balance 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 befriend 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 fade all-browser or all-spatial, but presumably neither of those extremes is attractive or we'd acquire seen one already. No, the Finder has to upshot both. I've often gone into considerable detail about the particulars of such a Finder, but apparently there's too much nuance in that approach. Let me roar it more plainly: for the adore of God, Apple, just freaking part the two modes! Let each breathe true to itself, free to brandish and expand in the usurp ways. I can stew it down to three bullet points.

  • Two window styles: browser and spatial.
  • No aptitude to transform a window from one style to another.
  • The "New Finder Window" command becomes "New Browser Window."
  • Then just manufacture 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 breathe 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; merit the two modes sorted and everything else will tumble into situation eventually.

    The Finder on the couch

    I first noticed the recent view style deportment in Leopard when I logged in one day and saw that utter 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 recent one that reported the fanatical "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 utter 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 utter its worth. It seems limpid to me that the recent deportment is intended to satisfy a claim for more browser-like behavior, something that "most users" acquire told Apple they want. I don't find that surprising; ever since the sidebar appeared, the Finder has certainly looked the fragment of a browser. Its behavior, however, has remained schizophrenic. The common user response: "It looks fondness a browser, but doesn't behave fondness one. please reform this."

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

    This is the nature of feedback you can expect from regular users: expressions of particular throe points. It's not their job to decipher the Finder's problems or even to understand the underlying causes. But being reactive to this kind of feedback at this level of granularity will only lead to feature churn.

    And so you merit changes fondness 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 artery that it (further) breaks spatial mode. Oops, now let's pitch in an "Always open in ... " view option to manufacture 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 stout picture.

    As a sop for spatial file management fans, the "Always open in ... " view option fails spectacularly. It's more fondness a giant middle finger from Apple. At the very least, an option to restore the pre-Leopard deportment 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 utter barren unless the larger issues are addressed.

    Finder summary

    The Finder was one of the biggest surprises for me in Leopard. It was not obvious at utter 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 recent policy on view style retention.

    After many years of bugs, penniless performance, a feeble browser, and a pseudo-spatial mode, it'll breathe absorbing to espy what kind of reaction this change gets in the wider Mac community. You don't requisite to know or pervade about any of the high-concept user interface theories to merit annoyed when the results of your actions are not respected enough to breathe preserved. On the other hand, the Finder has been flaky about status preservation for years. How many Mac users acquire simply given up trying to manufacture 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 breathe gritting my teeth as I meander my difficult drives, manually pinning down the view style of each folder I pervade about. I'll grimace every time I naively change a view style only to breathe surprised later when I realize that my change was ignored because I forgot to (re)pin it manually. I'll curse as I spend time and energy finding a artery 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 usurp .DS_Store file. Sad, but true.)

    The Leopard Finder's saving grace may breathe that the increased responsiveness and recent features are likely to overshadow utter other issues, and will fade a long artery towards damping the flames of hatred burning in inescapable 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 breathe the case. Not only does the Leopard Finder retract no bold steps towards a heroic recent world of file management, it even further distances itself from a coherent incarnation of established file management paradigms. The changes in Leopard upshot testify that Apple has taken a renewed interest in improving the Finder, but motion is not the selfsame thing as progress. For where I'm sitting, it looks fondness one step forward, two steps back.

    The Dock

    If the Finder looks fondness 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 retract stock of the functional vandalism.

    The left side of the Dock remains mostly unchanged. It soundless holds only applications, running or otherwise. utter of the recent features are on the prerogative half of the Dock, where "everything else" lives. Files, minimized windows, and the trash utter 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 point to their actual folder icons only when they are empty. Docked folders containing one or more items point to 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 leer fondness in the dock.

    The Applications folder in the DockThe Applications folder in the Dock

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

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

    Yep, that's it prerogative 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 hollow prerogative about now, congratulations, Apple may acquire a position for you in their user interface design group.

    Do I requisite to further elaborate 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 merit that list right.

    When it comes to ease of identification, the Tiger version wins, hands down. And recall 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 breathe 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 utter hold mostly other folders as the first few items, alphabetically.

    Changing the sorting doesn't befriend much. The problem is that this is fundamentally a unfavorable idea. There's just not enough play in a lone Dock tile for a stack of icons to convey any meaningful information. Only the top one, two, maybe three items acquire any visual impact. And those few items may breathe delusive (e.g., the home folder appearing to breathe the Desktop folder) or completely generic (e.g., the Pictures and Movies folders showing up as unpretentious folder icons.) Seriously, Apple, this is a unfavorable idea. And upshot I requisite to relate you that there's no artery 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 merit into what does befall when you click on a docked folder, let me further point out that (surprise!) there is apparently no artery to merit the veteran deportment back. I modifier-clicked my fingers off with no luck. Yes, there's soundless 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 deportment that existed in Mac OS X 10.0 through 10.4. Leopard just takes this feature away.

    Here's what does befall 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 selfsame as opening it in the Finder: folders open in a recent Finder window, documents open in the usurp application, and applications launch. A command-click reveals an particular 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 tall 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 breathe 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 selfsame ways as items in the fan view. Each docked folder can breathe viewed as a fan or a grid or can breathe set to "automatic" (the default), which uses a fan when there are few items and switches to grid to exploit many items.

    Both of these recent features are actually pretty nice. It's too unfavorable Apple decided to completely supplant the veteran behavior. It would acquire been so easy to acquire it all: just add a "Window" menu particular 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 particular onto a docked folder and holding it over the folder for a few moments, the docked folder springs open to expose 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 recent features are hampered by the needless abandonment of veteran behaviors. The "stacked contents" docked folder display system is a total loss. char it with fire, or at least provide some artery to gyrate it off.

    And lest they forget, despite these recent Leopard feature, the Dock is soundless quite anemic. This isn't talked about much these days, but utter the veteran power-user complaints about the Dock soundless acquire merit: the requisite for icon scrubbing, the touching targets, the arbitrary division of items, the artery each function affects the others (e.g., minimizing many windows makes the Dock a less efficacious launcher by shrinking and touching utter 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 complex 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 acquire to consume it.

    Mac OS X forces you to consume 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 breathe 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 spurn to manufacture the Dock better suited to more complex or demanding usage scenarios, but too periodically hose existing functionality and add really terrible recent behaviors, it needs to retract away the Dock's exclusive ownership of essential features. Let me veil the Dock entirely and consume a third-party replacement without sacrificing basic functionality and without compromising the stability of my system. I know it's always a throe to add recent public APIs, but these changes are long overdue, and they'd profit Apple in the long hasten as well. Mr. Serlet, split down this wall! Don't oblige me to consume the Dock, and I plight I'll desist actively hating it.

    Time Machine

    Time Machine is the best recent feature in Leopard, perhaps the best feature ever added to Mac OS X. withhold 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 dilemma for bona fide users: "I know I should back up, but I never do. I wouldn't even know how to upshot something fondness that anyway." Well, enough of that. If you acquire more than one difficult disk attached to your Mac, it's more difficult not to consume Time Machine than to consume it.

    Backup disk selection dialogBackup disk selection dialog

    The first time two or more difficult disks are connected to a Mac running Leopard, a dialog box will issue asking the user to select a backup disk. elect one and you're done; no further action is needed. Were you to meander over to the Time Machine preference pane, you'd espy this tidy microscopic 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 utter 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 captious ways. First, if your main difficult drive dies or is replaced, booting from the Leopard install DVD will provide a one-click artery to restore from your final Time Machine backup. Second, when viewing any window in the Finder, triggering a special mode will point to the contents of that window at utter points in the past for which backup data exists. Files can breathe recovered from the past, replacing the current incarnations or existing alongside them.

    This utter 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 upshot backup their data. That actually doesn't sound too unfavorable until you merit to the next question. Only four percent backup regularly.

    In a nutshell, this means that if you could snap your fingers and manufacture one Mac user's main difficult drive disappear, there's a 96 percent casual 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 breathe 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 withhold at least two difficult 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 difficult drive.

    In hindsight, this is a more practical solution. Mac users are much more likely to purchase and attach a spare difficult drive than they are to navigate the complexities of backup software on their own—software that may cost as much as a difficult 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;  espy Apple's web site for <a href="http://www.apple.com/macosx/features/timemachine.html">more images</a>)Time Machine mode (cropped due to space constraints; espy 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 prerogative shows each backup as a tick mark, magnifying the marks on mouse-over much fondness the Dock magnification feature. It's utter completely ridiculous, and you know what? I adore it!

    I'm willing to indulge Apple when it comes to these flourishes in Time Machine for two reasons. First, nonexistent 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 artery 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 level 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 chain 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 difficult 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 breathe of value 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 recent date-stamped backup, Time Machine does not copy any files that acquire not been modified since the final backup. The selfsame goes for entire folders; if utter the files in a particular folder acquire not been modified, then the entire folder is not copied.

    And yet there they utter are. If you navigate into one of the "Leopard Demo" folders, you'll espy every lone 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 benchmark Unix feature: symbolic links and difficult 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 difficult links

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

    For decades, Unix has had two ways to upshot something similar to what aliases do: symbolic links and difficult 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 prerogative of the microscopic 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 hold 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 creep mysymlink to an entirely different directory that too happens to hold a file named myfile, then the symlink will point to that file instead. If I delete myfile, the symlink will remain, soundless containing that selfsame path string which no longer leads to an actual file. Observe:

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

    The error reported is a bit confusing. The mysymlink file soundless 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 error it encountered when trying to open the file it was originally told to open.

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

    A difficult link is simply a reference to some data on disk. contemplate 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 breathe reused.

    Most files acquire just one name. In effect, every unpretentious file is a difficult link. retract another leer at the myfile listing from before.

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

    See that number "1" prerogative 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 count to zero, allowing the disk space previously used by myfile to breathe 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 manufacture a difficult 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 count 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 selfsame data. They acquire no artery 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 real as either one would breathe if the link count was one instead of two.

    Since these two files link to the selfsame data, the results of modifying that data will breathe 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 leer 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 soundless 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 acquire guessed by now, Time Machine uses difficult links to repeatedly link to the lone 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 acquire 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 final backup.

    Time Machine goes one step further. Historically, Unix has only allowed difficult links to files. In Leopard, Apple has included the aptitude to manufacture difficult links to directories. This has not been allowed in Unix because it can lead to utter sorts of very nasty illimitable loops during file look-ups. Of course, symbolic links can create loops too, but they're a lot easier to detect and obviate since symbolic links are easily distinguished from bona fide files. But as discussed earlier, every file is essentially a difficult link, and utter difficult links acquire 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 aptitude to Leopard. For example, if the entire /System directory has not changed since the final backup, Time Machine just has to manufacture a lone difficult link to that directory in the recent backup folder. Without advocate for difficult links to directories, Time Machine would acquire to create 18,744 directories containing a total of 68,839 difficult links to files (using numbers from my /System directory).

    Yes, directories are wee and difficult links only retract up the play 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 snappy when you're talking tens of thousands of difficult links being created every time you want to upshot a backup. difficult links to directories manufacture this utter much simpler and more efficient.

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

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

    Implementation consequences

    It's unlucky 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 breathe copied to the backup volume. difficult link can't befriend you here. There's no artery to manufacture a difficult link to "9.99999GB of the veteran data, plus this one byte of recent data."

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

    First, if you consume Microsoft Entourage, your e-mail is kept in a single, big database file. Mine is about 2GB. Most people merit recent e-mail every day. Ugh.

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

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

    Apple has been encouraging developers to consume many wee files rather than one stout one for years now, mostly to manufacture 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 upshot the same, although I acquire no notion if it does so in the upcoming Microsoft Office 2008 release. But for virtual machine files, the problem is intractable. And those attend to breathe the biggest lone files on most disks.

    This problem needs to breathe addressed. The best solution is for Apple to creep to a recent file system that supports block-level snapshots. ZFS, for example, would appropriate the bill. Sadly, no such transition has happened in Leopard. Time Machine backs up to a unpretentious veteran 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 breathe a stout win in terms of space efficiency. Unfortunately, that's a tall order. Don't hold your breath for anything fondness 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 selfsame underlying API (CSBackupSetItemExcluded()) can actually breathe 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 recent volume. If, fondness me, you feel better too having a bootable backup around, an application fondness SuperDuper is soundless necessary. (I spurn to add the exclamation point. Sorry, David.)

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

    It's a cleanly machine

    Despite a few consequences of Apple's continued inability to territory 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 soundless scores. Time Machine makes a stint that was once so complex and intimidating that almost no one even attempted it, and makes it invisible. fondness utter considerable ideas, it seems obvious after you've seen it, but that in no artery diminishes the achievement.

    Time will relate (ha) if this machine is enough to merit to Apple's stated goal of having 100 percent of Mac users backup regularly, but I contemplate it'll certainly manufacture a dent. I often merit scolded by other mothers via e-mail when I consume my mother as an example, but it's just too apropos to pass up here. Time Machine is literally the only artery I can contemplate of that I could ever merit my mom to back up her Mac. Once she has upgraded to Leopard, I can relate 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 fragment easier, too), no software installation, no recent application to learn.

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

    Performance

    Each recent version of Mac OS X has been faster on the selfsame 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 captious ways that an OS gets "faster." The first is traditional code optimization, where some subsystem is improved to consume less CPU time or less recollection or upshot less disk i/o, thus performing the selfsame stint in less time. The second factor is perceived speed. Though a stint may actually retract longer, it may feel faster due to changes in the artery the OS reacts during the process.

    Application launching is the canonical illustration 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 upshot 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, fondness its predecessors, gets faster on the selfsame hardware in both areas. Frameworks acquire been extensively revised and optimized, yielding real performance benefits in the areas of screen drawing (2D or 3D), text display, and most of the features that were recent in Tiger.

    In particular, Spotlight's improvement has been revelatory. Maybe it will humble with time, but after a few months of usage it's soundless lightning fast. I've actually been too idle to install Quicksilver on each recent Leopard seed, relying instead on Spotlight as a quick launcher—something that would breathe inconceivable to me in Tiger. And Leopard is not getting off easy by just indexing a cleanly install. No, it's indexing utter 2+ million of my files.

    This brings up an absorbing point. Does a faster Spotlight contribute to the "OS" being faster? I roar it does. From a user's perspective, an OS is a collection of features and bundled applications. Only nerds pervade about the "real" definition of an operating system, encompassing only the lowest-level services. Spotlight is discernible and measurably faster in Leopard, and that makes a stout dissimilarity 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 sustain as Spotlight indexed utter their files. Granted, it happened in the background, but it did laggard things down. Perhaps more importantly, the sound of a difficult drive grinding away in the background can breathe quite disconcerting.

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

    Most bundled applications merit a boost of accelerate in Leopard, if only in the seemingly universally less disk-intensive launch process. One Dock bounce, a few difficult drive clicks, and most applications are ready to go. I feel fondness 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 soundless laggy, but improved.

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

    In short, it's more of the selfsame for Mac OS X performance in Leopard: constant improvement, with a few sparkling spots, and no real downsides.

    Stability

    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 roar 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 soundless an alarming number of basic things that did not drudgery reliably. I was getting unfavorable flashbacks of the bug-ridden 10.4.0 release.

    Then, around September, Apple released a build that miraculously seemed to manufacture everything work, and drudgery well. Now obviously I acquire no notion 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 stout push. But whatever the case, this dramatic come-from-behind developer seed conquest is unprecedented in the history of Mac OS X development. That September seed was so good, so stable, that I thought it could breathe the GM.

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

    Grab bag

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

    Spaces

    Leopard includes an extremely competent virtual desktop implementation in Leopard, appropriately called Spaces. To some, this is a major recent feature on the level 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 recent 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 breathe assigned to specific spaces or can issue in utter of them, which is a nice touch. For the next revision, a artery to allocate different desktop background to different spaces would breathe nice.

    "Activating" spaces means displaying utter 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 selfsame thing. I only wish that activating spaces did not interrupt the current drag operation. Ideally, I'd fondness to click and hold on a window title bar, then activate spaces and continue my drag of that window into a recent space. (I upshot something similar on a daily basis when dragging files, using the command-tab application switcher as an circuitous artery to merit the drag destination to advance to the front without releasing the particular 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 breathe 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 merit a screenshot of, but you can espy it at Apple's web site).

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

    New icons

    From Spaces to icons? Yes indeed. A bunch of existing applications merit recent icons in Leopard.

    New iconsNew icons

    I'm not positive how I feel about System Preferences adopting the iPhone settings icon, but overall, the recent icons leer nice. Most icons acquire been updated, in fact, if only to involve larger sizes. Many acquire been entirely redrawn but leer almost exactly fondness their predecessors. It utter 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 represent 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 upshot these things desist being "icons?" At 512x512 pixels, they're more fondness "idealized photos." conclude for yourself.

    This is an icon?This is an icon?

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

    public.generic-pc.icnspublic.generic-pc.icns

    Cruel.

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

    Network

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

    Network preference paneNetwork preference pane

    It includes a entire 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 entire nine yards. utter of the esoteric stuff is behind that "Advanced" button, but at least it's finally utter 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 point to below reveals the long-overdue addition of a GUI for sharing specific folders.

    File sharingFile sharing

    Nearly every service has some wee recent feature, usually in the contour of more flexibility about who gets to consume the service.

    Guest account

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

    Guest accountGuest account

    The accustomed set of constraints can breathe 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 selfsame (201), and only one guest can breathe logged in at a time. There's no dismay 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 fade looking for it, I suspect it wouldn't breathe too difficult to find the template for the guest account, perhaps in the contour of a disk image or property list, and customize it to create a more snug environment for guests. (Say, by putting a giant Unreal Tournament 2007 alias in the hub of the desktop. Hello, multiplayer gaming terminal.)

    Disk Utility

    The Disk Utility application can now delete and resize partitions without erasing utter data on the disk. This is probably a result of the drudgery 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 recent "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 soundless sounds a lot better to my ears. Apple really needs to significantly update the core engine, not just add recent voices. No screenshot.

    Back to my Mac

    Leopard includes advocate for what is essentially dynamic DNS via the recent 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 utter your other Macs by having each one report its IP address to the .Mac service. The result is that utter your Macs are available as servers in the Finder sidebar, without requiring you to enter a server address. It's handy, but not much befriend if you travel across several draconian firewalls daily.

    Grammar checker

    The system-wide spelling checker now does grammar too. unfavorable 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 fondness the spelling checker, its omnipresence makes up for its limited abilities.

    iCal's Dock icon

    Apple has finally submitted to adding what must breathe quite a hack to merit the iCal application icon to point to the reform date on its Dock icon, even when the application is not running.

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

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

    Terminal settingsTerminal settings

    And hey, anyone recall that Apple nature 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.

    Woot!Woot!

    Fixed! Can you believe it? A recent look, tabs, and the aptitude 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 erudite 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 recent 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 roar this despite my abysmal hatred for many of the user interface changes. But perhaps I'm not representative of the average Mac user. In utter likelihood, my hatred will translate into an occasional-to-persistent mild annoyance for most users. And truthfully, people can merit 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 merit top billing. There's a pleasurable intuition we've already seen so many prominent Leopard-only software announcements. This is where developers want to be.

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

    In many ways, Leopard feels fondness a recent 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 recent leer and mandating it everywhere, redesigning utter of the most prominent visual elements of the interface, and shedding veteran technologies fondness cat fur.

    What's emerged is quite a fanatical beast: lovely 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 recent leer is postponed until 10.6 or later. It'd too breathe nice if Apple would finally manufacture a determination about the successor to the HFS+ file system some time this decade.

    What a long, fanatical trip it's been. Leopard turned out very differently than I imagined it would only a year ago. Despite some stout disappointments near the desist of its development process—the recent 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 breathe fixed in a 10.5.x point release. That's something that certainly could not acquire 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 break to shine. Whether it reigns for two and a half years, fondness 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 | killexams.com real questions and Pass4sure dumps

    Update: This post is no longer maintained. For the most up-to-date Hackintosh build, espy their always up-to-date usher to pile a Hackintosh.

    Article preview thumbnail The Always Up-to-Date usher to pile a Hackintosh (macOS Sierra)

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

    Read more Read

    If the tall cost tag for Apple hardware has kept you from buying a Mac but you're willing to roll up your sleeves and merit adventurous, you can build your own "Hackintosh"-a PC that runs a patched version of OS X Leopard. What?!, you say. Apple's creep 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 withhold together their own Hackintosh running Mac OS 10.5. Today, I'll point to you how to build your own tall 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 difficult drive. For $200 more, your Hackintosh can brag 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 drudgery on your part, so breathe ready to dedicate time to this project. To manufacture things as easy 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 utter the basic skills required.

    The Hardware

    There's no definitive best bet for a Hackintosh hardware configuration, so you may breathe 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) hasten successfully on this hardware setup.

    To manufacture things easy, I've withhold together my entire hardware setup as a wish list on Newegg. (You may notice that the total cost is listed at around $850, but I knocked $110 off the cost tag due to a pair 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 selfsame basic video card that comes installed in the default Mac Pro configuration), a 500GB difficult drive, a DVD burner, and an Antec Sonata case (which I've always liked for its looks and reserved fans). The motherboard is the most captious 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 follow the installation instructions, you shouldn't espy any major complications.

    The Build

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

  • Install the motherboard and CPU: You can follow these instructions almost without variation, but the heatsink and fan installation, in particular, is a handle different. Rather than hooking the heatsink to your motherboard, the included Intel heatsink pops into place. For a more circumstantial 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 hold in mind when you're installing the RAM is that you should install the matched pairs-that is, the pairs that advance in the selfsame package-in fondness colored slots. This isn't strictly necessary, but it's a pleasurable rehearse and generally means better performance.
  • Install the video card: These instructions actually detail how to install a PCI card, which is just a more universal artery of looking at your video card. The card we're using is a PCI Express card and should breathe installed in the top (orange) PCI slot.
  • Install the difficult drive and DVD drive: Your difficult drive is an SATA drive, which is not the nature of drive installed in the instructions (though they upshot 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). follow the selfsame 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 leer fondness the nearly completed image below. In that picture, I've yet to install the difficult drive and DVD drive and I soundless requisite to connect the case power and other connectors to the motherboard. (You may install other features of the motherboard if you prefer, fondness the FireWire connector for the back of the case).

    To manufacture 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 creep on. If the computer won't boot, you may acquire to open the case back up and double-check your installation. Among other things, breathe 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 merit to the bottom of it. The point is that when you're pile a PC yourself, you can and should breathe prepared to hasten into snags, so if you're not ready to troubleshoot if a problem arises, you may want to contemplate 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 fade off without a hitch.

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

    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 drudgery 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 glance drive. Then boot up your build and enter the BIOS setup. fondness 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 elect your glance drive by tabbing to the usurp 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 merit into some nitty gritty preparation. If you plugged in your drives fondness I suggested during your build, you should espy your difficult drive and DVD drive listed in the BIOS as Third IDE Master and Fourth IDE Slave. (Don't worry about the fact that your difficult 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 eschew once to fade back to the Main screen. Now hit the prerogative arrow key to creep to the Advanced tab. In the Advanced section fade 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). fade to "Boot Device Priority" and set your DVD drive as priority one and your difficult drive as priority two.

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

    Patch Leopard for your Hackintosh: There are a pair of different ways one could fade 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 system requires patching a Leopard DVD yourself, which isn't really as difficult as it sounds.

    If you conclude to fade the first route and you find a pre-patched version off BitTorrent, you can skip to the next section. Otherwise, let's merit 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 merit this in two ways: Either by downloading the image-again with BitTorrent-or by buying and then ripping a Leopard DVD to your difficult drive. Either artery you choose, when you're finished you should situation the ripped installer on your desktop and manufacture positive that it's named osx-leopard105.dmg.

    Now it's time to merit patching. To upshot 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 utter of the contents of the archive to your desktop (it should hold 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 9a581-patch.sh 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 leer like:

    APDIR=/Users/adam/DesktopDMG="/Users/adam/Desktop/osx-leopard105.dmg"

    While we're at it, let's edit the 9a581PostPatch.sh file as well. This time, edit the fourth and fifth lines at the top of the file to leer fondness 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, nature sudo -s, then enter your administrative password (your login password). Then nature cd Desktop and hit Enter. Now you're ready to apply the patch. hold in mind that you'll requisite plenty of space on your difficult drive to discharge the patch. I had around 20GB of free space when I did it, though I'm positive you could merit away with less. To execute the patch, type:

    ./9a581-patch.sh

    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 acquire a clock on it, but I'm pretty positive the patch took at least an hour on my MacBook Pro.

    If you acquire wretchedness with the patch and you've got less free space, try freeing up some difficult drive space and trying again. When the patch has successfully completed, you should espy a recent 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 appropriate 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.

    Installation

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

    You'll now espy the boot: prompt. Enter -v -x and press Enter. (Don't examine me why, but this is the only artery the install DVD would boot for me. Not using these options caused the boot to hang indefinitely every time.) You should now espy lots of text scrolling over your monitor. You may even espy some daunting errors. Don't breathe alarmed; just let it continue. After several minutes, the graphical Leopard installer should breathe 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 upshot first: Format their difficult drive so that it's prepared to receive the Leopard installation. So fade to Utilities in the menu bar and select Disk Utility (if you don't acquire a working mouse yet, you can soundless 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 solace of your keyboard with the…

    Read more Read
  • Select your difficult drive in the left sidebar.
  • Click on the tab labeled Partition.
  • Select a 1 partition Volume Scheme, designation the volume Leopard, and elect Mac OS Extended (Journaled) as the format.
  • Last, click the Options button and elect 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 follow the on-screen instructions and elect your newly created Leopard partition as the install destination. Then, before you manufacture 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 appropriate everything on the patched DVD, so they won't breathe installing them now.

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

    Post-Installation

    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 fondness final 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, fade to Utilities in the menu bar and select Terminal. It's time to apply the post-install patch.

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

    ./9a581PostPatch.sh

    ...and hit Enter. The script will creep and copy files about (answer yes when prompted), and when it's finished, you'll breathe 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 breathe 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 breathe jubilantly welcomed in a handful of languages as if Steve Jobs himself is shaking your hand for a job well done. utter of your hardware should drudgery exactly as you'd expect. Your sound, networking, and video will utter drudgery 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 drudgery flawlessly. Firefox is browsing, Quicksilver is doing its thing, Spaces are rocking, Stacks are stacking, Cover tide is flowing, and Quick leer 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 fade 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 pair of weeks ago, I circumstantial how I built a Hackintosh Mac on the cheap from start …

    Read more Read But Really, How Does It Work?

    I'm soundless stretching my legs in this recent build, and I'm planning on bringing some benchmarks to the table soon so you acquire a better notion how this machine matches up to its Mac counterparts, but so far it's running fondness 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 instant 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 manufacture 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 found 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 breathe positive to post an update.

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

    Click to viewOn Tuesday I circumstantial 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 breathe sure, but it's too the most powerful Mac per dollar I've ever used. If you've got any sustain pile 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 pleasurable hack and cherishes his Macintosh, so pile a Hackintosh was a flawless fit. His special feature Hack storm appears every Tuesday on Lifehacker. Subscribe to the Hack storm RSS feed to merit recent 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 [48 Certification Exam(s) ]
    CIW [18 Certification Exam(s) ]
    Cloudera [10 Certification Exam(s) ]
    Cognos [19 Certification Exam(s) ]
    College-Board [2 Certification Exam(s) ]
    CompTIA [76 Certification Exam(s) ]
    ComputerAssociates [6 Certification Exam(s) ]
    Consultant [2 Certification Exam(s) ]
    Counselor [4 Certification Exam(s) ]
    CPP-Institue [2 Certification Exam(s) ]
    CPP-Institute [1 Certification Exam(s) ]
    CSP [1 Certification Exam(s) ]
    CWNA [1 Certification Exam(s) ]
    CWNP [13 Certification Exam(s) ]
    Dassault [2 Certification Exam(s) ]
    DELL [9 Certification Exam(s) ]
    DMI [1 Certification Exam(s) ]
    DRI [1 Certification Exam(s) ]
    ECCouncil [21 Certification Exam(s) ]
    ECDL [1 Certification Exam(s) ]
    EMC [129 Certification Exam(s) ]
    Enterasys [13 Certification Exam(s) ]
    Ericsson [5 Certification Exam(s) ]
    ESPA [1 Certification Exam(s) ]
    Esri [2 Certification Exam(s) ]
    ExamExpress [15 Certification Exam(s) ]
    Exin [40 Certification Exam(s) ]
    ExtremeNetworks [3 Certification Exam(s) ]
    F5-Networks [20 Certification Exam(s) ]
    FCTC [2 Certification Exam(s) ]
    Filemaker [9 Certification Exam(s) ]
    Financial [36 Certification Exam(s) ]
    Food [4 Certification Exam(s) ]
    Fortinet [13 Certification Exam(s) ]
    Foundry [6 Certification Exam(s) ]
    FSMTB [1 Certification Exam(s) ]
    Fujitsu [2 Certification Exam(s) ]
    GAQM [9 Certification Exam(s) ]
    Genesys [4 Certification Exam(s) ]
    GIAC [15 Certification Exam(s) ]
    Google [4 Certification Exam(s) ]
    GuidanceSoftware [2 Certification Exam(s) ]
    H3C [1 Certification Exam(s) ]
    HDI [9 Certification Exam(s) ]
    Healthcare [3 Certification Exam(s) ]
    HIPAA [2 Certification Exam(s) ]
    Hitachi [30 Certification Exam(s) ]
    Hortonworks [4 Certification Exam(s) ]
    Hospitality [2 Certification Exam(s) ]
    HP [750 Certification Exam(s) ]
    HR [4 Certification Exam(s) ]
    HRCI [1 Certification Exam(s) ]
    Huawei [21 Certification Exam(s) ]
    Hyperion [10 Certification Exam(s) ]
    IAAP [1 Certification Exam(s) ]
    IAHCSMM [1 Certification Exam(s) ]
    IBM [1532 Certification Exam(s) ]
    IBQH [1 Certification Exam(s) ]
    ICAI [1 Certification Exam(s) ]
    ICDL [6 Certification Exam(s) ]
    IEEE [1 Certification Exam(s) ]
    IELTS [1 Certification Exam(s) ]
    IFPUG [1 Certification Exam(s) ]
    IIA [3 Certification Exam(s) ]
    IIBA [2 Certification Exam(s) ]
    IISFA [1 Certification Exam(s) ]
    Intel [2 Certification Exam(s) ]
    IQN [1 Certification Exam(s) ]
    IRS [1 Certification Exam(s) ]
    ISA [1 Certification Exam(s) ]
    ISACA [4 Certification Exam(s) ]
    ISC2 [6 Certification Exam(s) ]
    ISEB [24 Certification Exam(s) ]
    Isilon [4 Certification Exam(s) ]
    ISM [6 Certification Exam(s) ]
    iSQI [7 Certification Exam(s) ]
    ITEC [1 Certification Exam(s) ]
    Juniper [64 Certification Exam(s) ]
    LEED [1 Certification Exam(s) ]
    Legato [5 Certification Exam(s) ]
    Liferay [1 Certification Exam(s) ]
    Logical-Operations [1 Certification Exam(s) ]
    Lotus [66 Certification Exam(s) ]
    LPI [24 Certification Exam(s) ]
    LSI [3 Certification Exam(s) ]
    Magento [3 Certification Exam(s) ]
    Maintenance [2 Certification Exam(s) ]
    McAfee [8 Certification Exam(s) ]
    McData [3 Certification Exam(s) ]
    Medical [69 Certification Exam(s) ]
    Microsoft [374 Certification Exam(s) ]
    Mile2 [3 Certification Exam(s) ]
    Military [1 Certification Exam(s) ]
    Misc [1 Certification Exam(s) ]
    Motorola [7 Certification Exam(s) ]
    mySQL [4 Certification Exam(s) ]
    NBSTSA [1 Certification Exam(s) ]
    NCEES [2 Certification Exam(s) ]
    NCIDQ [1 Certification Exam(s) ]
    NCLEX [2 Certification Exam(s) ]
    Network-General [12 Certification Exam(s) ]
    NetworkAppliance [39 Certification Exam(s) ]
    NI [1 Certification Exam(s) ]
    NIELIT [1 Certification Exam(s) ]
    Nokia [6 Certification Exam(s) ]
    Nortel [130 Certification Exam(s) ]
    Novell [37 Certification Exam(s) ]
    OMG [10 Certification Exam(s) ]
    Oracle [279 Certification Exam(s) ]
    P&C [2 Certification Exam(s) ]
    Palo-Alto [4 Certification Exam(s) ]
    PARCC [1 Certification Exam(s) ]
    PayPal [1 Certification Exam(s) ]
    Pegasystems [12 Certification Exam(s) ]
    PEOPLECERT [4 Certification Exam(s) ]
    PMI [15 Certification Exam(s) ]
    Polycom [2 Certification Exam(s) ]
    PostgreSQL-CE [1 Certification Exam(s) ]
    Prince2 [6 Certification Exam(s) ]
    PRMIA [1 Certification Exam(s) ]
    PsychCorp [1 Certification Exam(s) ]
    PTCB [2 Certification Exam(s) ]
    QAI [1 Certification Exam(s) ]
    QlikView [1 Certification Exam(s) ]
    Quality-Assurance [7 Certification Exam(s) ]
    RACC [1 Certification Exam(s) ]
    Real-Estate [1 Certification Exam(s) ]
    RedHat [8 Certification Exam(s) ]
    RES [5 Certification Exam(s) ]
    Riverbed [8 Certification Exam(s) ]
    RSA [15 Certification Exam(s) ]
    Sair [8 Certification Exam(s) ]
    Salesforce [5 Certification Exam(s) ]
    SANS [1 Certification Exam(s) ]
    SAP [98 Certification Exam(s) ]
    SASInstitute [15 Certification Exam(s) ]
    SAT [1 Certification Exam(s) ]
    SCO [10 Certification Exam(s) ]
    SCP [6 Certification Exam(s) ]
    SDI [3 Certification Exam(s) ]
    See-Beyond [1 Certification Exam(s) ]
    Siemens [1 Certification Exam(s) ]
    Snia [7 Certification Exam(s) ]
    SOA [15 Certification Exam(s) ]
    Social-Work-Board [4 Certification Exam(s) ]
    SpringSource [1 Certification Exam(s) ]
    SUN [63 Certification Exam(s) ]
    SUSE [1 Certification Exam(s) ]
    Sybase [17 Certification Exam(s) ]
    Symantec [134 Certification Exam(s) ]
    Teacher-Certification [4 Certification Exam(s) ]
    The-Open-Group [8 Certification Exam(s) ]
    TIA [3 Certification Exam(s) ]
    Tibco [18 Certification Exam(s) ]
    Trainers [3 Certification Exam(s) ]
    Trend [1 Certification Exam(s) ]
    TruSecure [1 Certification Exam(s) ]
    USMLE [1 Certification Exam(s) ]
    VCE [6 Certification Exam(s) ]
    Veeam [2 Certification Exam(s) ]
    Veritas [33 Certification Exam(s) ]
    Vmware [58 Certification Exam(s) ]
    Wonderlic [2 Certification Exam(s) ]
    Worldatwork [2 Certification Exam(s) ]
    XML-Master [3 Certification Exam(s) ]
    Zend [6 Certification Exam(s) ]





    References :


    Dropmark : http://killexams.dropmark.com/367904/11775650
    Wordpress : http://wp.me/p7SJ6L-1xE
    Issu : https://issuu.com/trutrainers/docs/9l0-061
    Dropmark-Text : http://killexams.dropmark.com/367904/12368176
    Blogspot : http://killexamsbraindump.blogspot.com/2017/11/review-9l0-061-real-question-and.html
    RSS Feed : http://feeds.feedburner.com/ExactlySame9l0-061QuestionsAsInRealTestWtf
    Box.net : https://app.box.com/s/b92v6yoqvod1xb4ov44qa9vzj9etsgup
    zoho.com : https://docs.zoho.com/file/64ypue695625b81424defb2a0a7635aee3339






    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 |

    www.pass4surez.com | www.killcerts.com | www.search4exams.com | http://tractaricurteadearges.ro/