This is a compilation of papers I've written for various publications and conferences over the years. I put this together quickly, so they're in different file formats and many require more than just a Web browser to display. In particular, there are a lot of MS Word files. At some point, I might get around to HTMLifying everything and making this page look decent, but I thought it was important to get the material out there in some form or another.
assign.html The Anatomy of the Assignment Operator. First published in the November/December 1997 edition of C++ Report, this article is an in-depth look at the quirks and challenges of C++ memory management. It's based on a "killer interview question" several colleagues and I used at my old job.
reassign.doc The Assignment Operator Revisited. A follow-up to The Anatomy of the Assignment Operator covering some issues I left out of the original article. This was essentially a compilation of interesting issues raised in mail I got in response to the first article.
In July 1998 I began writing a column on Java for C++ Report. The idea behind the column was to demystify and defend Java for a C++-oriented audience, and to ease the transition for C++ programmers forced to make the switch to Java.
liaison9807.doc Liaison: Communication for Establishing Cooperation. July/August 1998. Introduction to the series.
Liaison9810.htm The Amorphous Java Program. October 1998. The structure of a Java program: .class files and dynamic linking.
Liaison9901.html Learning to Love Loss of Control. January 1999. Why byte code and garbage collection aren't so bad.
Liaison9903.doc Some Holes, and How To Fill Them. March 1999. Some C++ features Java doesn't have, and how to simulate them or work around their absence.
Liaison9905.doc Life Without Templates. May 1999. Generic programming in Java.
Liaison9907.doc Fun With Inner Classes, Part I. July/August 1999. An introduction to inner classes, and using inner classes for namespace management and program partitioning.
Liaison9910.doc Fun With Inner Classes, Part II. October 1999. Inner classes in generic programming, and inner classes in the Java API, plus a quick blurb on array literals.
Liaison0001.doc Lies, Damnable Lies, and Parameter Passing. January 2000. Pointers and references, and how those concepts map onto Java programming. This ended up being the last column in the series when C++ Report changed editors.
Garbage1.html An Introduction to Garbage Collection, Part I: The Real Costs of C++ Memory Management. The first of a two-part series on garbage collection, examining the mechanics of a standard manual memory manager and of a reference-counted system.
Garbage2.html An Introduction to Garbage Collection, Part II: A Look Under the Hood. The second part of the series, examining the mechanics of the various forms of tracing garbage collection.
JavaI18NTutorial.ppt Developing Global Software in Java. An in-depth presentation on the internationalization facilities in the Java Class Library that I've given at the International Unicode Conference a fair number of times. [NOTE: This presentation has speaker notes giving the narrative of the presentation-- you don't have to guess what I'm saying from looking at the slides.]
CharEncodings.ppt A Brief History of Character Encoding. A new tutorial presentation first given at the International Unicode Conference in September 2002. Based loosely on Chapter 2 of Unicode Demystified, this paper gives a high-level history and survey of the various character encodings that have been used in data processing and which served as antecedents to Unicode.
XMLResourceBundle.ppt A New Approach to Resource Bundles in Java. A new research paper detailing work I did at Trilogy a few years ago on an XML-based resource bundle framework for Java. This isn't a terribly original idea, but my implementation had a lot of interesting goodies in it for specifying complex user-interface elements such as window layouts and menus. I used this framework to produce two separate products built on the same code base but exposing different features, and wrote this paper as a way of getting some discussion started on getting something like this into the JDK. In addition to the paper, you might want to check out XMLResourceBundle.zip, which contains the source code for my XMLResourceBundle framework, along with some other useful tools for writing Swing-based applications and a simple demo program tying them together.
Unicode.ppt Unicode Demystified: A Tutorial Introduction to the Unicode Standard. A short presentation covering the architectural highlights of the Unicode standard, loosely based on Chapter 3 of my book.
UnicodeExamples.pdf Producing Unicode Examples: A Walk Through the Mud. A paper first given at the Unicode Conference in September 2002 that gives a blow-by-blow description of the technical hurdles my publisher and I had to clear in order to get the various examples of non-Latin writing into Unicode Demystified.
NumberSpellout.htm A Rule-Based Approach to Number Spellout. A paper I gave at the International Unicode Conference on a programmable, internationalized framework I wrote for formatting numeric values as words.
BreakIterator.ppt Text Boundary Analysis in Java. An in-depth look at the problem of text segmentation (e.g., word-wrapping at line boundaries) and how we solved it in the Java BreakIterator class.
ECMAScript.doc Internationalization in ECMAScript: A Case Study. A paper discussing the ECMAScript working group's efforts to add internationalization support to ECMAScript (the base standard for Javascript and JScript) and the various issues we had to deal with.
JavaOne.ppt Global Software: Why You Should Care. A presentation given by me and two colleagues from IBM at the 1999 JavaOne conference on the basics of internationalization and the internationalization support in Java.
I'm just about finished with a book about the Unicode character-encoding standard, which is used in Java, Javascript, Windows NT, Windows 2000, and many other places. Unicode is a universal character encoding, providing unique code-point values for the characters of every written language in current widespread use, greatly easing the difficulty of handling multiple code pages in internationalized applications. The definitive work on Unicode is the Unicode standard itself, but it's rather turgid and difficult for a neophyte to grasp. My project, Unicode Demystified: A Practical Programmer's Guide to the Encoding Standard, aims to explain the standard in a more accessible fashion and to fill in some background and usage examples.
The finished book is supposed to be published by Addison-Wesley in late summer 2002. I'm done writing it, and it's currently in the final stages of production.