oreilly.comSafari Books Online.Conferences.

advertisement > Programming Articles

Programming Articles

The Mojo of Dojo by Matthew Russell
Few use raw JavaScript anymore if they can possibly avoid it, in the same way that few people code in assembly language. Dojo is one of a group of powerful JavaScript toolkits that can do a lot of the work for you, and Matthew Russell has put together this introduction. Nov. 1, 2007

Making Apache httpd Logs More Useful by Rich Bowen
Apache httpd's standard text logfiles are well understood and useful, but they don't always give you enough information to troubleshoot problems. Apache 2.x provides several new modules that produce more logfile information--the number of bytes transferred, the rewrite rule matching, which requests complete and why, and the complete output of all headers. Rich Bowen explores these options. Feb. 1, 2007

Why I Stopped Coding and Why I'd Start Again by Brian McConnell
What happens when programming stops being fun? What do you do when juggling dependencies and worrying about installation issues takes all of the joy out of writing code for other people? You can stop coding... or you can try to address the underlying problems. Brian McConnell postulates an enhancement of the Python language to make programming as fun as it was in the BASIC-in-ROM minicomputer days. Jan. 18, 2007

Komodo 3.5 for Dynamic Languages by Michael J. Ross
A common misconception is that only static languages can have powerful IDEs. Late-binding languages with runtime code evaluation have plenty of IDE support in ActiveState's Komodo 3.5. Michael J. Ross reviews what it offers PHP and Perl developers. Dec. 21, 2006

When Linux Runs Out of Memory by Mulyadi Santosa
Memory is a precious commodity in computers. Generally the more you have, the better. Yet your application has to run alongside other applications, and each wants its own area of memory. What happens when there's not enough to go around? Mulyadi Santosa explores the memory management principles in the Linux kernel to explain how the Out of Memory killer works--and how to avoid it. Nov. 30, 2006

Developing High Performance Asynchronous IO Applications by Stas Bekman
When concurrency and latency are your bottlenecks, synchronous IO is a problem--even in a multithreaded or multiprocess model. This is especially evident when dealing with high volumes of incoming mail, especially if much of it is spam. Stas Bekman and his team at MailChannels recently built a scalable, modern, event-based system for asynchronous IO. Here's how they did it. Oct. 12, 2006

Smalltalk for Everyone Else by Keith Fieldhouse
The Pragmatic Programmers advise learning a new language every year. Instead of yet another Algol derivative, why not master object orientation with perhaps the purest OO language ever devised? Smalltalk and the Squeak environment offer a powerful and usable learning experience; Keith Fieldhouse provides an introduction. Sep. 21, 2006

Unit Testing Your Documentation by Leonard Richardson
It's fairly easy to prevent errors in code from occurring and reoccurring; unit tests are an effective strategy to prevent regressions. What about the example code in your documentation? Errors there can frustrate and thwart readers and learners. Fortunately, it's possible to test your documentation almost as effectively. Leonard Richardson, co-author of the Ruby Cookbook, demonstrates how he kept his code examples correct. Sep. 7, 2006


Understanding Newlines by Xavier Noria
Munging text is familiar to agile language programmers. It's very straightforward, right? Text comes in, text changes, and text goes out. Yet in a multi-OS world with networks, internationalization, and character sets, is text really that simple? Xavier Noria delves into how computers handle text to explain the newline problem and how to work with it in agile languages. Aug. 17, 2006

Managing Many-to-Many Relationships with PL/pgSQL by David Wheeler
SQL gives you plenty of options for handling relationships--you can use joins and database relations, or you can make multiple queries and write complex logic on the client. What are the benefits and drawbacks of each? David Wheeler recently experimented with moving complex relationship logic into PostgreSQL's PL/pgSQL language; the results were stunning. Jun. 29, 2006

Why Do Projects Fail? by Jennifer Greene, Andrew Stellman
In this excerpt from "How to Keep Your Boss from Sinking Your Project" (PDF), authors Andrew Stellman and Jennifer Greene address the question of why projects fail. This excerpt serves as the introduction to their concepts of effectively managing upward on projects. If you want to know what steps you can take to keep your software project from running aground, check out their PDF.  Jun. 20, 2006

Natural Language Game Programming with Inform 7 by Liza Daly
Natural language programming is a huge goal of certain programming language communities. Unfortunately, it once gave the world COBOL. Graham Nelson's latest version of the Inform language for writing interactive fiction resurrects the idea of natural language. Liza Daly demonstrates how writing code can be a truly literary experience. Jun. 8, 2006

Writing PostgreSQL Functions with PL/pgSQL by David Wheeler
One of the most powerful features of PostgreSQL is its support for user-defined functions. The language to learn is PL/pgSQL, an unpronounceable but powerful way to write UDFs. David Wheeler introduces the language and demonstrates why UDFs are useful. May. 11, 2006

Smart Pointers in C++ by Julio M. Merino Vidal
C++ is a powerful language that allows fine-grained control over almost all aspects of your program. Of course, low-level code has its disadvantages too. Manual memory management can be complex and difficult to get right. Fortunately, the RAII idiom and smart pointers can help you write correct and efficient code. Julio M. Merino Vidal demonstrates. May. 4, 2006

Regular Expressions in C++ with Boost.Regex by Ryan Stephens
Searching and parsing text can be a messy business, especially in C++. Instead of building your own token-based state machine, spend an hour learning regular expressions and use a good package such as the regular expression library from the Boost library. Ryan Stephens demonstrates how to match, search, and parse text with Boost.Regex in C++. Apr. 6, 2006

