Click here to Skip to main content
15,512,908 members

Articles by Paul M Watt (Articles: 13, Technical Blogs: 58)

Articles: 13, Technical Blogs: 58

RSS Feed

Average article rating: 4.82

17 Jan 2015   Updated: 17 Jan 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 7,852     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Are you mocking me?
Desktop Programming
MFC
4 Apr 2002   Updated: 4 Apr 2002   Rating: 4.93/5    Votes: 79   Popularity: 9.32
Licence: CPOL    Views: 369,999     Bookmarked: 273   Downloaded: 11,216
Please Sign up or sign in to vote.
Guide to understanding how Windows generates WM_PAINT messages, manages the update region for a window, and how to use all common type DCs.
10 Mar 2002   Updated: 10 Mar 2002   Rating: 5.00/5    Votes: 36   Popularity: 7.78
Licence: CPOL    Views: 238,629     Bookmarked: 137   Downloaded: 7,918
Please Sign up or sign in to vote.
Guide to understanding how to create and use regions with the WIN32 SDK
Win32
12 Jul 2011   Updated: 21 Jul 2011   Rating: 4.98/5    Votes: 82   Popularity: 9.52
Licence: CPOL    Views: 173,507     Bookmarked: 161   Downloaded: 11,235
Please Sign up or sign in to vote.
Guide to creating and using Memory Device Contexts (DC) in Win32.
WTL
27 Apr 2002   Updated: 27 Apr 2002   Rating: 4.43/5    Votes: 5   Popularity: 3.10
Licence: CPOL    Views: 88,026     Bookmarked: 30   Downloaded: 1,881
Please Sign up or sign in to vote.
A message loop class that is suitable for game programming in WTL.
General Programming
Internet
26 Oct 2014   Updated: 26 Oct 2014   Rating: 4.73/5    Votes: 9   Popularity: 4.51
Licence: CPOL    Views: 21,553     Bookmarked: 7   Downloaded: 0
Please Sign up or sign in to vote.
What the Internet of Things is and how it can safely evolve to reach its potential
Mobile Apps
Windows Mobile
9 Oct 2008   Updated: 9 Oct 2008   Rating: 5.00/5    Votes: 15   Popularity: 5.73
Licence: CPOL    Views: 69,449     Bookmarked: 50   Downloaded: 945
Please Sign up or sign in to vote.
Macro based framework written for C++ applications that will allow basic instrumentation and profiling features
Multimedia
DirectX
30 Oct 2002   Updated: 16 Oct 2008   Rating: 4.89/5    Votes: 41   Popularity: 7.78
Licence: CPOL    Views: 377,074     Bookmarked: 125   Downloaded: 6,100
Please Sign up or sign in to vote.
An interpretation of a popular falling block game implemented with DirectX that attempts to avoid any copyright infringement.
GDI
20 Mar 2002   Updated: 20 Mar 2002   Rating: 4.90/5    Votes: 59   Popularity: 8.60
Licence: CPOL    Views: 340,087     Bookmarked: 214   Downloaded: 11,535
Please Sign up or sign in to vote.
Beginner's guide to understanding how to paint to a window in the WIN32 SDK environment
9 Apr 2002   Updated: 9 Apr 2002   Rating: 4.92/5    Votes: 45   Popularity: 8.09
Licence: CPOL    Views: 234,972     Bookmarked: 119   Downloaded: 6,983
Please Sign up or sign in to vote.
Guide to understand the three different types of clipping regions, and how they relate to the Device Context
8 Sep 2011   Updated: 9 Sep 2011   Rating: 4.99/5    Votes: 88   Popularity: 9.71
Licence: CPOL    Views: 104,578     Bookmarked: 149   Downloaded: 7,508
Please Sign up or sign in to vote.
With respect to Image Composition, your imagination is your only limit.
Programming Languages
C++
22 May 2014   Updated: 14 Jan 2015   Rating: 4.88/5    Votes: 16   Popularity: 5.88
Licence: CPOL    Views: 29,471     Bookmarked: 25   Downloaded: 627
Please Sign up or sign in to vote.
A small self-contained header file implementation of an static counter for use at compile-time.
15 Oct 2002   Updated: 15 Oct 2002   Rating: 4.18/5    Votes: 5   Popularity: 2.92
Licence: CPOL    Views: 81,034     Bookmarked: 27   Downloaded: 0
Please Sign up or sign in to vote.
VS Editor Tip: How to use Quick Macros

