128 Great Road, Bedford, MA, 01730
Complex Software Is Just Too Complicated! (and How to Save Yours with the 1-5-10 Rule of Software Design), February 2012. Many software projects collapse under the weight of their own complexity. Why does this happen again and again, to competent organizations? The problem is that many of the world’s large software projects are just too darn complicated. This article introduces a new guideline for software design to help you avoid a familiar fate. Click here to read.
FBI Sentinel Is In Trouble, January 2012. The FBI is trying, once again, to modernize its case file system. The previous effort, Virtual Case File, failed in 2005 at a cost of $170 million. The latest project, Sentinel, is costing $450 million and has already slipped more than two years. Sentinel is in trouble. Click here to read.
Why Bad Things Happen To Big Software Projects, January 2012. Examines the special nature of very large, important software projects. Points out that many of these projects are designed for failure from the start, and offers new approaches so the projects are designed for success. Click here to read.
Complete C# Database Application, with One Line of Code! January 2012. A full, detailed tutorial for creating a database application in Visual C# that uses the built-in "visual" tools of the IDE as much as possible. The result is that you only need to write one line of programming code. The finished application runs as-is or can be used as a starting point for larger database projects. Click here to read.
Beautiful Software (book), Amazon link, April 2011.
Why Software Really Fails, And What to Do About It. Dr. Dobbs, March 2010. It is not news that software projects fail more often than other kinds of engineering. But why? In this essay, I maintain the reason is we don’t understand the true nature of software. Software is a machine, but we don’t apply standard well-known machine design principles to our software projects. Click here to read.
Hey Programmers! We Got No Theory! Dr. Dobbs, March 2010. There has been considerable interest lately in advancing software engineering from a fad-driven discipline to something founded more firmly on an underlying theory. This article serves as an introduction to the problem, and points to the larger initiative at SEMAT.org. Click here to read.
Podcast about Software Engineering vs. Computer Science. SE-Radio.net, November 2009. An interview on the popular software engineering podcast about my recent article on this topic. Click here to listen.
The Missing Theory of Refactoring. Dr. Dobbs, October 2009. Refactoring is a powerful method for improving the design of software, but there have always been some open questions about this helpful method: When should software be refactored? Which refactoring transformation is appropriate in a given situation? Why does refactoring improve design? This article answers these questions, by supplying an overall theoretical framework for refactoring. As a good theory should, the framework suggests new refactorings for areas of software design not yet addressed. Click here to read.
Is Software Patentable? IpWatchdog.com, June 2009. I weigh in on the debate about whether software is inherently patentable, and argue that of course it is. Click here to read.
Software Engineering ≠ Computer Science. Dr. Dobb's Journal, June 2009. Software engineering is different, in a frustrating way, from other disciplines of computer science, such as computability and complexity. It is harder to define concepts in software engineering and harder to prove results. This essay proposes an explanation for these problems, and shows what kinds of progress can be made. Click here to read.
A Software Schedule Ain't Nothin' But a Piece of Paper. Developer.com, March 2008. A somewhat humorous look at software schedules, real and imaginary, with practical tips to avoid software project crises. Click here to read.
All Source Code Should Be Open. Developer.com on 8/26/02. A provocative essay which argues software quality would be improved worldwide if every software product included a copy of its source code. The article generated a lot of discussion on LinuxToday. I then wrote a follow-up piece (11/26/02) based on the discussion and reader feedback. The follow-up was linked by Slashdot and generated even more lively discussion. Here is the original article, and the follow-up piece.
A Quagmire in the Tar Pit. Developer.com on 5/13/02. This article looks at the dilemma faced by software managers given the current proliferation of software development methods, including CMM, ISO-9000, Extreme Programming, and Rapid Development. Each requires a large investment of time and effort to learn and implement, so which one should an organization commit to? Is one best for all uses? Are any worthwhile? Click here to read.
It's Not About Lines of Code. Developer.com on 3/11/02 and Slashdot on 3/18/02. What makes a programmer highly productive? Is it lines of code per day? Lines of good code? In this article, I examine the concept of software productivity. I look at some of the standard definitions for productivity and show why they are wrong. I then propose a new definition that captures what programming really is about. Click here to read.
Are There Limits to Software Estimation?, Developer.com on 1/7/02 and Slashdot on 1/11/02. This article responds to a paper by J.P. Lewis and explores questions about our underlying ability to estimate the development effort for software projects. The article explains results from complexity theory and information theory and shows how these apply (and don't apply) to software estimation. Click here to read.
Most Software Stinks! Slashdot on 9/4/01 and Developer.com on 9/7/01. Discusses the current state of software design and concludes that much of it is poor. Proposes a set of guidelines for creating higher quality software by following the lead of beautiful physical buildings. Click here to read. (This article generated over 700 comments on the Slashdot discussion board. Here is a reply to some of the comments that I wrote for Developer.com)
Why Software Engineering is Not B.S. Dr Dobb's Journal, April 18, 2001. Examines the status of software engineering within the field of computer science. Argues that software engineering's low standing is not justified and explains why it should be taken more seriously. Click here to read.
Open Source Projects Manage Themselves? Dream On. Lotus Developer Network, Sept 12, 2000. Challenges one of the central tenets of Eric Raymond's essay The Cathedral and the Bazaar, that open source projects are self-managing. This article was linked by Slashdot, LinuxToday, NewsForge and many other sites. Click here to read. (Eric Raymond replied to the article above here. I replied to Eric here.)
What the Linux Community Needs to Grok. LinuxToday and Slashdot, February 14 and 15, 2000. Describes the angry reaction of some Linux fans to previous articles I wrote and the lessons I learned from this. Outlines four fundamental ideas that the Linux community should "grok" (understand deeply) if Linux is to be adopted widely. Click here to read. (The article above generated over 500 comments on the Slashdot discussion board. I replied to those comments here. The reply generated another 200 comments.)
A Software Trend Worth Its Buzz. Boston Globe, February 15, 2000. Provides an overview of the Capability Maturity Model (CMM) for software project management and considers whether its use should be expanded. Click here to read.
Healing Sick Software Projects. Boston Business Journal, November 12, 1999. Describes how to rescue a software project that is in trouble. Discusses the common reasons software projects go awry and what to do about each one. Click here to read.
Creating Poetry In Software. Boston Globe, July 6, 1999. Draws a parallel between the design of buildings and the design of software. Shows that creating software which is "beautiful" leads to software that is better by objective measures as well. Click here to read.
Improve Your Company's Ability to Estimate Software-Development Cycles. Datamation, April 1999. Argues that software engineers should have greater input to project schedules, and presents specific methods for doing so. Click here to read.
Developing Software On Time. Boston Globe, March 2, 1999. Compares software development to construction of a new house, and shows that software can be finished on schedule, just as most buildings are. Click here to read.
Analysis of a Software Version of DES. Cryptologia, July 1990. Provides a technical analysis of a software version of the Data Encryption Standard. The version studied here was proposed by Robert Scott as an algorithm that easily could be implemented in software. (The original DES was designed for hardware implementation.) Click here to read.
Approximation Algorithms for NP-Hard Problems. May 1984 (Master's thesis). Begins with a review of complexity theory in computer science, particularly the classes of problems known as NP-Complete and NP-Hard. The thesis then discusses algorithms that provide a rapid approximate solution to problems whose exact solution might require too much time. There are several classes of these approximation algorithms, which are defined and examined. Finally, the thesis focuses on one particularly interesting NP-Hard problem and an approximation algorithm for it. Click here to read.
Accurate Estimation of the Number of Tuples Satisfying a Condition. (with G. Piatetsky) ACM SIGMOD conference 1984. We present a new method for estimating the number of tuples satisfying a condition, which gives accurate, yet easy to compute, estimates. We store information about attribute values in histograms where the buckets have equal width. We show how to use sampling to quickly compute the histogram steps. The major applications of our method are query optimization and statistical queries. Click here to read.
Fast Development of Widgets for IBM Connections 3. July 2011. The officially documented procedure for creating Connections widgets results in a very slow software development cycle (code/build/test). There is a much faster way, which I show in this article. Click here to read.
Adding Google Gadgets to IBM Connections 3 Is Easy! July 2011. Existing information about Connections and Google gadgets makes it appear complex to merge the two. In fact, it is quite simple. This article shows how, with detailed instructions and a working sample. Click here to read.
IBM Connections 3 for Newbies. June 2011. A summary of the Connections 3 product, with instructions for installing the complete system on one server, which has not been addressed elsewhere. I also include some pointers about using Lotus Domino as the LDAP name server for Connections. Click here to read.
Lotus Traveler 8.5.2 -- Summary and Installation. May 2011. This article provides an overview of the Lotus Traveler mobile email application, and then describes the steps for a standard installation. Click here to read.
Secure Email between Lotus Notes and the Outside World (a.k.a. S/MIME revisited). April 2011. This article updates a popular piece I wrote ten years ago about Lotus Notes and S/MIME. It gives detailed instructions for setting up the Domino Certificate Authority (CA) and Verisign digital IDs for secure email between a Notes organization and outside Internet email accounts. Click here to read.
Installing Lotus Notes without Changing the Default Email Program. March 2011. It is fairly common to upgrade Notes in a corporate environment where Notes is not the default email software. There are two bugs in the Notes installer which make this difficult however. This article explains the bugs, shows how to work around them, and presents an installation technique that is useful in other situations. Click here to read.
Upgrading Domino 8 from Windows Server 2003 to Windows Server 2008. February 2011. In 2009, Lotus Domino 8.x became certified on Windows Server 2008 (WS8). But many administrators already have Domino 8 running on Windows Server 2003 (WS3). So a logical operation at an established Notes/Domino shop is to upgrade an existing Domino 8 server from WS3 to WS8. I performed this operation recently, and ran into a couple gotchas that administrators should be aware of. Click here to read.
Migrating FROM Lotus Notes. January 2011. Even though I love Lotus Notes/Domino, I understand that companies sometimes move to another platform, for valid reasons. These two articles address the technical details of migrating Notes data (NSF files) to other applications. The first presents general data export techniques (here), and the second covers information specific to Documentum (here).
LotusLive Executive Summary. November 2010. LotusLive from IBM is a set of software-as-a-service (cloud) offerings that perform a wide range of business functions, without the need for any local servers. This article gives a summary of the LotusLive products, and discusses whether the price charged is worth what you get. Click here to read.
Lotus Connections via the Cloud. November 2010. Connections is a fairly complex product to install and administer. But using this software is easy via software-as-a-service from LotusLive. This article explains how to "rent" Connections for a small monthly fee and gives an overview of its features. Click here to read.
Beginners Guide to Sametime 8.5. October 2010. Setting up a base version of Lotus Sametime Entry is much simpler than the documentation states. Here is how to get up and running quickly. Click here to read.
Installing Domino 8.5 on Windows Server 2008. October 2010. Detailed instructions for installing and configuring the latest version of Domino on the latest Window server. Click here to read.
Notes/Domino 8.5 ID Vault. February 2010. Detailed instructions for setting up and using the new ID Vault feature in ND 8.5. Click here to read.
Domino XPages Part 2. September 2009. An extended example of XPages, showing how to edit and save values on a form. Click here to read.
Introduction to Domino XPages. June 2009. XPages is the first really new application design element in years for Domino. They are like old Domino pages -- blank palettes that you fill with text, links, data, and control features -- but on steroids and HGH. This article is a short primer and includes a downloadable example. Click here to read.
Installing Domino 8.5 on Ubuntu 8.04. April 2009. The title is self-explanatory. Given the low prices of Dell server hardware lately, you can build a complete Domino server for about $400. Click here to read.
Installing Notes on RedHat Linux / CentOS. July 2007. Written by my son, Charles IV. Click here to read.
Installing Domino 7 on SUSE Linux Enterprise Server 10. May 2007. Written by my son, Charles IV. Click here to read.
In-Place Upgrade of a Domino Server. March 2007. The best way to replace a Domino server is to bring up the new server alongside the old one, then run them together for a while. Sometimes, this is not possible however, and you need to quickly do a straight replace of old hardware with new. This tip shows you how. Click here to read.
Handling Multivalue Fields in Lotuscript. January 2007. Multi-value fields are one of the core features of Lotus Notes and Domino. Creating and using these fields on a form is simple within Domino Designer. But performing the same operation within Lotuscript is tricky, especially if the field is not text type. This tip shows you how to do so. Click here to read and here for my reply to the reader comments.
A Primer About Domino Domain Management (DDM). January 2007. The title says it all. Click here to read.
Finding Unused Databases. December 2006. One of the most common questions I receive about Notes/Domino administration is: "How can I find unused databases?" This article, and its download, shows how you can answer that question on your servers. Click here to read.
A Project-Tracking Application. September 2006. While working at Lotus in 1990, I created a project tracking database for my own use, called Things To Do, and the application became a popular download from Lotus.com for many years. This article presents an improved version of that original design. Click here to read.
Finding Files and Directories with Lotuscript: the Dir$ Function. July 2006. Coding examples for how to find operating system files and directories from within Lotuscript, including the problem of directories that do not exist. Click here to read.
Windows Client Licenses and Notes/Domino. May 2006. Explains the intricacies of Windows client access licenses, and how they interact with Lotus Notes and the Domino server. Click here to read.
Hosting Multiple Domino Servers at One IP Address. April 2006. Detailed instructions for making more than one Domino server visible externally at a single IP address, by using TCP port mapping. Click here to read.
Data Import to Notes, Without Programming. April 2006. Step-by-step instructions of three different methods for importing data into Lotus Notes, none of which require any LotusScript or other programming experience. Click here to read.
Controlling Domino Administration with Extended ACL. February 2006. A description of the Extended ACL feature, which helps administrators to delegate admin tasks to less-privileged users. Click here to read.
Overview of Notes/Domino Security Mechanisms. December 2005. A primer about the various methods that Notes and Domino use to keep data hidden and verified. Click here to read.
Using Domino Certificate Authority and ID/Password Recovery Together. October-November 2005. Combining these two built-in features brings big benefits to an organization. Because the CA is managing the certifier files, the Domino server can automatically send to users changes that occur in password recovery information. Part1 and Part2.
What is Notes Replication? August 2005. A primer about the concepts and operation of replication. Click here to read.
Notes to XML, and Back Again. July 2005. A detailed code sample about how to export Notes data to XML, and how to read XML data into Notes. Click here to read the article, and here for the downloadable sample.
Mail Merge from Lotus Notes. June 2005. Mail merge from Notes into Microsoft Word is one of the most common questions I have received over the years. This article and sample code shows how to do it in a very general way. The solution will export any set of Notes fields, from any set of documents, to an export file with any name. (The code also works unchanged for export from Notes to Excel.)
What to Do When Your Server Crashes. June 2005. This two-part article describes how to handle a Domino server crash, how to identify the cause of the crash, and steps to take to ensure that crashes/hangs are a rare event for your system. Part 1 and Part 2.
What is the Name and Address Book? May 2005. This beginner's tutorial describes the names.nsf file and its key role for Lotus Domino and Notes. Names.nsf is also known as the Name & Address Book, the Domino Directory, and the NAB. Click here to read.
The NotesLog class in LotusScript and Java. March 2005. How to use this object class to create convenient error logs for Domino agents. Click here to read.
Corporate Welcome Pages in Notes. February 2005. How to set up and maintain centralized corporate (or department) welcome pages for Notes R6. Click here to read.
Mail Journaling Tricks. February 2005. How to set up and tune the "mail journal" feature of Domino, which traps a copy of every mail message. Click here to read.
HIPAA Computer Security and Domino/Notes, Revisited. January 2005. With the deadline fast approaching for the federal HIPAA healthcare law, I revisited some earlier articles I had written on this topic. Click here to read.
Notes Certificates: What Are They? January 2005. A primer about Notes certificates and how they work within Notes ID files. Click here to read.
Notes/Domino Licensing: Not So Mysterious. December 2004. A summary of all the options for buying the Notes/Domino products. Click here to read.
Notes IDs vs. Regular Computer Accounts: How Are They Different. November 2004. A primer about Notes ID files and how they compare to standard (Unix or mainframe) computer accounts. Click here to read.
The Domino Certificate Authority. November 2004. An introduction to this new feature within R6, explaining its pluses and minuses. Click here to read.
Domino Cluster Tuning. October 2004. A technical article about the tuning parameters available to adjust cluster failover behavior. Click here to read.
Mail-In Databases as a Security Mechanism. June 2004. A discussion about the security advantages of using mail-in databases (instead of regular accounts) for generic mailboxes, such as Resumes, HelpDesk, etc. Click here to read.
Password Expiration for Notes IDs. May 2004. Instructions for enabling this useful feature of Domino, and reasons you might want to do so. Click here to read.
Efficient Use of Deny Lists. April 2004. A description of the "user deny list" feature of Domino and suggestions for using it effectively. Click here to read.
Analysis Tools for Domino Web Traffic. March 2004. A survey of the options for analyzing and reporting about Domino web (http) traffic, using the web log files. Click here to read.
Domino Clusters for Internet Traffic. February 2004. An introduction to the Domino Internet Cluster Manager (ICM) for allowing a Domino cluster to serve web clients. Click here to read.
Domino Clusters. January 2004. An introduction to Domino server clusters, listing their many advantages, with instructions for setting up a cluster. Click here to read.
Checking Public Keys for Notes IDs. December 2003. A summary of this important security feature, with information about how to enable it. Click here to read.
Initial Passwords: Discussion of Poll Results. November 2003. My comments about a reader poll concerning initial password assignments. Click here to read.
Server-Side Password Checking. October 2003. A summary of this important security feature, with information about how to enable it. Click here to read.
Certifier Storage: Discussion of Poll Results. September 2003. My comments about a reader poll concerning storage options for Notes certifiers. Click here to read.
HIPAA Computer Security and Domino/Notes. May - June 2003. A set of articles about the US government HIPAA law (for healthcare organizations), how it impacts computer security planning, and how it interacts with Domino and Notes. Click here for HIPAA overview, HIPAA security, and HIPAA and Domino.
Database Move Tool. March - April 2003. Presentation and discussion about a tool I wrote for moving Domino/Notes databases from one server to another. This is actually a complex operations that involves many steps, and my tool automates all of them. Includes the tool as a download. Click here for initial presentation, and detailed discussion of the code.
Trust Models and Digital IDs. February 2003. A primer about the two trust models for digital identifiers: hierarchical and peer. Verisign is an example of the first, and Thawte of the second. Click here to read.
Automatic Installer for Domino Design Elements. January 2003. A description of a tool I wrote to programmatically install agents into a target database. The tool can also be extended to install any other design element. Includes the tool as a download. Click here to read.
Notes/Windows Account Synchronization. December 2002. A summary of this Notes feature, which can save many administration steps for new users. Click here to read.
Setting Initial Passwords for Domino/Notes Accounts. November 2002. Advice about how to set passwords for new user accounts, with a goal to ensure that users change their initial password quickly. Includes a downloadable tool for password creation. Click here to read.
Backups: A Part of Computer Security. September 2002. A discussion about the importance of good backup procedures, with suggestions for typical backup schedules and other hints. Click here to read.
Notes Field Encryption. August 2002. A primer about this Notes feature, with information about setting it up. Click here to read.
Enforce Consistent ACL? May 2002. A summary of this Domino feature with discussion about why it is often confusing to administrators. Click here to read.
Notes IDs and Password Recovery. April 2002. A primer about this important Notes feature, with detailed information about setting it up. Click here to read.
Enhancing Email Security with S/MIME. Iris Today, December 2001. This article covers three topics: background information about cryptography principles, email secrecy, email authentication, and public key certificates; how these techniques are applied to create the S/MIME email protocol; and how S/MIME is used within Lotus Domino and Notes. Click here to read.
Tips for Top-Quality LotusScript. Lotus.com, July 2000. Contains a set of guidelines for improving the LotusScript portion of Domino applications. The suggestions greatly reduce the incidents of errors and debugging time. Click here to read.
Some of these essays present a liberal viewpoint. If you disagree, consider yourself warned; don't flame me.
Childhood Places. November 2011. A look back at the places I lived and visited before moving to Boston. Click here to read.
Dear Pope Benedict. April 2010. You can probably guess the topic. Click here to read.
Be Careful with Alcohol. August 2008. Some advice for the next generation of the extended Connell family. Click here to read.
The Truth about Race. April 2007, revised December 2008. Some thoughts about race, from research inspired by the adoption of our daughter from China. Click here to read.
A Life Lesson. April 2006. Click here to read.
A Dial-Gauge Bicycle Wheel Building Stand for $100. December 2005. This article describes how to assemble an inexpensive, but very accurate, wheel building stand. With some practice, you can build or adjust wheels to +/- .005 inches, for both roundness and trueness. With good wheel parts, and a little luck, you can create a wheel that is +/- .002 inches. Click here to read.
Growing Up Gay In Bedford. A series of articles describing the experience of gay youth in Bedford MA. The series was prompted by a controversy over the display of a rainbow (gay pride) flag in Bedford schools. Published in the Bedford Minuteman newspaper.
To My Father, Long Gone But Not. June 2004. An essay for Father's Day. Click here to read.
A Guys' Guide to Weight Loss. June 2003. Click here to read.
Bike Racing Memories. April 2001. Reflections about my bike racing career. Click here to read.
From the introduction... Software quality matters. Software runs our banking operations, air traffic control, stock markets, global navigation, personal information privacy, and many other facets of our lives. Good software helps all of these things run smoothly; bad software has the potential to hurt or even kill people.
But what, exactly, distinguishes good software from bad software? Expert programmers know good software when they see it, and they are likely to produce it themselves. What do they see in the better software that makes it better? And how do they write it? Are there universal principles of good software design, that all high-quality examples share, and which are absent from poor software? If so, what are these principles?
The book addresses these questions and is written for anyone
in the computer field or related areas: programmers, managers,
investors, engineers, scientists.
"This is a very enjoyable and informative series of essays exploring many aspects of software development that deserve more attention. Connell's main theme is that we tolerate substandard development practices in software that we would never tolerate in other fields."
"Highly recommended for anyone who appreciates good design in general and finds fault with computer systems and their software in particular."