The Software of Space Exploration by David Boswell
Free software advocates often appeal to the open discovery, disclosure, and discussion practices of modern science as justification for sharing information. As software becomes more valuable for scientific research, free and open source software continue to grow in popularity. David Boswell looks at some of the software used in space exploration and usable by armchair scientists. Mar. 30, 2006

Apple's High-Water Mark? by Adrien Lamothe
Apple's latest moves have impressed observers, but the environment is about to change drastically, with Apple likely facing its greatest challenges. Where do the company and its users face competition? IBM, Sony, and ... Linux? Adrien Lamothe explores the computing landscape of 2006. Mar. 23, 2006

Theming Bash by Shlomi Fish
Desktops have themes. Amusement parks have themes. TV shows have themes. Why not your command line? Shlomi Fish introduces the idea of Bash themes--customized environments for specific projects--and shows how to use them. Feb. 2, 2006

Building Recursive Descent Parsers with Python by Paul McGuire
Someday your program will have to parse text. If you're lucky, a few regular expressions will handle it. Otherwise, you need to write a parser. Don't be afraid of that dragon book from college--writing a parser in Python is easy with Pyparsing. Paul McGuire explains everything you need to know. Jan. 26, 2006

Testing C with Libtap by Stig Brautaset
Regression and unit tests are your first line of defense against bugs, bad design, and silly mistakes. Unfortunately, C programmers rarely use the good testing tools of other languages--but now there's libtap. Stig Brautaset explains how to test your C code using libtap and the wonderful Perl testing tools. Jan. 19, 2006

There Is No Open Source Community by John Mark Walker
Conventional wisdom argues that open source success is the result of individual iconoclasts who work against the economic grain to institute a methodology of sharing. That's nice--but it ignores strong economic trends that push open source development and adoption. John Mark Walker explains why the myth of the open source community is wrong and even harmful to business. Jan. 12, 2006

Modern Memory Management, Part 2 by Howard Feldman
Modern Unix-like operating systems have their own characteristics for allocating and using memory. Howard Feldman explains how modern programming languages use memory, why this matters, and how to avoid memory and resource leaks. Nov. 23, 2005

PHP Code Generation with Elisp by Zachary Kessin
There's plenty of near-repetition in software development; writing very similar code over and over again. Stop copying, pasting, and modifying, and start automating the process! Zachary Kessin shows how to use Emacs Lisp to generate useful and reusable database-access code for PHP. Nov. 23, 2005

Analyzing Statistics with GNU R by Kevin Farnham
Analyzing and graphing statistical data doesn't have to be as dry and boring as it sounds. With the GNU R programming language, it can be as easy as writing a few lines of code--R is to statistics and analysis as Perl is to text files. Kevin Farnham shows how easy it is to use GNU R productively with just a little bit of training. Nov. 17, 2005

TCP Tuning and Network Troubleshooting by Brian Tierney
Information doesn't travel across networks in one big chunk--it goes in little packets wrapped in packets wrapped in packets. Sure, you know that, but did you know that a bit of measuring and a bit of tweaking can improve your networking performance by two orders of magnitude? Brian Tierney shows how. Nov. 17, 2005

Processing XML with Xerces and SAX by Q Ethan McCallum
It's rare to write an application these days and not run into the use of XML as a data interchange format. Perl, Java, Python, C#, Ruby, JavaScript, and PHP all have good XML processing libraries. Where's the love for C++ applications? It's in Xerces, a capable open source library. Ethan McCallum shows how to use Xerces and C++ to process, manipulate, search, and write valid XML with the event-based and memory-lean SAX processing model. Nov. 10, 2005

Testing Web Apps Effectively with twill by Michele Simionato
There's a real drive toward testing these days. If you develop any sort of application seriously, you've likely heard recommendations to write comprehensive automated tests. Is that really useful? Michele Simionato explores the arguments for and against automated testing, and shows how to automate web app testing using Python and the twill utility. Nov. 3, 2005

Modern Memory Management by Howard Feldman
Modern memory management isn't as simple as knowing that you have 150MB of programs to run and 256MB of memory to do it in. Modern Unix-like operating systems have their own characteristics for allocating and using memory. Howard Feldman explains how this works and shows how to analyze and reduce the memory consumption of your programs, no matter what language you use. Oct. 27, 2005

What Is Ruby on Rails by Curt Hibbs
Ruby on Rails is an impressive web development framework that will soon reach version 1.0. While there's a lot of buzz, it can sometimes be difficult to discern the steak beneath the sizzle. Curt Hibbs walks through the features and pieces of Ruby on Rails to show how it fits together and where its big benefits come from. Oct. 13, 2005

RMS: The GNU GPL Is Here to Stay by Federico Biancuzzi
Though some in the open source world claim that the GPL is now unnecessary, RMS and the Free Software Foundation are still working night and day to promote the idea of software freedom. Part of that is a revision to the popular GNU General Public License. Federico Biancuzzi recently chatted with Richard Stallman about the goals and plans and successes of the GPL. Sep. 22, 2005

Processing XML with Xerces and the DOM by Q Ethan McCallum
It's rare to write an application these days and not run into the use of XML as a data interchange format. Perl, Java, Python, C#, Ruby, JavaScript, and PHP all have good XML processing libraries. Where's the love for C++ applications? It's in Xerces, a capable and open source library. Ethan McCallum shows how to use Xerces and C++ to process, manipulate, search, and write valid XML. Sep. 8, 2005

Interactive Debugging in Python by Jeremy Jones
Debugging with print statements is alive and well. It's not the only way to do it, though. Python has a powerful interactive debugger that can let you get to the heart of your problem faster and more easily--if you know how to use it. Jeremy Jones shows off the features you absolutely must know. Sep. 1, 2005

