Paper Presentations

Graphic Elements: Designing a High-Performance, Highly General Graphics Subsystem

By Al Evans, al@powertools.com
Graphic Elements is a highly general graphics subsystem which offers performance on a par with dedicated "sprite" systems. A Graphic Element is an abstract entity that knows how and where to draw itself on a computer display, and may (or may not) know how to respond to all possible causes of change in its appear-ance: the passage of time, contact with another Graphic Element, and direct action by the user. This paper discusses the design goals set for Graphic Elements, the design decisions made on the basis of those goals, and the insights gained by the author in the process of implementing those decisions in the real world of current microcomputers.

Executor Internals: How to Efficiently Run Mac Programs on PCs

By Mathew J. Hostetter and Clifford T. Matthews
Presenter By Cliff Matthews, ctm@ardi.com
Executor is a commercial Macintosh emulator that uses no software from Apple, but is still able to run much 68k based Macintosh software faster on Pentiums than the same software runs on 68k based Macs. This paper contains some implementation details, including descriptions of Executor's synthetic CPU, graphics subsystem and debugging environment. Portability issues, current limitations and future plans are also presented.

Experiences Implementing SMTP with PowerPlant

By Christopher Haupt, cfh@cyberpuppy.com
This paper provides an introduction to the Simple Mail Transport Protocol. It explains the basic state machine that describes the protocol, and details the flow of information that encompasses a mail transaction. A Metrowerks PowerPlant implementation of the basic SMTP mechanism is presented, with details on how to get started with the PowerPlant networking classes. Some of the issues you must watch out for with the current class framework are revealed.

Scriptability: A Bare-Bones Introduction

By Kevin C. Killion, kevin@shsmedia.com
Set aside your IM, AE Registry, and tech notes for the moment. Starting fresh, let's review the bare essentials you need to start making your app scriptable. Simple things should be simple, complex things should be possible, so let's ignore the rampant excesses of the AppleScript spec for now. We will introduce scripting with a simplified explanation of the concepts, and follow this up with implementation of a minimal, but very useful initial set of scripting functions. As an added bonus, we'll consider how to design your implementation for accessibility from BASIC as well as AppleScript.

Can Software development be elevated from the Microsoft style?

By Oleg Kiselyov, Ph.D., oleg@ponder.csci.unt.edu
Microsoft epitomizes bloated and unsafe programming combined with poor design and trading of quality for speed (and market leverage). This spoils even good ideas they occasionally have.
This paper is an eclectic study of (mostly C++) programming techniques, with lots of "good" and "bad" code snippets, and pessimistic conclusions. The bad snippets are taken from OpenDoc, MacTech magazine, and code found in trade rags and on the net. To contrast good and bad, the snippets are rewritten in a better style. Moreover, the paper shows off and expounds on a few immensely powerful and safe programming techniques, like nested functions, lazy
objects, stealing of the body, iterators in a local context. Deep obscurity of these techniques tells however, that resistance is futile and we all will be assimilated.

Loss-Less Compression : It depends upon what you know

By Chris Russ, jcr6@aol.com
Loss-less compression is exactly what it sounds like. Data is compressed and later restored to its original form - modem transmission, disk, and tape storage, and RAM compression all depend upon data being restored EXACTLY as it was before. But some forms of compression are better than others. In the last twenty years the field of data compression has changed significantly both because of better algorithms and faster computers. This paper surveys the current state of compression and examines some of the pitfalls.

Introducing the Speech Recognition Manager

By Matt Pallakoff and Arlo Reeves
Presenter By Arlo Reeves, arlo@apple.com
You don't have to be a Star Trek fan to know that the computer of the future will talk and listen. Macintosh computers have already been talking for a decade. Now any Power Macintosh application can use Apple's new Speech Recognition Manager to recognize and respond to spoken commands as well. In this article we'll show you how easy it is to add speech recognition to your application.
Speech Recognition technology has improved significantly in the last few years. It may still be a long while before you can carry on arbitrary conversations with your computer. But if you understand the capabilities and limits of this technology, you will find it easy to create speech recognition applications that are fast, accurate, and robust.
This article tells you how to quickly get started using the Speech Recognition Manager API using illustrated code samples from a simple speech recogntion application, SRSample, which is included on this issue's CD. You'll also get some tips on how to make your application's use of speech recognition compelling, intuitive and reliable. For all the API details, check out the new Inside Macintosh chapter titled "Speech Recognition Manager," also included on this issue's CD.

The Standard Template Library (STL) and Macintosh Programming

By George Geller, 71321.2544@CompuServe.COM
The Standard Template Library (STL) was developed by Alexander Stepanov and Meng Lee. This large and innovative body of code has been adopted as an important part of the new ANSI draft standard C++ and promises to dramatically influence the way C++ programmers work. STL is simultaneously efficient, general, and compact in representation. Its central paradigm is the decomposition of programming tasks into generalized algorithms that work on 'containers'. The containers hold native C++ data types or user-defined objects. This approach, known as generic programming, drastically reduces the code base necessary to handle many common programming tasks. In this presentation, I will introduce STL and show examples of its application in Macintosh programming. The current state of STL support in Macintosh C++ compilers will also be reviewed.

Old Possums Book of Practical Objects

By Shane D. Looker, Looker1@aol.com
Object-oriented programming has been promoted as a way to increase code reusability, code reliability, and get your socks whiter. The potential is there, but nobody seems to be sharing or selling classes that are truly reusable. In this paper, several small but powerful C++ base objects are described that can be taken and used as is, or, by overriding a few methods extended to fit a specific need in a product. Classes shown are a simple binary tree class, a FIFO queue, a Boyer-Moore search object, and a simple keyword class.

The Abuse of Comments

By Michael Rutman, moose@manicmoose.com
For some reason, everyone has heard that you can't overcomment. Nobody says why you can't, nor does anyone really say what benefits you get from large comments. They just say they are good. Well, I'll say they can be bad, and I'll show 3 types of bad comments I have come across: over commenting; to cover up bad variable names; and poorly worded comments. Following the examples of bad comments, I'll show some simple coding techniques, which most experienced programmers already know.

Using and Creating Cryptographic-Quality Random Numbers

By Jon Callas, jon@worldbenders.com
Privacy software needs random numbers for a number of purposes, and these numbers must be qualitatively different from random numbers used for statistical software. This paper describes what makes random numbers of "cryptograpic quality," how to get sources of seed values for pseudo-random number generators, and pitfalls the unwary programmer can stumble into. It also includes a high-quality pseudo-random number generator that can be continuously updated with new observations of randomness.

Home | About | MacHack 96 Info | Top Issues | Resources

Send comments or feedback for these pages to: www-machack@machack.com

Last updated: June 5, 1996 by dpk