MacHack 2003 Content
Opening Keynote Speaker
Ken Arnold of Sun Microsystems and BSD fame will open the conference with his views on the past, present and future of BSD derived computing and undoubtedly a few MacHack surprises. Read more about that here.
Thursday Keynote Speaker
He's back from Redmond and this time it's personal. Scott Knaster, Superstar Author, Industry Veteran, Microsoft Escapee, may be best known for his cult classic Macintosh programming books but this year he'll make his mark presenting the second keynote at MacHack 18. His keynote will be presented using an interactive and highly experimental format, codenamed Vervays(TM), and may contain amusing anecdotes, snack foods, live quizzes, and other innovative features.
The following sessions have been confirmed for MacHack 2003. However, as is so often the case with MacHack, things are subject to change. The MacHack sessions committee continues to work on confirming additional speakers and topics, and more will be added as we draw closer to the conference. Changes are a given.
If you are interested in speaking, click here
and fill out the resulting form and the sessions committee will contact you for additional information.
Advanced Revolution: Functional Programming and Macros
Revolution is one of the easiest development environments there is, but this session examines how it can also be one of the most powerful. Using techniques drawn from Lisp, you'll learn how to apply Functional language concepts, and see how to implement Lisp-style Macros in Revolution. The result is less code that does more with fewer bugs.
Advanced Video Digitizing
Steve Sisak & Dave Koziol
Steve and Dave and the rest of the IOXperts staff have written video digitizers used in popular cameras from Logitech, Philips, ADS Technologies and many others.
In this session, you'll learn the tips and tricks of calling into video digitizers and building applications that take full advantages of their capabilities.
This session will also include time for Q&A from the audience.
Adventures into Objective-C, Confessions of a Java Junkie
James Duncan Davidson
Objective-C may be the first step in a twelve step program for recovering Java addicts. It has been for me. While at Sun I authored a few specifications for the Java and J2EE platforms and was the original author of Apache Tomcat and Apache Ant. After leaving Sun, I started playing with the Cocoa framework and Objective-C and became enchanted with the simplicity and ability of both the framework and the language to do incredibly powerful things with a minimum of fuss. To be sure, it is not the perfect language and has its share of warts and wrinkles, but it is an eminently pragmatic language to hack in. This presentation will dive into how Objective-C works, how it is fundamentally different than the other widely used object-oriented languages (with lots of examples comparing it to Java), and how its highly dynamic internals give programmers a toolset to write powerful code.
Automatic Schema Synchronization With WebObjects
Buried deep among the less-known WebObjects APIs is an incredibly useful framework for automatic synchronization of a database schema with a WebObjects database model. At MacsDesign Studio, we have taken advantage of this framework to simplify the development of database-independent, self-updating web applications. Unfortunately, not only is the documentation on this topic inadequate, but so are the vendor-specific database plugins that come bundled with WebObjects. In this presentation, I would explain how to develop a WebObjects application with the ability to automatically generate and update its database schema, and present extensions to the database plugins that are required in order to facilitate this functionality.
Back in Mac
Rob "CmdrTaco" Malda
Last year at MacHack, Rob came and saw all the glorious PowerBooks. He witnessed OS X in action. He beheld the hacks. And he played The Sims. Soon after, he broke down and joined the ranks of the Mac User purchasing one of his very own. With nearly a year of real Mac Usage under his belt, Rob returns to MacHack to share his experiences making the transition from Linux laptop, to Mac Laptop. From KDE to Aqua. But thankfully, from Unix to Unix.
Josef Wankerl, Isaac Wankerl, Glenn Meter, Ron Liechty, radar Pangaean, and Ken Ryall
A periential favorite. In this session, you'll have the opportunity to give Metrowerks the feedback you've been saving up for the last year.
Metrowerks staff members will be on hand to collect your thoughts, ideas, suggestions and complaints for how to make their tools rock.
Birds of a Feather: Contracting
This session will be an open discussion of all of the issues associated with being an independant Contractor. Topics will include Insurance, Contracts, Finding Jobs, and more.
Birds of a Feather: Embedded
Andrew S. Downs
Let's have an informal discussion of what software development
techniques work well for embedded systems and how to transfer desktop
development skills to the more constrained embedded world. Just for fun
we can talk about what processors and chip sets have brought us joy (or
Birds of a Feather: OpenBSD InstallFest
Topics discussed while the install is grinding will include:
- Ultra-brief history / comparison of the various flavors of BSD
- partitioning things right the first time (what's on each partition)
- differences from Mac OS X / Darwin layout and permissions
- Using the ports tree and packages to install insecure software
- URLs for more information
Birds of a Feather: PGP/GPG Users & Key-signing
Meet with other PGP and GPG users to discuss the state of PGP and security on OS X and exchange key signatures. Be sure to bring a picture ID (passport, drivers license, etc.) that can be verified and printouts of your key's fingerprint if you want other attendees to sign your key.
Birds of a Feather: Selling Shareware
This session will be an open discussion of all of the issues associated with selling shareware. Topics will include Processing Orders, Advertising, Serial Numbers, and more.
Building Better Classes
This is a back-to-basics session on good class design and implementation.
Some areas discussed will be: encapsulation, value vs. reference classes,
inheritance, constructors, destructors, conversion functions, and operator
Burning your own Toast
Jaguar introduced API's that allow one to quickly and easily build apps
that can burn audio and data CDs and DVDs without having to worry about
driver coding. Whether you want to burn off a disc of data files from
a number crunching app, make a (legal) copy of your audio CDs, an
application to back up your e-mail or applications folders, or just do
something cool, this session aims to show you how to build an
application quickly. All Apple applications that burn CD's make use
of this technology, you can use this too..
C++ for Yoots!
An introduction to C++ language features including templates, STL, and multiple inheritance and how they can help you.
C++ Grab Bag
One of my favorite reactions to a conference
presentation is "I didn't know you could do that!" In the hope
of provoking such a reaction, I will present a panoply of
little C++ contrivances.
Carbon Nation: Modern Mac Programming
With The Carbon Framework
Carbon is the modern Mac OS API, the result of nearly twenty years of
Mac OS evolution, and provides a foundation for writing Mac OS X
applications as well as a strategy for applications that must still run
on Mac OS 8 and 9. This session will explain what Carbon is, who
should use it, and how to make your Carbon applications leverage the
best of what Mac OS X has to offer.
Cocoa, Pre Conference Training
Combining Rendezvous with Jini
One of the hardest things about Jini is getting it configured and set up. After that, writing applications that take advantage of the technology is pretty straightforward. Rendezvous (or more generically ZeroConf ) takes care of a lot of the set up but doesn't make it easy to write robust applications.
The two technologies supplement each other to make it simple for you to easily configure and run robust distributed applications. This session will show you how to take advantage of the combination of Apple and Sun technology.
Cross-Platform Programming in wxWindows (or: or how to take it all with you, without Java.)
wxWindows is a C++ framework that has cross-platform support built-in (currently running on the Mac, Windows, and X-Windows). This session will answer fundamental questions such as:
- What does wxWindows give me?
- What kind of source license does it have?
- How easy is it to use?
- Can I integrate it with my existing code?
- How can I get it?
- How does it compare to the familar Mac frameworks ( MacApp , Powerplant)?
Database Connectivity Issues and Mac OS X
Jay D. Weiss
Database connectivity issues and Mac OS X. This paper will look at the challenges of connecting to corporate databases and serving database running on Mac OS X. Mac OS X NATIVE products from Oracle and Sybase provide business with recognized Enterprise database solutions and make Mac OS X a viable platform for business needs. But challenges remain - ODBC drivers, database development tools, reporting tools are all in short supply under Mac OS X. However, the UNIX underpinnings of Mac OS X is proving to be a boon for business users as Unix based software is ported to Mac OS X. Windows based products are also making the transition since the systems services needed to move Windows application are now available under Mac OS X.
Frank Adessa and David Pearce
Developing Java applications that have a native look and feel on Mac OS X
There are tons of Java applications that have been written on and for other platforms that can easily be tuned to look and feel almost like native Mac OS X applications. Mac OS X ships with Java 1.3.1 and Jaguar users Apple's newly released Java 1.4.1. In this session we'll take the open source testing framework JUnit and tweak it to conform to Apple HI Guidelines. We'll set runtime properties, introduce platform specific code, take advantage of design patterns to tweak the look and feel, and demonstrate deployment options. Why should your user know they're running a Java application. We'll finish by considering what needs to be modified in an application written in Java for the Mac to make it look and feel right on other platforms.
Do's and Don'ts of Shareware
Sanford will explore the nuts and bolts of running a shareware business. Using his own company as a model, Sanford's session will get down and dirty with the many hidden details involved with writing, marketing, selling and supporting shareware. This session will add to Sanford's three part series presented last Fall on O'Reilly's MacDevCenter.com.
Don't Panic: The Hitch-Hacker's Guide to Getting Your Hack Done By Friday Night
Diane (Reamy) Capewell
Getting ideas for hacks is easy... getting your hack into shape for the Hack Show is hard. Join us for a lively discussion of what to do when things go wrong, what to do when things are going right, and how to tell the difference.
For newcomers: Find out what to expect during the hack contest, how to hit the ground running, and how to make the most of your fellow MacHackers.
For newcomers and veterans alike: Explore some common problems that can stop you, and how to work around those; how to salvage "near misses"; plus some of the things that can go *right*, and how to capitalize on those.
Establishing the Culture of a High Performance Team using XP
When changes to requirements are introduced during the software development
process, management is often left frustrated and the software developers are
asked to perform miracles. This problem is made even worse when management
treats software developers as a set of individual subcontractors instead of
treating them as a team. True teams are more than just a group of
individuals related by an organizational chart and a project name. This
session recounts how one company changed the culture of its software
development team and its management processes thereby achieving the
productivity of a high performance team.
Everything You Wanted To Know About PDF, But Were Afraid To Ask
"Ever wonder just what sorts of things live in a PDF file?ÊÊ Want to see what Apple did right, and what they haven't (yet) done...Well this is the place to come and learn.Ê We'll examine the Portable Document Format and it's parts - from colorspaces, font and images, to bookmarks, forms and security."
eXtreme Programming, Intro
Extreme Programming is the best-known of the new "agile software
development" processes. XP teams build running, tested software in very
short iterations of a week or two, working in close contact with the
customers and managers who need the software. Using practices such as
Simple Design, Test-Driven Development, and Refactoring, XP teams are
experiencing success at producing software that pleases their customers.
In this session we'll take a look at the XP values and practices, and how
they hang together to make healthy, fun projects.
eXtreme Programming, Planning with XP User Stories
Extreme Programming uses a short planning cycle of one or two weeks, which
is focused on delivering user-visible value. The planning process is best
used in concert with our "customers", but can also be used by a sharp team
to help their customers make good decisions about what can be accomplished
in the time available. In this session, you'll plan an imaginary project
three ways, starting from the well-known "You Must Do All This By January"
method, and finishing with the Extreme Programming style of planning.
You'll take home some ideas for making your own project life a bit better.
From Open Transport through CF Networking to Sockets: One Application's Story
When IQue Server moved from Mac OS 9 to Mac OS X, it had no idea what was in store for its networking code. Join us for an informative and heart-touching story of one application and its long and winding journeys through the land of three different networking APIs.
Goggles, Please! Exception Safety in C++
Even C++ developers who've been working with the language for years are
sometimes surprised at the recent advances in C++ best practices, esp.
regarding exceptions. Why is exception safety a Good Thing? Is your code
exception-safe? How can you design new code and refactor old code to be
exception-safe? We'll give you the guidelines you need, show you plenty of
examples, and get you on the path to writing airtight C++ code.
Hacking the Press
Adam C. Engst
You've been slaving over a hot compiler for months, and you're finally ready
to release the Great American Application. But if you screw up your product
release, no one will ever use your brilliant code and elegant user interface.
In this session, we will look at several examples of the materials created
for real-world product releases, critiquing each one. We'll examine press
releases, release notes, Web-based product pages, and more. For each one,
we'll evaluate its content and presentation for completeness and efficacy.
Our goal? To determine exactly what's necessary in release materials to give
your product the best chance of being covered by the press.
Although I'll have several real-world examples of release materials, feel
free to bring links to your own materials for critiquing as well.
Hacking Objective-C for Fun and Profit
A tour of the Objective-C runtime's low-level API, with special emphasis on hack opportunities. Topics include: the Objective-C messenger; class creation; class and method introspection; method substitution; class posing. Intended for programmers who are familiar with the Objective-C language.
High Performance Video
Working with large numbers of pixels is full of potential bottlenecks
and limitations. Find out how to get the best performance with film and
high definition video resolutions, or multiple streams of standard
definition. Find out what the hardware limitations are, how PCI and AGP
bus performance has improved over the years, and what you can do with
the latest graphics cards. When to use Quartz, QuickDraw, OpenGL, and
QuickTime, how to bypass them when they are not fast enough, and how to
tie it all together with AltiVec.
iPod 2.0: Note Reader and More
A new version of the iPod means new firmware with new features. This session examines the new features, focusing primarily on the Note Reader, which supports a simple markup language. Learn to put tags and links into your notes, as well as play songs and playlists. If there is time, questions will be taken.
From Concept to Code: Faster and Easier With Revolution
Revolution is one of the fastest and easiest ways to develop applications for OS X. Learn what Revolution is and what its capabilities are, from one-line-of-code internet access to modular self-updating applications. Whether you're a beginner or an experienced developer, this session will show you how to get the most from this high-level environment.
Intro to Palm OS Development
This talk will describe and demonstrate the components of a Palm OS
which includes application and conduit development. We will look at the
programming model, development and testing tools and resources that are
available to developers.
Introduction to Video Digitizing
Steve Sisak & Dave Koziol
Steve and Dave and the rest of the IOXperts staff have written video digitizers used in popular cameras from Logitech, Philips, ADS Technologies and many others.
In this session, they'll show you how to get started adding video digitizing capabilities to an existing application, or that Hack you've been thinking about.
They'll point out the pit falls and try to help you get something working quickly and effectively.
LAMP (LAMP Ain't Mac POSIX)
Mac OS began life as the operating system for the rest of us -- elegant, intuitive, and even fun, and therefore unencumbered with old baggage such as command line interfaces. But the case for simple text-oriented tools is compelling nonetheless (at least to scripters who are familiar with them), and the widespread proliferation of free and open-source software (much of which is POSIX-based) has resulted in a problem for Mac users -- how to have the best of both worlds.
Mac OS X brings the Mac experience to an existing POSIX platform, arguably the superior approach. Although it renders moot the challenge of implementing POSIX within Mac OS, the question remains: How *would* you provide POSIX features such as a command shell and standard I/O on a platform designed to escape it in the first place?
The presentation will include a demonstration of LAMP's current capabilities (working code!), and attendees will be encouraged to develop extensions to LAMP for the hack contest. Source will be provided under the GNU GPL on the MacHack CD.
Metrowerks Standard Library
The MSL is designed to comply with the C++ standard, but it also provides
some non-standard goodies that we can exploit for performance and code
quality. We will discuss how to take advantage of these features and still
write portable code. We will also take a peek at some of the library
features we will see in future versions.
New Features in CodeWarrior v9
Glenn Meter, radar Pangaean and Ken Ryall
This session will discuss the upcoming new features and enhancements in CodeWarrior Development Studio for Mac OS, v9. Topics will cover improvements to the compiler, msl, debugger, and IDE. The session will also talk about new third-party plug-in technologies that continue to make CodeWarrior the #1 tool suite for Mac OS developers.
Patching with Unsanity Application Enhancer
Application Enhancer is a patching system that allows programmers to bring back all the hacky chaos that Extensions gave us in Mac OS 9. The session will include an overview of getting started with APE, and a real-world (or real-hack-show?) example of how to make a truly useless hack that almost anybody could like (similar to a real Unsanity Haxie, in fact). Features in recent versions of APE, such as APE Manager, will also be covered.
PDF Internals will introduce users to the technical details of a PDF document.Ê Ever wonder how these files can do all the "tricks" that they can...then this is the session for you!Ê We'll peel back the curtain and see how the "magic" is done.Ê Learn about the objects and the hierarchical structure that makes it all happen."
This session will focus on CodeTEST for Mac OS, a software analysis toolset that assists you in overcoming complexities of your software environment from design and development to validation and verification. CodeTEST for Mac OS provides you four different tools to assist in all phases of development---Performance Analysis, Memory Analysis, Code Coverage, and Execution Trace.
Porting Unix Applications to Mac OS X
Mac OS X's BSD layer is based on FreeBSD 4.4, but no two Unix operating systems are created alike. From differences in development tools to dynamic library oddities and strange Unicode APIs, Mac OS X is most certainly a special breed of Unix. This session will cover the most common problems developers encounter when porting an application from another Unix system to Mac OS X, show solutions for those problems, and review techniques for writing code that is portable to most Unix platforms.
This session will take a look a PowerPlant X, a completely new C++ class library for use with Mac OS X that is based on Metrowerks' original PowerPlant. Recent changes made to the system APIs of Mac OS X have made it difficult to continue PowerPlant's development without major architectural changes to the framework. PowerPlant X takes advantages of new Mac OS X technologies and is designed to be as conceptually similar to the existing PowerPlant as possible to maintain developers' previous expertise of the framework. This session will give an overview of PowerPlant X and discuss its differences from the existing PowerPlant.
QuickTime for Java, Quickly!
A one-hour tour of the Java version of everyone's favorite media API. Topics include getting apps built and running, cross-platform hazards, essential classes, hard stuff made easy, easy stuff made hard, stuff they left out, and a status update
ROBOLAB: LEGO Mindstorms for Schools (and Macs!) - Yoot Programming
Make your MacHack robotic creations that you have been dreaming up come to life
with ROBOLAB! Yoot Programming Focus.
ROBOLAB: LEGO Mindstorms for Schools (and Macs!) - Hacker Programming
Make your MacHack robotic creations that you have been dreaming up come to life
with ROBOLAB! Hacker Programming Focus.
REALbasic vs. Objective-C
REALbasic and Objective-C are two languages that provide Rapid Application Development. Through comparing example programs created in both languages, this session will discuss the advantages of both languages in areas including easiness, learning curve, speed of development and final product, ease of integration with other languages and version control systems, debugging support, and portability.
Recovering Trashed HFS+ Disks
When you absolutely, positively, have to get your data back. Tools and techniques that will give you a fighting chance.
Saving Exceptions for Reuse
C++ exceptions are awkwardly
ephemeral -- a caught exception, if not rethrown, is soon lost.
The difficulty of storing exceptions presents a particular
problem at thread and language boundaries: exceptions thrown
in one context are not easily transported to another. To
alleviate this difficulty, I will present a mechanism for
storing a caught exception and rethrowing it in a different
Subclassing an I/O Kit Device
Michael D. Crawford
The C++ architecture of the Mac OS X I/O Kit allows you to extend or
alter the functionality of an existing device driver by subclassing it.
This also helps you to work around OS X' exclusive access mechanism
that sometimes prevents you from opening existing user space
interfaces. Mike will show how to write a driver subclass, get it to
load in place of an existing driver while still making use of the
original, and how to communicate with it from user space by writing a
Core Foundation plugin. As a specific example Mike will subclass
IOFireWireSerialBusProtocolTransport to send SCSI Command Descriptor
Blocks over FireWire via the SBP2 protocol, under control from a user
space application that uses a plugin to interface to the kernel.
Tanjero Jive, Bringing Outlets and Actions to the Web
hen faced with choosing a development platform for large web applications, the developers at Tanjero found no cross-platform solutions that were easy to develop for and deploy. Inspired by Apple's Cocoa frameworks, they started working on a PHP framework which evolved into what we now call Jive. Pages are built by connecting HTML elements?outlets in the Interface Builder paradigm?to PHP classes. Databases can be connected to outlets as well, making building data-driven websites incredibly simple. Jive allowed Tanjero's developers to concentrate on business logic, and picked up the many mundane tasks involved in interactive site development, including database management, form decoding, page caching, and persistence. Built on top of open standards such as XHTML and XSLT, Jive provided Tanjero with a solution that's easy to develop for and simple to deploy on Macintosh, UNIX and Windows systems alike.
Tcl/Tk, Pre Conference Training
Top 10 Things I Hate About STL
The session will look at the unpleasant side of the C++ Standard Template Library, and show you how STL and C++ conspire to make you miserable and frustrated. Bring your own Advil.
Top 10 Things I Love About STL
Many people use STL without ever discovering some of its most flexible and powerful aspects. This session introduces you to some of the less obvious ways to have fun and be productive with STL.
Using BDControl and BDRuleEngine to build Cocoa applications
The BDControl framework and BDRuleEngine frameworks are Open
Source frameworks to speed the development of Cocoa applications
in Objective-C. BDControl provides objects that make it easy
to programmatically filter and sort data sets consisting of
arbitrary types of objects. BDRuleEngine builds on BDControl
and implements a rule engine that allows the creation of
applications driven by business rules, which can be supplied
as data, generated by code, implemented in code, or all three.
Using GPGME.framework to add public key cryptography features to your application
Many applications would benefit from using asynchronous cryptography to secure messages sent between parties over public connections, but until now it has been difficult to do this without writing low-level C code. GPGME is a framework that abstracts away asynchronous cryptography and makes it easy to use in Objective-C/Cocoa applications. GPGAppKit extends GPGME by offering user interface elements for use with GPGME. Rather than writing your own passphrase dialog or key selection facility, you get them `for free' with GPGAppKit and GPGME. This session will explain the basics of using GPGME and GPGAppKit and demonstrate their use in existing applications.
Using Mac Influencers To Build Grass Roots Marketing and no Cost Beta Testers
Learn how to find Mac Influencers and work within the Mac User Group community, as well as other non-profit organizations, to use no cost marketing to build a grass roots base of customers.
The following papers have been accepted for MacHack 2003.
Callbacks in C++
Callbacks are a powerful feature in programming. MacOS has used them since 1.0.
In this paper, I will explore various ways of implementing callbacks in your application, with
focus on modern C++ techniques and interfacing to the Mac OS. Both caller and callee issues
will be explored, and various implementations will be examined.
Cross-platform programming: Tcl/Tk for Mac Classic, OS X, Windows and Unix
An introduction to Tcl/Tk for the experienced programmer. This tutorial will introduce the flow control, data types, graphics etc.
Hacking PalmOS 5
Since PalmOS 5.0 has moved to focus on the ARM processor architecture, the traditional method of hacking the system (patching traps) no longer applies. This paper explains how to go about extending the latest release of PalmOS to do new and interesting things, hopefully in a relatively compatible manner. It covers some of the architectural background about what has changed with the move to ARM, as well as some practical information and examples about how to extend the system.
How to Hack Mac OS X
Jonathan 'Wolf' Rentzsch
Mac OS X is a whole new ballgame. The problem is that while the OS got
game, we're missing the balls -- hacks. This paper provides an overview
of the hacking possibilities on Mac OS X, from the low-level (jump
islands, Mach VM calls and single-instruction patching) to the high-level
(devious plugins/bundles). Happy hacking!
Implementing a GIF Decoder
Andrew S. Downs
Many client-side applications need to display images, and the GIF format remains popular despite its age. Various libraries exist that can decode GIFs, but sometimes for custom applications you may need a smaller memory footprint or better control over the process. In this paper I discuss the decoding algorithm, and the design and implementation in C++ of a GIF module that can plug-in to a larger image handling architecture.
A Practical Comparison of Multiprocessing Libraries
Paul A. Wilson
The comparative similarity between two or more mutable entities can be determined by assigning a similarity score, based on relative difference, to every possible variant combination between the entities. In this specific case, a program was written to determine the most similar low energy conformations of four molecules which have high efficacy for selective inhibition at the serotonin transporter. The large data set, 1.3 million conformational clusters, used in this endeavor have made multithreading and multiprocessing inviting opportunities. The initial program has been rewritten in three forms which either take advantage of the gcc Objective-C multithreading library, OpenMP, or MPI. These three versions allow for the comparison of Objective-C multithreading library, OpenMP, and MPI strategies on dual processor Power Macs (Mac OS 10.2) and on a nine node, eighteen processor linux Beowulf.
Risks in Using Commerical Wireless Networks
This paper explains the risks in using commercial wireless network (a.k.a WLAN/IEEE802.11b) products as trusted means of communication.
Through this paper I provide an overview of techniques used to enhance and also penetrate built-in security measures of wireless networks. In addition the paper describes simple methods to enhance precautions already taken. There will be a discussion about new techniques & technologies which could be available to the general public and/or authorities soon at the end.
Signing Executables in Mac OS X
Because of prebinding, Mac OS X modifies executable files after they are installed. These modifications change cryptographic signatures of the executables, thus making it impractical to rely on cryptograhic signatures to verify integrity of Mac OS X executables. This paper discusses how cryptographic signatures can be computed for Mac OS X executables in such a way that the signatures are not modified by prebinding.
Systematic Error Handling and Exception Safety in Mixed C++/Objective-C
Mac Murrett and Andrew Pontious
- Error handling in C++ has improved tremendously in the last several years.
- Older C++ code, especially code ported from C or written using older compilers, often relies on return values for errors. Such values are unstandardized and difficult to propagate. In addition, they are \"opt-in,\" in that the programmer must explicitly check for error conditions. In dealing with them piecemeal, it is easy to leave a program in an unforeseen and indeterminate state.
- C++ exceptions can solve these problems, but only if they are used comprehensively.
- Objective-C has its own error handling mechanisms and traditions.
- Return values of type id are widely used; a nil value signifies an error. Nested messages can be employed safely even if any of the inner ones could return this error condition, because messages sent to nil just return nil themselves. This makes error propagation easier.
- In addition, Objective-C has its own form of exceptions. No objects are released by raising an Objective-C exception, but as long as all affected objects are within an autorelease pool any of whose parent pools are eventually released, there will be no memory leak.
- The Cocoa framework takes care of this by allocating and releasing an autorelease pool each time an event is handled.
- These two sets of strategies work for their respective environments.
- They even work when either of those OO languages is mixed with their predecessor, C. This is why Apple's mixed Carbon/Cocoa code samples require no special measures: because the Carbon code is written entirely in C.
- But they don't work with each other without adaptation.
- Until now, developers attempting to work in the middle ground of Objective-C++ have generally made do with ad-hoc, case-by-case adaptation. A try/catch block here, an NS_DURING/NS_HANDLER block there.
- There is a better way.
- This paper presents a library of templates, helper functions, and macros that makes it as easy as possible to mix C++ and Objective-C error handling in a systematic and foolproof manner. The end result is exception-safe, scalable, maintainable Objective-C++.
Windows development using CodeWarrior on the Mac
How to do your Windows development using CodeWarrior on the Mac. Nobody likes using buggy tools to write software for a lame platform, least of all MacOS developers. But we all end up writing some Windows code at some point. You can avoid Windows compilers that don't comply with language specs, Windows IDEs that force you to work in 1 window, and even purchasing a Windows machine by using the Metrowerks tools you already have on your Mac. You can even do the debugging on your Mac! And you can even use it with non-application code, like .DLLs and plugins.