The Commons Doesn't Have a Business Plan by Andy Oram
The commons used to be a grassy area in the center of town where anyone could graze animals. Now it's a metaphor for anything available to everyone without restriction. Andy Oram argues that this is the ground from which new businesses spring--and that open source and free software are the wellspring for new software and technology. Jul. 28, 2005

The Practicality of OO PHP by David Day
PHP is an easy language for doing practical things immediately. The easiest ways to begin aren't always the best ways to stay productive, though. PHP's support for object orientation requires a little more learning and a little more discipline, but it has many benefits for larger projects. David Day explains the basics of OO in PHP 4. Jul. 28, 2005

Calculating the True Price of Software by Robert Lefkowitz
Businesses have long viewed support and maintenance as essential components of software. Open source business models often focus on charging for support and customization. Is there an economic model that can demonstrate the true worth of a piece of software and the option for support, maintenance, and upgrades? Robert Lefkowitz argues that open source exposes the true value of software itself as, essentially, worth less in comparison to support and maintenance. Jul. 21, 2005

Art and Computer Programming by John Littler
One of the great theoretical debates in computer programming is "Is programming art?" There are creative components certainly, and aesthetic aspects occasionally, but do programming's functional concerns push it more toward craft or engineering? John Littler recently cornered several well-known hackers for their opinions on the subject. Jun. 30, 2005

What Developers Want by Murugan Pal
Regardless of the language and platform you choose for development, you likely share some goals with your fellow developers: to be productive, to use good tools, and to keep your tools and processes out of your way while you create good software. Murugan Pal, CTO of SpikeSource, explains ten attributes he thinks developers want. Jun. 23, 2005

Object Overloading in PHP 5 by Martin Jansen
PHP 5 has greatly improved object-oriented programming support. It also has new hooks to overload methods and properties. How can you do this? Why would you want to? Martin Jansen demonstrates method and property overloading with PHP 5 objects. Jun. 16, 2005

Python Standard Logging by Jeremy Jones
Tracking down what your application does seems easy; just add a few print statements here and there. Unfortunately, effectively tracing a program is more difficult. That's where Python's standard logging module comes in. Jeremy Jones demonstrates how to make it work for you. Jun. 2, 2005

Rexx: Power Through Simplicity by Howard Fosdick
The P-languages get most of the press these days, but they're not the only dynamic languages in the world. Arguably, Rexx is the grandfather of them all. It's received little attention in the open source world, despite several good open source implementations. Howard Fosdick shows off some of the features of the language with practical examples. May. 26, 2005

Simplify Network Programming with libCURL by Q Ethan McCallum
The curl command-line utility is a fantastic way to download data from all kinds of repositories via HTTP, FTP, LDAP, and more. It's not just a utility, though. The back-end library libCURL allows you to make your programs URL aware, publishing and retrieving data over HTTP and FTP. Ethan McCallum demonstrates how easy it is to use. May. 5, 2005

Making Packager-Friendly Software, Part 2 by Julio M. Merino Vidal
Packaging free and open source software for end users is both necessary and thankless. Without packagers, software could spread neither as far nor as fast as it does. Julio M. Merino Vidal explains how to make configuring, building, installing, and porting your code much easier--to allow it to spread to more users and more software ecosystems. Apr. 28, 2005

Rich Web Text Editing with Kupu by Robert Jones
One of the reasons web applications haven't completely replaced desktop apps is that web browsers offer such poor text-editing capabilities. Now a new JavaScript library named Kupu may challenge that. Robert Jones explains how it works and how to add it to your own web apps. Apr. 28, 2005

Python on Your (S60) Phone by John Littler
Nokia recently released a Python distribution that runs on Series 60 phones. Sure it's cool, but is it useful? John Littler walks through the available packages and the installation process, as well as some example Python code. Apr. 14, 2005

Making Packager-Friendly Software by Julio M. Merino Vidal
Packaging free and open source software for end users is both necessary and thankless. Without packagers, software could spread neither as far nor as fast as it does. Julio M. Merino Vidal has a secret tip for authors, though: the easier it is for packagers to package your code, the further it may spread. Here's how to make their lives easier. Mar. 31, 2005

Perspectives on the Shared Source Initiative by Stephen R. Walli
Microsoft's Shared Source Initiative seems like an odd mix for the company when it works openly and a clever shot across the bow of open source when it works selfishly. How can the rest of us reconcile both positions? Microsoft ex-employee Stephen Walli shares his perspectives on the Shared Source Initiative from within and without the company. Mar. 24, 2005

More Test-Driven Development in Python by Jason Diamond
The goal of test-driven development is not to produce tests; they're merely a helpful by-product. The real goal is to produce elegant, working code. Jason Diamond demonstrates how test-driven development can improve the design of code. Feb. 3, 2005

Enhanced Interactive Python with IPython by Jeremy Jones
An interactive programming environment can be a powerful tool to assist in writing programs. Python has one as part of its standard distribution. Yet IPython, "an enhanced Interactive Python shell," is a far superior replacement. Jeremy Jones demonstrates. Jan. 27, 2005

Keeping Your Life in Subversion by Joey Hess
Revision control is great for collaborative projects and distributed projects. How well does it work for individuals? According to Joey Hess, fantastically. He's kept his home directory under revision control for years--here's how he does it with Subversion. Jan. 6, 2005

Calculating Entropy for Data Mining by Paul Meagher
Eww, statistics. Right? Not necessarily--for example, calculating the entropy of your web statistics can help you analyze trends and correlations. Paul Meagher demonstrates statistical programming in PHP while explaining single-variable entropy. Jan. 6, 2005

