ONLamp.com > 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 5. Nov. 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 Essentials. Apr. 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 & MySQL. Mar. 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