Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

The Mac Platform Powers Innovation: 
The Pieces Come Together for Bare Bones and Yojimbo

Yojimbo is an application so well crafted that it succeeds in making organizing information look easy. Maker Bare Bones Software describes Yojimbo as an “effortless, reliable information manager for Mac OS X.” And Macworld magazine calls Yojimbo “all about simplicity,” and “one of the most innovative new programs seen in years.” As Rich Siegel, founder and CEO of Bare Bones Software, says, “A lot of its power and ease of use come from the intrinsic design of the product. ”

But elegant design takes more than just excellent coding, and Siegel has a deeper story for developers. RIch explains, “and the design is backed up by the core Tiger technologies that made Yojimbo possible in the first place.”



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 Platforms

According 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 application’s data model, moving data into and out of the model, integrating this model with the application’s undo and redo functions, and writing the model’s 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 application’s 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 didn’t 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 Yojimbo

For 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 customer’s .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, there’s 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 didn’t have to create a scalable, reliable data store—Core Data gave us that. We didn’t have to reinvent all the standard user-interface widgets and connectors—Cocoa and Cocoa bindings gave us that. We didn’t 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 Tools

The 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 didn’t 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 project’s 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 Effort

Using Cocoa eliminates much of the coding that is common to most applications, including creating the user interface and “hooking” it up to the application’s 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 you’re starting a new product from scratch, Cocoa really does present the right solution.”

Real Benefits from Adopting Apple Technologies

Siegel attributes the long-term success of Bare Bones Software to his company’s 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 you’re 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 we’re 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—it’s good for customers because it solves their problems, it’s good for us as a company, and it’s good for Apple because it showcases the unique abilities of the Macintosh platform.”

However, he cautioned against adding technology for technology’s sake.

“You have to adopt technologies in a considered way—you can’t just jump on every new technology that comes along and then figure out how you’re 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, you’re 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.