The Watchful Eye of FAM by Q Ethan McCallum
If you've ever written code waiting for a file to appear or change, you've likely done the select/sleep loop dance. How'd you like to never again experience that? SGI's File Alteration Monitor API can help. Ethan McCallum demonstrates how to watch files and directories on Linux, Irix, and probably your other favorite, Unix. Dec. 16, 2004

Test-Driven Development in Python by Jason Diamond
The goal of test-driven development is not to produce tests; they're merely a helpful by-product. The real goal is to produce elegant, working code. Jason Diamond demonstrates how test-driven development works using Python and PyUnit to create a sample event-tracking utility. Dec. 2, 2004

Choosing a Language for Interactive Fiction by Liza Daly
Retro gaming is hot, and what could be more retro than interactive fiction? If you pine for the days of white mailboxes, twisty little passages, and Babelfish all in your mind, perhaps you long to create your own interactive fiction world. Liza Daly starts down that path by explaining how to choose the right IF language. Nov. 24, 2004

Open Source Licenses Are Not All the Same by Stephen Fishman
As open source and the Internet continue to grow in popularity, more and more users and developers come into contact with open source code. Though the various licenses increase user rights somehow, they all do it in different ways and with different goals. Steve Fishman categorizes several popular licenses and explains their implications. Nov. 18, 2004

Extending Ruby with C by Garrett Rooney
High-level languages such as Perl, Python, and Ruby are very effective for application development, but linking them to existing C libraries is tedious, isn't it? Not really. As Garrett Rooney demonstrates, writing Ruby bindings for C libraries is easier than you might think. Nov. 18, 2004

Writing "Learning PHP 5" by David Sklar
Developers often write open source software in public, but what about developers who write about open source software? Do they build tools? How do your favorite books come about? David Sklar explains how he wrote Learning PHP 5Nov. 11, 2004

Using Design by Contract in C by Charlie Mills
Design by Contract is a programming approach that formalizes the interface between callers and callees, leading to more robust and disciplined code. If your language lacks formal support for DBC, though, are you stuck? No--Charles Mills describes the design and implementation of Design by Contract for the C programming language. Oct. 28, 2004

Migrating to Page Controllers by Q Ethan McCallum
Simple web apps can start simple, but when they grow more complex, they often need pruning and refactoring to be maintainable. The Page Controller design pattern can help separate concerns such as templates and logic. Ethan McCallum demonstrates this language-neutral technique with PHP. Oct. 14, 2004

Roll Your Own Series 60 Phone Applications by John Littler
As cell phones become better computers, they become better platforms for real applications. In theory, that means hobbyists and home users can write code for their phones. In practice? John Littler explores the options to start programming your Series 60 smartphone. Sep. 16, 2004

Alleviate RSI the Hacker Way by Jono Bacon
Chances are, if you use a keyboard for several hours a day you'll eventually experience repetitive strain injury. Thankfully, it's possible to avoid or alleviate the symptoms with exercises, breaks, posture, and software. Software? Jono Bacon explores free software to help save your tender wrists. Aug. 19, 2004

Exploring E4X with Ruby by Jack Herrington
XML processing with SAX can be tricky, and is painful in the DOM. The new E4X approach can make processing XML much easier. Jack Herrington explores E4X and demonstrates a simple port to the Ruby programming language. Aug. 12, 2004

Building a PHP Front Controller by Q Ethan McCallum
It's a rare web app that doesn't span multiple pages. It's also rare that such an app doesn't have some common behavior. The Front Controller design pattern can simplify processing, behavior, and the user experience. Ethan McCallum explains how to use this in your applications. Jul. 8, 2004

Building a Mailing List by Glenn Fleishman
There are dozens of free and proprietary systems for managing mailing lists, ranging from the trivial to bulletproof and exceedingly full-featured. Nearly all of them face the same challenges to provide the same behavior. Glenn Fleishman recently built his own LAMP-based mailing list in a few hours; here's how he did it. Jul. 1, 2004

The Pragmatic Programmers Interview by chromatic
The Pragmatic Programmers, Andy Hunt and Dave Thomas, recently launched their own line of books on pragmatic software development. Since O'Reilly helps to distribute their books, we convinced them to do an interview about self-publishing, the state of the software industry, and how to become better developers. Jun. 24, 2004

Inside Mitch Kapor's World by Steve Holden
Mitch Kapor has had a huge influence on the software world, being the founder of Lotus and a driving force behind 1-2-3. Now his Open Software Applications Foundation is working on Chandler, an open source PIM written in Python. Steve Holden interviewed Mitch after the recent PyCon about his life and career, the OSAF, Chandler, open source, and Python. Jun. 3, 2004

Using Shared Memory from PHP by Alexander Prohorenko
At some point, you'll need to communicate with another process. Unix systems support a powerful IPC mechanism called shared memory that you can use to share information between processes. Alexander Prohorenko explains the basic theory and demonstrates how to use it from PHP. May. 13, 2004

Open Source in Africa by Kwindla Kramer
Open source software is good for the developing world. Not only is the price often right, but the openness offers nascent developers the chance to learn from their peers despite geographic and cultural distances. Kwindla Hultman Kramer recently attended the Africa Source conference, a gathering of free and open source software developers and fans. Here are his thoughts. May. 6, 2004

Building a Parrot Compiler by Dan Sugalski
Parrot, the virtual machine for Perl 6, is not just for Perl 6 anymore. It's a surprisingly high-level, high-performance target for all sorts of languages. Dan Sugalski demonstrates Parrot's capabilities by building a compiler for a simple, yet business-critical, 4GL. Dan is a coauthor of Perl 6 EssentialsApr. 15, 2004

Understanding Network I/O, Part 2 by George Belotsky
Network programming is easy to start, but it can get complex very quickly. When is it appropriate to use synchronous IO and when do you need asynchronous? When do you need concurrency? George Belotsky explores these questions in the context of network programming with Python. Feb. 12, 2004

