Articles

Articles I have published:

APR Networking & the Reactor Pattern

Introduction to Apache Portable Runtime (APR) networking. I use the classic Reactor pattern as an example.

What Is Jetty
http://www.oreillynet.com/pub/a/onjava/2006/06/14/what-is-jetty.html

A page from the O’Reilly “What Is” series, this article describes the Jetty servlet container and its underlying API. Jetty is designed with embedding in mind; that is, you can add webapp (servlet, JSP, web services, etc) functionality to a Java application without having to repackage it as a formal WAR.

GNU Autoconf

Use GNU Autoconf to simplify cross-platform builds of your native-code apps. Familiar with the standard ./configure; make; make install routine? Autoconf is what drives the ./configure step.

App-Managed DataSources with commons-dbcp
http://today.java.net/pub/a/today/2005/11/17/app-managed-datasources-with-commons-dbcp.html

I’m all for standards, such as J2EE’s container-managed database connection pooling. Sometimes, though, you have to tkae a different path. This article explains how to create a database connection pool inside your application using two Jarkta libraries, commons-pool and commons-dbcp.

Processing XML with Xerces and SAX
http://www.oreillynet.com/pub/a/onlamp/2005/11/10/xerces_sax.html

Second in a two-part series, this article explains how to use the SAX side of the (Apache) Xerces C++ library to process XML documents.

The Perl-Compatible Regular Expressions Library

Want the power of Perl’s regular expressions (regexps) in your C and C++ apps? Use the Perl-Compatible Regular Expressions Library, or PCRE.

Processing XML with Xerces and the DOM
http://www.oreillynet.com/pub/a/onlamp/2005/09/08/xerces_dom.html

First in a two-part series, this article explains how to use the DOM side of the (Apache) Xerces C++ library to process XML documents.

Simplify Network Programming with libCURL
http://www.oreillynet.com/pub/a/linux/2005/05/05/libcurl.html

The curl commandline tool is a Swiss-Army knife of URL handling and downloading. Use its backend libCURL library to add file-transfer power to your native-code applications.

Pre-Patched Kickstart Installs
http://www.oreillynet.com/pub/a/linux/2005/02/17/kickstart_updates.html

Third in a series, this article explains how to create a pre-patched Kickstart tree (that is, one with the updates already applied) and add some change control to your yum cronjobs.

Custom Containers & Iterators for STL-Friendly Code

Many C++ STL container objects look and act alike, but they don’t share a parent class. Learn how to extend existing contianers or create new ones using STL’s “concepts,” a kind of loosely-enforced polymorphism.

The Watchful Eye of FAM
http://www.oreillynet.com/pub/a/linux/2004/12/16/fam.html

Watching for changes in a file or directory? Calling poll() can be expensive. Let the File Alteration Monitor, or FAM, watch for you and report results to your code.

Advanced Linux Installations and Upgrades with Kickstart
http://www.oreillynet.com/pub/a/linux/2004/11/04/advanced_kickstart.html

Second in a series, this article shows how to customize your Kickstart process and leverage Kickstart for OS upgrades.

Migrating to Page Controllers
http://www.oreillynet.com/pub/a/php/2004/10/14/page_controller.html

Use the Page Controller pattern in your PHP web applications to separate business logic from the HTML.

Hands-Off Fedora Installs with Kickstart
http://www.oreillynet.com/pub/a/linux/2004/08/19/kickstart.html

First in a series, this article is an introduction to the Kickstart automated OS-install tool for Linux. Why click through the installer a few (hundred) times? For Red Hat, Fedora, CentOS, and other RPM-based Linux distros, let Kickstart do the work so you can hang out at the pub.

Building a PHP Front Controller
http://www.oreillynet.com/pub/a/php/2004/07/08/front_controller.html

Apply the Front Controller design pattern to your PHP apps, and in return you’ll get a single entry point through which to apply common services (such as security or page templating).

Programming Linux 2.6

A review of the developer-oriented features in Linux kernel 2.6.

Changing a Program’s Identity

Learn how to safely use the setuid() and setgid() system calls to make your app change its identity at runtime.

Writing a Trace System

You can’t always use a debugger in production! Add a configurable trace (logging) system to your app so you can track down problems at runtime.

Software Packaging with RPM

The RPM is the unit of measurement Red Hat Linux and its derivatives (Fedora, CentOS, and so on). Learn how to package your software as an RPM, so you can take advantage of the OS’s package management system.