|
With Yojimbo, a seasoned Mac development team took a fresh look and found the Mac platform provided the support it needed to finally create a product that had long been on the drawing board. The result combined several innovations in a product that is easy to learn and use. Yojimbo stands out from other applications with a design focus of staying out of the user's way while remaining available. Yojimbo's purpose is to help people manage the torrent of everyday information that is part of today's digital lifestyle. It solves that problem well by combining many strengths: the ease with which a single item can be captured and managed; the range of information content types it captures (text, bookmarks, PDF files, individual web pages, serial numbers and passwords); and the variety of methods available for organizing and finding items. This product started as the brainchild of Steve Kalkwarf, senior software engineer at Bare Bones Software. Steve kept shaping and refining his ideas, and when Tiger shipped, all of the Mac technologies fell into place. Strong Products Require Strong PlatformsAccording to Siegel, Kalkwarf and the rest of his development team could not have translated their ideas into working software on just any computer platform. In fact, even though they were already very experienced at creating Macintosh software, they could not have created Yojimbo until Tiger arrived. Siegel says some on the team had been examining this problem of personal data collection for a number of years. Cocoa, which provides a great way to develop new applications, had been there for a long time. But when Tiger came out, all of the pieces fell into place, with key technologies like Core Data, Sync Services, and Spotlight. So the story of Yojimbo is really about how all the pieces came together in a way that enabled us to create software that really reflects our vision for the product and for creating outstanding solutions for our customers. Before Tiger, when developers created a new application, they had to write their own code for creating the applications data model, moving data into and out of the model, integrating this model with the applications undo and redo functions, and writing the models data to permanent storage. But with Tiger, developers get Core Data, a framework for managing and persisting the data objects associated with an application. When you use Core Data to manage your applications data, you can avoid much of the design, coding, and testing work necessary to implement these functions; this leaves you free to concentrate on the unique functions of your application. In that fashion, Bare Bones Software designed Yojimbo's capabilities to extend beyond organizing small information items to include the ability to hold, say, an entire user manual, primarily due to the design decision of working with Core Data. And because Core Data is an integral component of Tiger, it provides a far more stable and reliable solution than a developer could create. As Rich explains it, Because Tiger includes Core Data, we didnt have to design a database model. The operating system gave us the database subsystem we needed, as well as built-in reliability and compatibility. Sync Services Is a Key Feature of Tiger and YojimboFor Rich and his development team, the Sync Services component of Tiger was one of the key technologies that made it possible for them to move Yojimbo off the drawing board and into development. Yojimbo's focus on the effortless, concentration-free experience includes the notion that a user should not need to remember which computer they used to store an item, but to have it in Yojimbo, regardless of the Macintosh that is providing access at the present time. Sync Services greatly simplifies the process of implementing data synchronization between compatible applications, using the customers .Mac account as the synchronization engine and the master repository of the applications combined data. Sync Services support is a key feature of Yojimbo, Rich says. By using Sync Services inside Yojimbo to perform record- and field-level synchronization of any changes, theres really an unparalleled user experience at work here. I can change an item on one Mac, add an item on a second Mac, and delete an item on a third Mac. That smoothness is key to the user experience, and our deep integration with services provided by the platform makes that possible. Yojimbo godfather Kalkwarf agrees. It would not have been possible in any reasonable sense, Steve says, to do good multi-machine syncing in Yojimbo without Sync Services. Jim Correia, the co-creator of Yojimbo, summarizes the importance of developing for a strong computer platform. Jim says, Cocoa and Core Data gave us huge building blocks. We didnt have to create a scalable, reliable data store—Core Data gave us that. We didnt have to reinvent all the standard user-interface widgets and connectors—Cocoa and Cocoa bindings gave us that. We didnt have to write a rich-text engine or a PDF display engine or a web-page display engine—the Macintosh platform gave us all that. So what did we do with all the time we saved? We wrote Yojimbo instead! Making Great Software with Xcode ToolsThe Macintosh platform provides developers with more than a powerful operating system that supports the creation of powerful applications; in the Xcode Tools, it also provides a powerful development environment that increases productivity and allows each developer to concentrate on the unique content of his or her application. Rich describes how the Macintosh development environment contributed to creating Yojimbo. He says, What the development team liked the best was the ease with which they could try out new user-interface and behavior concepts. With Xcode and Interface Builder, it was very quick to experiment with new ideas. If they built something and it didnt work right, they could afford to throw it away, especially since they could keep the parts that worked well. They just kept prototyping and building until they had an application that acted and flowed the way they wanted to. The Xcode IDE provides a high-level GUI for the development process at the project level—as opposed to the file-at-a-time orientation of a command-line environment. Xcode provides a graphical interface and built-in functions that simplify the classic tasks of coding, building, running, and debugging. In addition, it also handles version control for the projects code and Interface Builder for designing the user interface. The Xcode Tools suite also includes applications and command-line tools for profiling and optimizing your code. Cocoa Reduces Development Time—and EffortUsing Cocoa eliminates much of the coding that is common to most applications, including creating the user interface and hooking it up to the applications data structures. In this way, Cocoa significantly decreases the amount of time it takes to create an application. When asked why the Yojimbo development team decided on building Yojimbo as a Cocoa application (as opposed to using Carbon or a third-party application framework), Rich has an immediate answer: We asked ourselves, How can we best implement this product idea and bring it from inception to delivery in the shortest possible time? It was a pretty easy decision to make, and Cocoa was the logical choice. Several factors, he says, led to their decision to use Cocoa. The basic APIs that we needed to use—Sync Services and Core Data, for example—are accessible only through Cocoa, Siegel explains. And as Jim said, Cocoa does a lot for you—built-in behaviors, engines for displaying rich text, PDFs, and web pages, things like that. We also knew that we needed to do a lot of prototyping, and Interface Builder allows us to prototype new ideas quickly. So when youre starting a new product from scratch, Cocoa really does present the right solution. Real Benefits from Adopting Apple TechnologiesSiegel attributes the long-term success of Bare Bones Software to his companys judicious use of new technologies and its adherence to Apple best practices. We have a long and distinguished history of being first to bat with new Apple technologies, through both hardware and major OS transitions, he says. Being out there on the leading edge is pretty much part of our corporate DNA. If youre willing to produce market-leading products, he adds, you should look at how new Mac OS X technologies can help you make a better product, help you make a better experience for your customer. From an engineering standpoint, adopting these leading-edge technologies yielded better solutions faster for the problems that were trying to solve. At a higher level, there is the advantage that a better product performs better in the marketplace, which is good for everybody—its good for customers because it solves their problems, its good for us as a company, and its good for Apple because it showcases the unique abilities of the Macintosh platform. However, he cautioned against adding technology for technologys sake. You have to adopt technologies in a considered way—you cant just jump on every new technology that comes along and then figure out how youre going to hammer it into a bunch of compliant products. Rich points out an unexpected benefit of using the technologies that Apple provides. Once you start following the best practices that are recommended by Apple, whenever there are major hardware or OS transitions, youre able to make those transitions more quickly. Evidence of this comes from Steve Kalkwarf, who says, For Yojimbo, using Xcode Tools and Cocoa made the creation of our first Universal Binary as easy as Apple said it would be. For more information Yojimbo, see the see Bare Bones Software website. |