The New Breed of Version Control Systems by Shlomi Fish
CVS, part of the glue that holds open source development together, is showing its age. Many competitors have emerged recently, fixing misfeatures and adding new ideas. Shlomi Fish explores several current open source version control systems that may be better than CVS for your needs. Jan. 29, 2004

Using PHP 5's SimpleXML by Adam Trachtenberg
Unless you've worked with SGML, you may find it ironic that XML can be hard to parse. Most choices boil down to event-based parsing, bulky tree-walking, or writing more XML. The upcoming PHP 5 has another option, SimpleXML, that can take the pain out of simple and common XML uses. Adam Trachtenberg explains. Jan. 15, 2004

Ruby's Present and Future by Mike Stok
Ruby's been around for ten years and continues to grow in popularity and usage. What's next for the language? That's just one of the questions answered at the 2003 Ruby Conference. Mike Stok was there. He covers all three days of the conference. Dec. 18, 2003

RouteWord: An Interesting Diversion by Andrew Odewahn
Graphs--loosely connected, unordered collections of nodes--are highly important to computer science. Visualizing graphs is even more important: think of maps, routes, webs, and any other interconnected relationships. Who says that can't also be fun? O'Reilly author Andrew Odewahn explains how he accidentally created a new type of word puzzle playing around with graph visualization. Nov. 26, 2003

Understanding Network I/O: From Spectator to Participant by George Belotsky
By design, the Internet is a simple network; any endpoint can serve any client. Even better, it's easy to write a client or a server, if you understand a few things about network programming. George Belotsky demonstrates the essential concepts with Python. Nov. 6, 2003

Introducing mod_python by Gregory Trubetskoy
mod_python is an Apache module that gives Python programmers full access to the Apache API. If that's not enough, it can speed up your Python web programming substantially. Grisha Trubetskoy explains just what mod_python can do for you. Oct. 2, 2003

Porting Linux to the iPod by Howard Wen
A new piece of unknown hardware is a challenge; what can it do? To Bernard Leach, Apple's iPod was just waiting for a Linux port. Thanks to his work, you can play music on an iPod running Linux. Howard Wen recently interviewed Leach on the goals and process of porting Linux to the iPod. Sep. 25, 2003

Building Unix Tools with Ruby by Jacek Artymiak
Unix command line tools should follow a few simple rules. They must do one thing well. They should conform to standard option conventions. They must be able to be part of a pipeline. Jacek Artymiak demonstrates a simple Unix CSV-parsing utility built in the Ruby programming language. Sep. 18, 2003

Guido van Rossum Speaks by Steve Holden
Guido van Rossum, creator of Python, recently announced a move from PythonLabs to Elemental Security. Steve Holden caught up with Guido to talk about the move, the future of Python, and computer programming for everybody. Aug. 14, 2003

C++ Memory Management: From Fear to Triumph, Part 3 by George Belotsky
George Belotsky eloquently explained Common C++ Memory Management Errors and C++ Memory Management Principes in two previous article. He concludes his series by exploring good memory management in C++. Aug. 7, 2003

Advanced OOP: Declarative Programming and Mini-Languages by David Mertz
While much of the "popular" programming world describes problems in terms of how to solve them, declarative programming describes problems in terms of what's known about them. David Mertz explores existing declarative languages and gives examples of declarative programming in Python. Jul. 31, 2003

C++ Memory Management: From Fear to Triumph, Part 2 by George Belotsky
Half of wisdom is knowing what doesn't work. George Belotsky eloquently explained Common C++ Memory Management Errors in a previous article. This article explains design principles that will help you use C++ effectively and efficiently. Jun. 19, 2003

Running Arbitrary Scripts Under CVS by Jennifer Vesperman
CVS includes several hooks to integrate with other tools, such as bug and project tracking. Jennifer Vesperman, author of the upcoming Essential CVS, demonstrates how to expand CVS to meet your needs, using Bugzilla as the example. Jun. 5, 2003

Advanced OOP: Multimethods by David Mertz
Most popular object oriented languages take their method dispatch styles from Smalltalk's message passing style, dispatching based on the invocant. Another approach is multiple dispatch or multimethods, which considers multiple invocants for dispatch. Why is this important? David Mertz explains how multimethods improve polymorphism and often provide a better alternative to inheritance. May. 29, 2003

Using the Subversion Client API, Part 2 by Garrett Rooney
Embedding version control into your application just got easier with the development of libsvn. A previous article introduced the Subversion client API. In part two of the series, Garrett Rooney explores the most useful functions for adding, merging, and changing versions within your application. May. 15, 2003

C++ Memory Management: From Fear to Triumph by George Belotsky
With modern memory-managed languages, is there any reason to program in C or C++ anymore? George Belotsky says yes. Even a brilliant memory-management scheme may not fit your particular application. In the first of three articles, George examines common memory errors in C++. May. 8, 2003

Using the Subversion Client API, Part 1 by Garrett Rooney
One of Subversion's subversive benefits is its modular nature. Adding version control to your application is as easy as embedding libsvn. Garrett Rooney explains the basics of the Subversion client API in the first of two articles. Apr. 24, 2003

Twisted Python by Stephen Figgins
The Twisted application framework provides rocket-powered tools for your next network application.  Apr. 24, 2003

A Primer on Python Metaclass Programming by David Mertz
Classes and objects are simple, right? Once you really get it, isn't that all there is? Well, no--there's a whole class of advanced object-oriented techniques to make your code simpler, stronger, and more elegant. This week, David Mertz explains metaclasses--the building blocks of classes. Though the examples are in Python, the ideas translate to many other languages. Apr. 17, 2003

