Skip navigation

Hosting by: digital.forest

2001 Papers

Here are the papers from MacHack 16 in 2001.


The PalmOSnomicon
Ranier Brockerhoff
A shadowy client hires Our Hero to write a Palm Application; the mad scribblings of a deranged programmer surface; Our Hero goes "by the docs" into the nether regions and narrowly avoids doom; the eldritch denizens of the Palm OS appear menacingly; St. Bjarne appears in a fever dream and mutters "pure virtual functions"; the ultimate doom is beaten back in the last moments by the power of Object-Oriented Programming and Our Hero survives to write another paper.

Adventures in HSV Space
Darrin Cardani
Describes how to convert RGB images into HSV space and why you would want to do so. It also describes some new techniques for choosing parameters in HSV space, and presents code for some interesting image and video filters that work in HSV space, including cleaning up skin tones, creating cartoon-like effects, and manipulating individual colors in a complex scene.

Ubiquitous Mirrors: turning clients into servers
Michael Dautermann
Accessing software from web sites is very convienent and fast, that is, unless the site you're retrieving from is on the other side of the world or hindered by a very slow link. Mirrors have been one solution, but up until now the only easy way you could run your own mirror was to be Root on a UNIX (or OS-X) box. This paper will describe the problems associated with distributing software, both as a developer and as a service provider (i.e. a web site containing commercial or shareware software). This paper will also offer different ideas for solutions: making use of underutilized CPU and network bandwidth. Other forms of Distributed Software Distribution will be discussed, and we'll also propose a Software Archive Mirror application that runs on older Macintosh computers. Using data gathered from this particular package we'll be able to answer certain compelling academic questions such as: Does the physical location between client and server really matter? Or is it all about where you sit on the network?

Pilot: Flight simulation on the Palm OS
Andrew S. Downs
Flight simulation on a Palm device requires attention to the purpose of such a program, followed by selective inclusion of essential features. Performance considerations encourage some calculations ahead of time. Graphics also pose a challenge due to bitmap constraints in older OS versions and lack of polygon support.

Schmoozing With OmniNetworking Framework
William Garrison
Historically, the Cocoa frameworks have not provided integrated support for TCP/IP network programming. The OmniNetworking framework fills this gap by providing Objective-C wrappers around the BSD socket API that integrate well the Cocoa frameworks. This paper presents an introduction to the OmniNetworking framework and its use in developing client and server applications for TCP/IP network communication.

BootX: The Mac OS X Bootloader
Louis Gerbarg
The Macintosh has used a more or less unchanged boot mechanism for over a decade. Even with initial introduction of OpenFirmware, little changed. The advent of the iMac, and later Mac OS X, has altered the boot sequence significantly. This paper contains a cursory look at OpenFirmware, the booting mechanisms used by various operating systems that run on the Power Macintosh (such as Linux, NetBSD and OpenBSD), as well as the different booting mechanics of several generations of Macintosh hardware. Particular emphasis will be paid to the boot process of Mac OS X (from the firmware up to early kernel initialization) and its bootloader, BootX.

Data sharing on Mac OS
Miroslav Jurisic
This paper explores different possibilities for data sharing on Mac OS. The applications for data sharing include communication between different processes as well as communication between processes and standalone code. The mechanisms explored cover Apple Events, Code Fragment Manager, Process-to-Process Toolbox, Gestalt, Multiprocessing Queues, Mach IPC, and others. The environments considered are Mac OS 8 and 9, Carbon on Mac OS 8 and 9, Carbon on Mac OS X, Mac OS X, and the Classic environment on Mac OS X. The paper compares different methods of data sharing based on their runtime requirements, operating system requirements, ease of programming, user experience, and appropriateness for different applications.

Cocoa from a Scritping Language
Richard Kiss
The dynamism of Objective-C makes it a good candidate for binding to scripting languages with a generalized gateway to the messaging system. We present here a discussion of issues related to making the Objective-C runtime available to a scripting language. The particular language chosen here is Lua, but much discussion can be generalized to the language of your choice, including gaining insight into issues facing the Java bridge.

Reliability on the Crowded Net
P.D. Magnus
On-line, just as off-line, there are ways of assessing the credibility of information sources. The Internet, although it arguably makes for nothing wholly new in this regard, complicates the ordinary task of assessing credibility. In the first section, I consider a specific example and argue that Internet content providers have no clear interest in resolving these comlications. In the second, I consider four general ways that we might assess credibility and explore how they apply to life online. Finally, I argue that even careful information gathering may pose subtle pitfalls but that some of these may be mitigated on-line.

Practical Altivec Stratigies
Ian Ollmann, PhD
Despite the widespread availability of Altivec enabled processors, proven performance advantages and high end user demand for Altivec accelerated applications, most PowerPC software contains little or no Altivec code. The largest single barrier to widespread adoption seems to be developer awareness of programming tools, techniques and proven software design paradigms required to become successful with SIMD. This paper discusses key hardware features that affect Altivec performance, presents software architecture principles based on these that work well with Altivec, and concludes with a discussion of a practical strategy for incorporating Altivec into your existing application.

Straighten Up and Fly Right: aligning your data
Jonathan "Wolf" Rentzsch
Data alignment is an important issue for all programmers who directly use memory. Data alignment affects how well your software performs, and even if your software runs at all. By understanding the causes behind alignment, we also can explain some of the "weird" behaviors of some processors.

Integumentary Customization: integrating 'skins'
Toby Rush
One of the concepts which has helped make the Macintosh revolutionary is its ability to be customized to match the user's preferences. Several programs that have appeared in the last few years use the idea of "skins"--customizable interfaces--to extend this capability further. The most effective skins not only allow the user to change colors, background patterns and window styles, but also to determine the placement and presence of controls. While implementing skins in your program does require you to design the program from the ground up with this in mind, the actual implementation is not difficult. This paper discusses the advantages of using skins, how to reconcile skins with established interface design principles, and walks through the process of designing a "skinnable" application.

Updating Adaptive, Decentralized Peer to Peer Networks
Gordon Worley
Peer to peer networks make it possible for individuals to share files without the need of servers. While such networks offer many benefits and are excellent at file sharing, they are currently useless for many other tasks, such as hosting a collection of hyperlinked documents. Adaptive, decentralized peer to peer networks like Freenet are capable of changing this, but such networks lack a means of updating files. This paper outlines a proposal for updating such a network. It discusses the security issues surrounding updating and deals effectively with them. Also, it looks at the possible consequences of updatable peer to peer networks and why and where it would be most beneficial.

[/PastShows/MacHack16] Link to this story
Last updated 2006-03-29