2.6.1 Designing an X Application2.6.1.1 Design Requirements2.6.1.2 The User Interface2.6.2 Writing an X Application2.6.2.1 Resources and User Customizability2.6.2.2 Compiling and Linking X Programs2.6.2.3 Naming Conventions2.6.2.4 Using Structures, Symbols, and Masks2.6.2.5 Performance Optimizing2.6.2.6 ANSI-C and POSIX Portability2.6.3 Debugging an X Application2.6.3.1 Errors2.6.3.2 The XErrorEvent Structure2.6.3.3 Synchronizing Errors2.6.3.4 Software Interrupts