Testing SMP Kernel Modules with UML by Jerry Cooperstein
Code that works well on a single-processor box may fail spectacularly on a multiprocessor box. Until recently, the only way to test this was to use a two-, four-, or more-way machine. Not anymore! Jerry Cooperstein introduces UML (User Mode Linux) and demonstrates how to emulate a multiprocessor machine with it by testing kernel modules. Mar. 3, 2003

SimPy: Simulating Systems in Python by Klaus Müller
Do you have a complex system with limited resources and random events? Maybe a simulation will help you uncover essential truths. Klaus Müller and Tony Vignaux introduce SimPy, a simulation package for Python.  Feb. 27, 2003

Working with Files in PHP, Part 3 by John Coggeshall
You've got files down. You can create, delete, rewind, and append with abandon. But where do you put them? In Part 3 of "Working with Files in PHP," John Coggeshall explains how to work with directories. Jan. 9, 2003

Multiuser Subversion by Rafael Garcia-Suarez
Your source code is too important to be left to chance. Having introduced Subversion, Rafael Garcia-Suarez demonstrates how to use it for multiuser, distributed projects. What can this modern, powerful source-control system do for you? Dec. 19, 2002

Working with Files in PHP, Part Two by John Coggeshall
The Web was once a purely-text medium, but no longer. Now it's spiced with images, movies, and sounds. What's a PHP programmer to do? With the return of John Coggeshall and in the second part of his series on working with files in PHP, he covers binary files. Dec. 12, 2002

Generating One-Time URLs with PHP by Daniel Solin
Not everything on the Internet is designed for archival. Some data is time- or recipient-sensitive and should be protected. Daniel Solin demonstrates how to generate URL access keys for sensitive data with PHP. Dec. 5, 2002

Internationalization and Localization with PHP by Adam Trachtenberg
Making your Web sites multilingual doesn't have to mean driving yourself crazy. Adam Trachtenberg, coauthor of the PHP Cookbook, demonstrates how to deliver translated text and images simply and easily. Nov. 28, 2002

CVS Third-Party Tools by Jennifer Vesperman
CVS is an essential part of many developer toolboxes, but it has its limitations. Jennifer Vesperman has put together a list of add-ons and interfaces to the popular source control system. Nov. 21, 2002

Single-User Subversion by Rafael Garcia-Suarez
Revision control isn't just for distributed, multi-developer teams. Rafael Garcia-Suarez introduces Subversion and explains how to use it for personal projects. Oct. 31, 2002

Working with Files in PHP by John Coggeshall
John Coggeshall covers the fundamentals of reading and writing text files in PHP. Oct. 3, 2002

Advanced PHP References by John Coggeshall
John Coggeshall discusses the concept of returning a reference from a function, followed by using references within objects. Sep. 12, 2002

Introducing Smarty: A PHP Template Engine by Joao Prado Maia
It is quite common for PHP developers to include other files in an effort to reuse code, however templates make that job easier and allow you to separate HMTL layout from code logic. Sep. 5, 2002

PHP References by John Coggeshall
PHP References are similar to C-style pointers. John Coggeshall explains how to get started using them. Aug. 16, 2002

Introduction to PHP Objects, Part 2 by John Coggeshall
John Coggeshall discusses PHP objects in more detail, including some of their more powerful features, such as inheritance and using objects as data-storage containers. Aug. 1, 2002

Introduction to PHP Objects, Part 1 by John Coggeshall
John Coggeshall introduces the basics of object-oriented programming with PHP. Jul. 18, 2002

Cooking with Python: Seven Tasty Recipes for Programmers by et. al.
Some of the Python Cookbook authors got together to offer a sampling of their Python recipes straight out of the book. From the unexpected exception to the fun programming tip, there's something here for every Python programmer. Jul. 11, 2002

Getting Loopy with Python and Perl by Aahz
How do Python's loop constructs stack up to Perl's? Aahz, one of the featured speakers at this July's Open Source Convention compares the two.  Jun. 27, 2002

Multiple File PHP Scripts by John Coggeshall
To promote the idea of reusing common functions within your PHP scripts, it is often necessary to be able to separate PHP code into multiple files. Jun. 20, 2002

Gettext by Joao Prado Maia
Joao Prado Maia introduces a set of GNU tools that helps packages manage multi-lingual messages on their applications.  Jun. 13, 2002

PHP Session Management With Cookies by David Lane
The stateless nature of HTTP allows applications to distribute content across multiple servers. However, applications that require complex user interaction can't be implemented as stateless web pages. Using sessions and cookies is one way around this. Excerpted from Chapter 8 of Web Database Applications with PHP & MySQLMar. 28, 2002

Cocoa for your Python? by Stephen Figgins
Those tempting little iMacs look great, but does Python work with the new OS X application framework? Stephen Figgins reports on the state of Python and Cocoa. Jan. 31, 2002

An Intro to Qt 3.0 by Cameron Laird
Cameron Laird gives a detailed overview of the new features in Qt 3.0 and explains how they benefit programmers. Nov. 20, 2001

Peeking at Pear by Chris Coleman
Take a quick peek at Pear and learn what it does for PHP programmers. Oct. 19, 2001

Caching PHP Programs with PEAR by Sebastian Bergmann
PHP scripts are compiled and HTML is generated each time a web page is requested. Sebastian Bergmann uses PEAR caching to store these dynamic requests and speed up PHP web sites.  Oct. 11, 2001

Control Structures Revisited by John Coggeshall
A look at two new variations of the if(), while(), and for() statements as well as an introduction to a completely new structure, switch(). Aug. 23, 2001