Average blogs rating: 4.89

9 Nov 2013   Updated: 9 Nov 2013   Rating: 4.91/5    Votes: 3   Popularity: 2.34
Licence: CPOL    Views: 12,094     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
A passive use of the term code rot describes the source code for an aging system that require dependencies or tools that are no longer available.
27 Nov 2013   Updated: 27 Nov 2013   Rating: 4.87/5    Votes: 5   Popularity: 3.40
Licence: CPOL    Views: 10,640     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
I want to hopefully connect the dots for many to help convince you of the ultimate importance of a well defined and protected interface.
10 Nov 2013   Updated: 10 Nov 2013   Rating: 4.96/5    Votes: 9   Popularity: 4.73
Licence: CPOL    Views: 19,491     Bookmarked: 10   Downloaded: 0
Please Sign up or sign in to vote.
a brief overview of TDD, which will include a description of the concepts, development process and potential benefits associated with TDD.
19 Dec 2014   Updated: 19 Dec 2014   Rating: 5.00/5    Votes: 3   Popularity: 2.39
Licence: CPOL    Views: 8,750     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
What's wrong with code reviews
All Topics
2 Jul 2014   Updated: 2 Jul 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 6,570     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
This is an entry for the continuing series of blog entries that documents the design and implementation process of a library. This library is called, Network Alchemy[^].
10 Mar 2014   Updated: 18 May 2014   Rating: 5.00/5    Votes: 7   Popularity: 4.23
Licence: CPOL    Views: 10,550     Bookmarked: 9   Downloaded: 0
Please Sign up or sign in to vote.
using and namespace are two of the most useful C++ keywords when it comes to simplifying syntax, and clarifying your intentions with the code. You should understand the value and flexibility these constructs will add to your software and it maintenance.
22 Mar 2014   Updated: 22 Mar 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 8,250     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
If you ask a group of 10 software engineers to develop unit tests for the same object, you will end up with 10 unique approaches to testing that object. Now imagine each engineer was given a different object.
22 May 2015   Updated: 22 May 2015   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 3,611     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
As you gain expertise you begin to realize how little you actually know and understand. I have found this to be true of most skills. It’s easy to fall into the trap where you believe that you continue to grow your expertise each year, and thus have less and less to learn.
6 Dec 2014   Updated: 6 Dec 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 6,062     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
This is an entry for the continuing series of blog entries that documents the design and implementation process of a library. This library is called, Network Alchemy[^].
29 Jun 2014   Updated: 29 Jun 2014   Rating: 4.95/5    Votes: 8   Popularity: 4.47
Licence: CPOL    Views: 12,321     Bookmarked: 11   Downloaded: 0
Please Sign up or sign in to vote.
Software Design Patterns have helped us create a language to communicate and concepts and leverage the skills of previous work. Design patterns are very powerful, language agnostic descriptions problems and solutions that have been encounter and solved many times over.
20 Feb 2014   Updated: 18 May 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 6,460     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Code of The DamnedThis is a journal for those who feel they have been damned to live in a code base that has no hope. However, there is hope.
20 May 2014   Updated: 20 May 2014   Rating: 5.00/5    Votes: 2   Popularity: 1.51
Licence: CPOL    Views: 10,950     Bookmarked: 8   Downloaded: 1
Please Sign up or sign in to vote.
I really do not like MACROs in C and C++, at least the way they have been traditionally used starting with C. Many of these uses are antiquated because of better feature support with C++. The primary uses are inline function calls and constant declarations.
21 Jan 2014   Updated: 22 Jan 2014   Rating: 4.72/5    Votes: 31   Popularity: 7.04
Licence: CPOL    Views: 20,872     Bookmarked: 17   Downloaded: 0
Please Sign up or sign in to vote.
Software maintenance is a myth
13 Apr 2014   Updated: 14 Apr 2014   Rating: 4.62/5    Votes: 4   Popularity: 2.78
Licence: CPOL    Views: 7,770     Bookmarked: 4   Downloaded: 0
Please Sign up or sign in to vote.
An eye on refactoring
14 Oct 2014   Updated: 14 Oct 2014   Rating: 5.00/5    Votes: 3   Popularity: 2.39
Licence: CPOL    Views: 6,291     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
Do as I say, not as I do
13 Feb 2014   Updated: 14 Feb 2014   Rating: 4.95/5    Votes: 7   Popularity: 4.18
Licence: CPOL    Views: 23,280     Bookmarked: 9   Downloaded: 0
Please Sign up or sign in to vote.
In this post, I would like to clarify the purpose and intention of a unit test for every role even tangentially related to the development of software.
13 Dec 2014   Updated: 13 Dec 2014   Rating: 5.00/5    Votes: 3   Popularity: 2.39
Licence: CPOL    Views: 9,350     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
The Devil's Advocate is often an effective role that can help uncover logical weaknesses for a point of view. For those that are unfamiliar with this term, the Devil's Advocate takes a position that they do not necessarily agree with for the sake of debate.
27 Sep 2014   Updated: 28 Sep 2014   Rating: 5.00/5    Votes: 2   Popularity: 1.51
Licence: CPOL    Views: 8,141     Bookmarked: 3   Downloaded: 0
Please Sign up or sign in to vote.
How to sell your ideas to management
21 Jan 2014   Updated: 21 Jan 2014   Rating: 4.53/5    Votes: 6   Popularity: 3.52
Licence: CPOL    Views: 9,270     Bookmarked: 4   Downloaded: 0
Please Sign up or sign in to vote.
From good to great
7 Dec 2014   Updated: 7 Dec 2014   Rating: 4.93/5    Votes: 5   Popularity: 3.44
Licence: CPOL    Views: 8,810     Bookmarked: 3   Downloaded: 0
Please Sign up or sign in to vote.
How I avoid making mistakes
4 Mar 2015   Updated: 5 Mar 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 5,670     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
A post to see whether one size fits all
14 Jan 2015   Updated: 14 Jan 2015   Rating: 4.75/5    Votes: 4   Popularity: 2.86
Licence: CPOL    Views: 5,462     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
I found the "Silver Bullet"!
15 Jun 2015   Updated: 15 Jun 2015   Rating: 4.85/5    Votes: 4   Popularity: 2.92
Licence: CPOL    Views: 23,782     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Why a CS degree requires so much math?
15 Apr 2014   Updated: 15 Apr 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 4,540     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Desired Alchemy syntax
20 Jun 2014   Updated: 20 Jun 2014   Rating: 5.00/5    Votes: 2   Popularity: 1.51
Licence: CPOL    Views: 9,730     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
Alchemy Typelist operations
4 Jul 2014   Updated: 4 Jul 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 5,410     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
This is an entry for the continuing series of blog entries that documents the design and implementation process of a library. This library is called, Network Alchemy[^].
16 Oct 2014   Updated: 16 Oct 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 5,730     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
Value semantics for an object indicates that only its value is important. Its identity is irrelevant. The alternative is reference/pointer semantics; the identity of the object is at least as important as the value of the object.
18 Dec 2014   Updated: 18 Dec 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 10,280     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Alchemy: Message Buffer
21 Dec 2014   Updated: 21 Dec 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 5,300     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
Alchemy: Message Serialization
7 Feb 2015   Updated: 7 Feb 2015   Rating: 5.00/5    Votes: 12   Popularity: 5.40
Licence: CPOL    Views: 15,202     Bookmarked: 7   Downloaded: 0
Please Sign up or sign in to vote.
What is a software architect?
12 Feb 2015   Updated: 12 Feb 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 4,261     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Alchemy: BitLists Mk1
28 Mar 2015   Updated: 28 Mar 2015   Rating: 5.00/5    Votes: 2   Popularity: 1.51
Licence: CPOL    Views: 9,241     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
Bikeshedding
18 Apr 2015   Updated: 18 Apr 2015   Rating: 4.96/5    Votes: 27   Popularity: 7.10
Licence: CPOL    Views: 42,074     Bookmarked: 19   Downloaded: 0
Please Sign up or sign in to vote.
Coupling and Cohesion are two properties that deserve your attention when you design software. These are important because they have a direct effect on how flexible and maintainable your software will be as your software continues to e developed.
19 Apr 2015   Updated: 19 Apr 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 5,240     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
This is a continuation of a series of blog entries that documents the design and implementation process of a library.
23 Apr 2015   Updated: 23 Apr 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 8,100     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
Type Decay
29 May 2015   Updated: 29 May 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 4,050     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
There are many different philosophies with regards to how source code should be commented. The gamut of these philosophies range from "Every single statement must have a comment." to "Comments are useless; avoid them at all costs!" I am not even going to attempt to explain the disparity of range.
31 May 2015   Updated: 31 May 2015   Rating: 4.88/5    Votes: 4   Popularity: 2.94
Licence: CPOL    Views: 7,221     Bookmarked: 5   Downloaded: 0
Please Sign up or sign in to vote.
The keyword auto has been given a new behavior since the C++11 Standard was ratified. Instantly I could appreciate the value of its new function when I considered things like declaring an iterator for a container. However, I was skeptical of any value that auto could provide for general purpose use.
Artificial Intelligence
17 Dec 2014   Updated: 17 Dec 2014   Rating: 5.00/5    Votes: 3   Popularity: 2.39
Licence: CPOL    Views: 15,961     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
Why computers haven't replaced programmers
Desktop Programming
MFC
5 Jun 2015   Updated: 5 Jun 2015   Rating: 4.83/5    Votes: 4   Popularity: 2.91
Licence: CPOL    Views: 4,870     Bookmarked: 4   Downloaded: 0
Please Sign up or sign in to vote.
C++: Template Meta-Programming 2.0
23 Dec 2013   Updated: 23 Dec 2013   Rating: 4.59/5    Votes: 11   Popularity: 4.78
Licence: CPOL    Views: 14,930     Bookmarked: 14   Downloaded: 0
Please Sign up or sign in to vote.
Template meta-programming is the practice of using templates to generate types and functions to perform computations at compile-time and generate programs.
DevOps
Testing
1 May 2015   Updated: 1 May 2015   Rating: 4.67/5    Votes: 3   Popularity: 2.23
Licence: CPOL    Views: 10,423     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
How to unit test a Singleton in C++
IPC
18 Mar 2014   Updated: 18 Mar 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 5,170     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
This is an introduction to network alchemy
Programming Languages
C++
21 Jan 2014   Updated: 21 Jan 2014   Rating: 4.71/5    Votes: 4   Popularity: 2.84
Licence: CPOL    Views: 9,320     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
View C++ as a federation of languages
9 Feb 2014   Updated: 9 Feb 2014   Rating: 4.77/5    Votes: 9   Popularity: 4.55
Licence: CPOL    Views: 13,350     Bookmarked: 4   Downloaded: 0
Please Sign up or sign in to vote.
How to improve code clarity with Typedef
18 Jun 2014   Updated: 21 Jun 2014   Rating: 4.87/5    Votes: 5   Popularity: 3.40
Licence: CPOL    Views: 14,211     Bookmarked: 6   Downloaded: 0
Please Sign up or sign in to vote.
I would like to devote this entry to further discuss the Typelist data type. Previously, I explored the Typelist[^] for use in my network library, Alchemy[^]. I decided that it would be a better construct for managing type info than the std::tuple.
4 Feb 2015   Updated: 4 Feb 2015   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 8,161     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
Alchemy: BitField
30 Apr 2015   Updated: 30 Apr 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 3,920     Bookmarked: 1   Downloaded: 0
Please Sign up or sign in to vote.
A continuation of a series of blog entries that documents the design and implementation process of a library called Network Alchemy[^].
24 May 2015   Updated: 24 May 2015   Rating: 4.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 3,930     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Preparing to know modern C++
15 Jun 2015   Updated: 15 Jun 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 3,961     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
Accidental complexity
17 May 2014   Updated: 18 May 2014   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 8,630     Bookmarked: 3   Downloaded: 0
Please Sign up or sign in to vote.
Type lists
18 May 2014   Updated: 18 May 2014   Rating: 4.85/5    Votes: 4   Popularity: 2.92
Licence: CPOL    Views: 11,511     Bookmarked: 11   Downloaded: 0
Please Sign up or sign in to vote.
C++ header
27 Jan 2015   Updated: 9 Feb 2015   Rating: 4.91/5    Votes: 9   Popularity: 4.68
Licence: CPOL    Views: 23,111     Bookmarked: 6   Downloaded: 0
Please Sign up or sign in to vote.
This post will focus on the concept of SFINAE, Substitution Failure Is Not An Error. This is a core concept that is one of the reasons templates are even possible. This concept is related exclusively to the processing of templates.
28 Mar 2014   Updated: 29 Mar 2014   Rating: 4.88/5    Votes: 5   Popularity: 3.41
Licence: CPOL    Views: 15,591     Bookmarked: 9   Downloaded: 10
Please Sign up or sign in to vote.
Byte endianness
20 Apr 2014   Updated: 22 Apr 2014   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 15,803     Bookmarked: 3   Downloaded: 0
Please Sign up or sign in to vote.
Tuple
21 Feb 2015   Updated: 21 Feb 2015   Rating: 5.00/5    Votes: 1   Popularity: 0.00
Licence: CPOL    Views: 8,940     Bookmarked: 0   Downloaded: 0
Please Sign up or sign in to vote.
This post discusses enable_if.
C++11
21 Jun 2015   Updated: 21 Jun 2015   Rating: 0.00/5    Votes: 0   Popularity: 0.00
Licence: CPOL    Views: 7,810     Bookmarked: 2   Downloaded: 0
Please Sign up or sign in to vote.
Rvalue references were introduced with C++11, and they are used to implement move semantics and perfect-forwarding. Both of these techniques are ways to eliminate copies of data parameters for efficiency. There is much confusion around this new feature that uses the && operator, because its meaning
Singleton
21 Jul 2014   Updated: 21 Jul 2014   Rating: 5.00/5    Votes: 3   Popularity: 2.39
Licence: CPOL    Views: 7,851     Bookmarked: 3   Downloaded: 0
Please Sign up or sign in to vote.
I am not aware of a software design pattern that has been vilified more than The Singleton. Just as every other design pattern, the singleton has its merits. Given the right situation, it provides a simple a clean solution, and just as every other design pattern, it can be misused.
Web Development
HTML
26 Mar 2014   Updated: 18 May 2014   Rating: 5.00/5    Votes: 2   Popularity: 1.51
Licence: CPOL    Views: 11,270     Bookmarked: 6   Downloaded: 2
Please Sign up or sign in to vote.
I discussed the merits of selecting a suitable unit test framework for your development project in my previous post. I described the qualities that I found most valuable in the test framework that I use, CxxTest. The qualities are xUnit framework, portability, simplicity, and flexibility.

