I make use of style sheets as much as possible. This allows for example, either block or first-line indent. With a style-sheet set down to character-level, one can use single or double-spaces freely at the end of a sentence. The markup language I wrote (KML, see, eg http://www.os2fan2.com/ makes use of a chacter-level style sheet that replaces eg `t and `T by th,TH or , respectively, eg 'the polygloss' vs 'the polygloss as nature intended', both derive from the same source KML file.
One uses also two kinds of paragraph (p) and (pp), to create leading vs following paragraph. The pp-style paragraph can have either first-line indent (traditional) vs blank-line block style.
Don Knuth described Literate Programming in which the program is embedded in comments, one using a preprocessor to write the program. The preprocessor runs as a command processor, using the source as a batch file. One gets a properly sorted batch file as output. Because of this, one can overcome limitations of the programming language, use pre-processor variables etc, and produce several linked files etc.
Documentation is relatively straight forward, since one writes what one wants to get, limitations, API and examples by way of a wish-list, and then create the routines that make this happen. You can write a tight section like "File I/O", for fileopen() and fileclose() along with getline(), putline(), etc, without exposing the filenames to all of the subroutines. I've written a program to write Web pages in it, for example, http:\\www.os2fan2.com\pgloss\index.html and its attendent pages. It's pretty elegant really.
The temptation of LP is to use it to solve a problem per source, a note that Jon Bentley (Pearls of Programming) noted. LP is about sorting problems: however, the sort of problems that Knuth sought to solve are complete things in an educational setting, not bits of problems in the real world. None the less, I use it to write terse batch files etc, where the LP source is the help file too.
Two tricks i use to hide passwords is to use short forms, eg "A7" might expand as "ABD968017", and a general "salt and pepper" table. These are all unrelated to what is typically discussed. Note also that a7 expands to "abd968017", so some case can be preserved.
In a salt and pepper table, one uses an intermediate table that is easy to recall, but no need to be written, and not common knowledge. An example might be "husbands and wives", so a password displayed as "John" might be entered as "Yoko". Another kind of table might be "middle names", so "John" would elicit the response of "Winston". Note eg, jOhn gives yOko or wInston, so you can hide case in here too.
The less obvious you make the salt and pepper table, or the more unobvious the abbreviations, the more secure the table, even if the reminders are kept in plain text (plain text in an unobvious application also deters automatic gathering. Who would look for something like a
It's interesting that the bulk of the SxS stuff is Microsoft stuff, not third party stuff.
I recall that when Win95 first came out, and that they were replacing the Win16 stuff with Win32 stuff. Someone remarked that there would be incompatibilities, and that it was for the vendor to rewrite the apps to meet the new APIs. That calling some DLL by name would of course these incompatibilities.
I thought how silly. Inviting third parties to use routines in your DLL is pretty much a kind of contract of support. This is the nature of the operating system, really. If you create a DLL like VBRUN100 for some set of apps to call, then the App expects it to run in that way, and if your new version of VBRUN would cause incompatibility, you should give it a different name, like VBRUN200.
Last time i looked, routines like VBRUN100, BWCC etc, comes to about 9 MB. (There's a download that ye can add to your OS to give these as preinstalled.
Where the problem comes is when some sort of obvious name gets used for different DLLs (eg the three different versions of THREED.VXD that different applications were loading under Win31), or the MFC3xx DLLs where the source code was given to vendors to allow them to add their own functions. (good lord). Even so, Microsoft continues to release DLLs like MSVCRT and MFC40, updated to their latest operating system / compiler.
I don't think anyone else uses such nonsense as SxS or DLL hell: OS/2 VREXX.DLL or EMXRT do the right thing: preserve existing functions, and have a test for version-level.
Compare OS/2's virtualisation of Windows 3.x. OS/2 still launches the app, but it does not do a graphic repaint of the current host screen to do this.
Still, i don't rate pi in the same regard as e or the fsh (137.0359996), since pi is a matter of how it is defined, whereas e and fsh come as a single value.
The current thinking of the circle constant, usually taken at pi, from high dimensions, is that pi/2 serves better, and for physics, 2pi might be better. pi/4 and pi/6 have also been mooted, as the content of a unit circle and sphere. (of diameter of unity).
How many hardware guys does it take to change a light bulb? "Well the diagnostics say it's fine buddy, so it's a software problem."