Apache::CodeRed by Reuven M. Lerner
Tired of seeing your web server logs fill up with Code Red error messages? Reuven M. Lerner shows us how to write an Apache module to notify system administrators about Code Red 2 attacks. Aug. 16, 2001

Linux Compatibility on BSD for the PPC Platform: Part 5 by Emmanuel Dreyfus
In part five of his series on porting the Linux compatibility layer to NetBSD's PPC platform, Emmanuel Dreyfus looks at Linux emulation fixes needed to have a fully functional Linux gdb. Aug. 9, 2001

Introduction to Functions: Part 2 by John Coggeshall
John Coggeshall tackles some of the more difficult topics dealing with functions, including variable scope, static variables, and return values.  Aug. 9, 2001

PHP's Encryption Functionality by W.J. Gilmore
Encryption and hashing allow you to secure and verify data. W. J. Gilmore introduces encryption functions and hashing methods available to PHP.  Jul. 26, 2001

An Introduction to Functions, Part 1 by John Coggeshall
Functions allow you to re-use code to repeatedly perform a procedure. John Coggeshall introduces PHP functions. Jul. 12, 2001

Getting Flashy With PHP by W.J. Gilmore
Looking to add animation to your website? W. J. Gilmore shows you how to add dynamic Flash animations to your website using PHP. Jun. 28, 2001

Linux Compatibility on BSD for the PPC Platform: Part 4 by Emmanuel Dreyfus
Emmanuel Dreyfus explains difficulties discovered in porting the Linux compatibility layer to run the Java Virtual Machine. Jun. 21, 2001

Arrays in PHP: Part 2 by John Coggeshall
John Coggeshall introduces associative and multidimensional arrays. Although arrays can be complex and difficult concepts, this tutorial makes them easy to understand. Jun. 21, 2001

Bootstrapping the YOPY PDA by Chris Halsall
The consumer version of G.Mate's all-Linux YOPY PDA may be one of the most anticipated technology events since the delivery of Netscape 6. Will the YOPY be worth the wait, or has the Agenda VR and the Linux iPAQ stolen its thunder? Jun. 15, 2001

PHP and Java by W.J. Gilmore
Find yourself wishing you could incorporate a Java applet into your latest PHP-powered web site? Wish no longer, W.J. Gilmore explains how to teach PHP to understand Java. Jun. 14, 2001

Arrays in PHP: Part 1 by John Coggeshall
John Coggeshall introduces the array, a PHP variable type that allows you to organize data more efficiently. He explains how arrays work and the fundamentals of using them. Jun. 7, 2001

An Introduction to PEAR by Joao Prado Maia
Find yourself wishing PHP had an easy way to manage additional modules? Joao Prado Maia explains PEAR and shows how it fills this role.  May. 25, 2001

Advanced PHP Variables and Functions by John Coggeshall
John Coggeshall explains how to use dynamic function and variable names, as well as variable-length argument lists passed to functions. May. 17, 2001

Session Tracking: Part 2 by W.J. Gilmore
Last week, W.J. Gilmore discussed how session tracking can add a whole new dimension to your site. This week, you'll learn how to create custom functions to store user session data.  May. 10, 2001

Linux Compatibility on BSD for the PPC Platform by Emmanuel Dreyfus
The Linux compatibility layer allows BSD to run Linux binary applications. Emmanuel Dreyfus explains how he implemented this on NetBSD for the PowerPC. May. 10, 2001

An Introduction to Extreme Programming by chromatic
When you look at it closely, Extreme Programming isn't really as extreme as it is logical. This introduction shows you the tenets of XP and its relationship to open source methods for writing software.  May. 4, 2001

Session Tracking: Part I by W.J. Gilmore
Session tracking allows you to create web pages that are individually customized for your reader. W.J. Gilmore explains how easy it is to track site visitors with PHP. Apr. 26, 2001

Advanced Control Structures by John Coggeshall
John Coggeshall introduces advanced control structures and techniques, including multi-conditional "if" statements and an introduction to the "for" statement.  Apr. 19, 2001

Basic Control Structures by John Coggeshall
John Coggeshall covers the basics of program control structures, including conditional statements and looping using the if and while statements in PHP.  Apr. 5, 2001

Introduction to Socket Programming with PHP by Daniel Solin
Daniel Solin uses a game analogy to show how PHP can be used to exchange data between two computers using network sockets.  Mar. 29, 2001

Variable Manipulation and Output by John Coggeshall
John Coggeshall covers basic variable manipulation and output, including math operators and strings.  Mar. 22, 2001

Basic PHP Syntax by John Coggeshall
John Coggeshall covers basic PHP syntax, including variable usage, variable types, and how to print variables to the web browser. Mar. 8, 2001

Submitting Changes by Michael W. Lucas
Every BSD project actively seeks out user contributions. Michael Lucas tell you how to get your work noticed and accepted by committers. Mar. 8, 2001

Alternative Python Distributions by Stephen Figgins
These alternative distributions offer versions of Python tailored to more specific needs.  Feb. 14, 2001

Phorm Manager by Urb LeJeune
In part four of a series on HTML form handling with PHP, Urb LeJeune creates the Phorm Manager, a Swiss Army knife of HTML form handling. Jan. 25, 2001

Modifying a Port by Michael W. Lucas
Michael Lucas continues his developer's tour of the BSD ports collection and shows us how to contribute to the project. Jan. 25, 2001

XML-RPC: It Works Both Ways by Dave Warner
Creating your own remote procedure server is easy with Python's xmlrpclib. Dave Warner shows you how to put it to work for you.  Jan. 17, 2001

Jython 2.0 Goes Beta by Stephen Figgins
Jython is JPython's successor. This Java-based Python interpreter brings Python's flexiblity, clarity, and ease of programming to Java.  Jan. 3, 2001