Average tips rating:

No tips have been posted.

Average reference rating:

No reference articles have been posted.

Average project rating:

No projects have been posted.
Engineer
United States United States
I am a software architect and I have been developing software for nearly two decades. Over the years I have learned to value maintainable solutions first. This has allowed me to adapt my projects to meet the challenges that inevitably appear during development. I use the most beneficial short-term achievements to drive the software I develop towards a long-term vision.

C++ is my strongest language. However, I have also used x86 ASM, ARM ASM, C, C#, JAVA, Python, and JavaScript to solve programming problems. I have worked in a variety of industries throughout my career, which include:
• Manufacturing
• Consumer Products
• Virtualization
• Computer Infrastructure Management
• DoD Contracting

My experience spans these hardware types and operating systems:
• Desktop
o Windows (Full-stack: GUI, Application, Service, Kernel Driver)
o Linux (Application, Daemon)
• Mobile Devices
o Windows CE / Windows Phone
o Linux
• Embedded Devices
o VxWorks (RTOS)
o Greenhills Linux
o Embedded Windows XP

I am a Mentor and frequent contributor to CodeProject.com with tutorial articles that teach others about the inner workings of the Windows APIs.

I am the creator of an open source project on GitHub called Alchemy[^], which is an open-source compile-time data serialization library.

I maintain my own repository and blog at CodeOfTheDamned.com/[^], because code maintenance does not have to be a living hell.