Papers
Here are the papers from the 2002 MacHack Conference.
Using JINI Network Technology in MacOS X
B. Scott Andersen
The Macintosh(R) became a first-class Java(TM) programming language platform with the release of Apple(R) Computer's MacOS X(TM) operating system. Macintosh developers can now incorporate Jini(TM) Network Technology, a distributed programming model for the Java programming language, into their designs to create software resilient to network failures and accommodating to change. Jini technology provides the means for service discovery, resource management, interprocess communication, and process activation. Best of all, Jini technology is free with the acceptance of a no-cost, evergreen (never expiring) license. This paper introduces the high-level concepts of Jini technology, the services bundled within the Jini Technology Starter Kit, and illustrates the power and simplicity of this technology with a sample distributed application.
Plugged-in Cocoa: Making other people's software work for you
Rainer Brockerhoff
The Objective-C run-time model is notably suited for dynamically loading and executing thirdparty code. However, few Cocoa applications take advantage of this capability to extend their own functionality through third-party plug-ins. We'll show one of the ways of doing so.
Recent Additions for Mac OS X: catching and reporting file operations
Andrew Downs
Not so long ago, patching the file system provided an opportunity to receive notification about operations on files, including creation and deletion. OS X requires a new approach. The Virtual File System concept allows for stacking of file system modules. A VFS can relay file operation details to an application in user space, which is then responsible for informing the user.
JavaScript 2.0: Evolving a Language for Evolving Systems
Waldemar Horwat
JavaScript 2.0 is the next major revision of the JavaScript language. Also known as ECMAScript Edition 4, it is being standardized by the ECMA organization. This paper summarizes the needsthat drove the revision in the language and then describes some of the major new features of the language to meet those needs -- support for API evolution, classes, packages, object protection,dynamic types, and scoping. JavaScript is a very widely used language, and evolving it presented many unique challenges as well as some opportunities. The emphasis is on the rationale, insights,and constraints that led to the features rather than trying to describe the complete language.
Using Generic Programming Techniques In C++ With The Mac OS Toolbox
Joshua Juran
Whereas inheritance, polymorphism, and other object-oriented techniques are familiar to Mac developers using C++, generic programming techniques (judging by current common practice) typically are not. Generic programming (specifically, the use of templates) allows the various classes and other types of an application that were developed without knowledge of each other to be combined in useful ways, while maintaining type safety (without even requiring the use of dynamic_cast). Classes may implement a required interface without deriving from an abstract base (e.g. iterators).
Examples of generic programming applied include reference-counting pointer objects, also known as 'smart pointers'. Not only are smart pointers useful for deallocating memory, when combined with system resource objects (e.g. Mac resource handles, file descriptors, sockets, windows, etc.) they are indispensible for ensuring that these resources get released, even (or especially) when exceptions are thrown.
An in-depth look at the Pedestal framework demonstrates these techniques in action.
How I Learned to Stop Worrying and Love the Command-Line
Richard Kiss
Many long-time Macintosh programmers correctly view the command-line as an anachronism of old, textbased computing inaccessible to ordinary people. Yet, much of the power of UNIX is the large set of standards-based command-line utilities that has evolved to allow gurus to perform complex tasks quickly. Now that Mac OS X is upon us, developers may be reticent to learn these tools, with questions about how to start, what to do when stuck, and hauntings that full-time immersion might result in a loss of focus on human-based computing. While there is legitimate concern to that last point, I urge you that the benefits to your productivity will more than outweigh the drawbacks. Welcome to the dark side; we hope you never leave.
The Nitrogen Manifesto
Lisa Lippincott
With recent improvements such as Carbon events and the hierarchical control manager, the Carbon API has usurped much of the role formerly filled by class libraries like MacApp. But one of Carbon's strengths, its language-neutral design, is also a weakness. This neutrality leads it to use weakly typed interfaces, error codes, resource disposal functions, and other error-prone patterns. While these features make using Carbon possible in C, they make using Carbon cumbersome in C++. I propose to create an open-source C++ interface to Carbon. I call this library Nitrogen.
Callbacks in plain vanilla AppleScript
Greg Lo
A common technique for creating generic subroutine libraries that can be adapted for use in different situations is to provide a mechanism to "call back" to the caller; however, it is not immediately obvious how this can be done with AppleScript. This paper discusses a simple technique for implementing a generic callback mechanism in plain vanilla AppleScript. Specifically, the technique allows one subroutine to invoke another specified in a variable, rather than one whose name is known when the subroutine was written.
WebObjects
Jonathan 'Wolf' Rentzsch
WebObjects gives you the power to quickly develop robust applications that can be distributed over the Internet. This paper will introduce you to WebObjects, explain what it can do, how it's put together, and what tools it provides. Finally, you'll see how WebObjects stacks up to "competitors" such as PHP, JSP, ASP, and WebLogic.
Cache Consciousness: coding for machines with deeper pipelines and shallow caches
Chris Russ
Advanced Disk Drive Caching
Chris Russ and Brent Neal
As computers reach well into Gigahertz performance ranges and memory busses strive to keep up, there is one critical component that fails miserably in the quest for speed: Hard disks. This is a proposal for an advanced disk-drive caching mechanism that trades storage for speed and endeavors to keep the drive light out.
[/PastShows/MacHack17]
Link to this story
Last updated 2006-03-29