A Look Through the Ports Collection by Dru Lavigne
Dru Lavigne looks through the ports collection for interesting and obscure applications. Dec. 20, 2000

Learning From Mistakes by Stephen Figgins
A quick security fix for the Python wiki program MoinMoin presents an opportunity to learn from the mistakes of others.  Dec. 13, 2000

Security Alerts: Twig, Midnight Commander, and More by Noel Davis
Noel Davis summarizes published open source and Unix exploits. Problems this week include arbitrary code execution in Twig, new symlink attacks, a hidden control code attack on Midnight Commander, and a LANGUAGE attack on glibc. Dec. 6, 2000

PHP With HTML Forms by Urb LeJeune
In part two of a series on using PHP and HTML forms, Urb LeJeune shows us how to create dynamic input fields such as radio buttons, check boxes, and drop menus. Dec. 1, 2000

XML-RPC in Python by Dave Warner
Take advantage of this lightweight method for using services on other computers with Python's xmlrpclib module. Nov. 22, 2000

Creating Dynamic Next / Previous Buttons with PHP and MySQL by Joao Prado Maia
Need to add Next / Previous buttons to your web site? Joao Prado Maia shows us how to program these buttons with a dynamic, reusable class using PHP and MySQL or PostGreSQL. Nov. 2, 2000

Using PHP to Interpret Forms by Urb LeJeune
PHP has built in functionality for dealing with HTML forms. Urb LeJune shows us how to tap into these powerful features. Oct. 12, 2000

Programming Stackless Python by Cameron Laird
Wrapping your head around this patch is easy, once you have been properly brainwashed! Oct. 11, 2000

Introduction to Stackless Python by Cameron Laird
Cameron Laird demystifies Stackless, a mind-bending patch for Python. Oct. 4, 2000

Program Your Computer to See by Chris Halsall
Computer Vision is the science of reading images to extract meaningful data. Current CV uses include OCR, handwriting interpretation, gesture recognition, face tracking, and security. On Sept. 13th, Intel made its Open Source Computer Vision Library available for the Linux platform -- a move that should accelerate CV development. Chris Halsall introduces you to CV and its applications.  Sep. 22, 2000

How the CamCal Program Works by Chris Halsall
Chris Halsall walks you through the CamCal set-up and calibration in this companion article to "Program Your Computer to See," which is an introduction to the science of Computer Vision. Sep. 22, 2000

Artymiak Announces pyxhtml by Stephen Figgins
A quick look at Jacek Artimiak's pyxhtml, a Python tool for generating XHTML pages.  Sep. 20, 2000

Uploading, Saving and Downloading Binary Data in a MySQL Database by Joao Prado Maia
Joao Prado Maia explains how to upload and store binary data in a MySQL database using PHP. He includes the complete source code for all the scripts involved. Sep. 15, 2000

Building a Black Hole With OpenGL by Chris Halsall
Our latest OpenGL tutorial shows you how to build mesmerizing black holes as stand alone entertainment or to incorporate into sophisticated games. Sep. 15, 2000

Eazel's Business Model by John Ochwat
Even though Eazel is on the verge of launching a great software product, they're success may depend on the bundled services they'll offer. Sep. 15, 2000

Numerical Python Modules by Eric Hagemann
Eric Hagemann explains the basics of multiarray manipulation and demonstrates 4 modules that are inluded with the default NumPy package: Linear Algebra, Fast Fourier, Random Numbers, and Mlab. Aug. 9, 2000

Transformation Matrices by Eric Hagemann
Use transformation matrices to manipulate graphics. Examples given using Numerical Python and Dislin. Jul. 5, 2000

Web Client Programming in Python by Dave Warner
Create programs that mine information from web sites. The example given uses Meerkat, O'Reilly Network's open wire service.  Jun. 21, 2000

Python as a First Language by Cameron Laird
Cameron Laird explains why Python is a great language for new programmers while featuring terrific advantages for seasoned pros too.  Jun. 2, 2000

Adding Data Visualization to Python for Producing Graphs by Eric Hagemann
DISLIN provides the Python programmer with a robust package capable of producing 2D and 3D graphs plus basic drawing commands such as lines, boxes, and circles.  Jun. 2, 2000

Python Resources by Derrick Story
Where do I go for the latest Python news? What books can help me become an adept programmer? Is there a conference in my future? These questions and more are answered on our Python Resource page. Jun. 2, 2000

Crystal Space: 3D for Free by Howard Wen
How is this Open Source 3D Graphics Engine challenging Quake's? May. 16, 2000

Using Standard Input and Output by Mike Loukides
A quick review of basic redirection techniques used by every Unix guru. Feb. 24, 2000

Checking Differences with diff by Dale Dougherty
Quickly examine differences between similar files. Feb. 24, 2000

Comparing Three Different Versions with diff3 by Dale Dougherty
Got three similar files to compare? Use diff3! Feb. 24, 2000

Context diffs by Jerry Peek
Context diffs show the lines around changes in similar files.  Feb. 24, 2000

ex Scripts Built by diff by Tim O'Reilly
diff can build automatic editing scripts you can use to change multiple files or to store a revision history. Feb. 24, 2000

Looking for Closure by Tim O'Reilly
A gawk script that can be used to make sure items that need to occur in pairs actually do so. Feb. 24, 2000

Change Many Files by Editing Just One by Jerry Peek
Use ed and diff to edit mulitple files. Feb. 24, 2000

patch: Generalized Updating of Files that Differ by Tim O'Reilly
There's an easy way to make changes based on diffs, use Larry Wall's patch utility. Feb. 24, 2000

Sponsored by: