.Open Index of the samples/maths project . Introduction I am using my $PQRST framework in this project: PQRST::=http://csci.csusb.edu/dick/monograph/01_4.html#PQRST, Purposes .See P.html , Qualities .See Q.html , Realties .See R.html , Systems .See S.html , Technologies & Techniques .See T.html , and Other .See O.html factors. .Open Purposes of maths project . Introduction -- the MATHS language MATHS is a language with syntax based on computer languages but semantics provided by mathematics and formal logic. The .See ../../monograph/10.manifesto.html (MATHS manifesto) spells out the intent of the language. This collection of notes .See ../../maths/ are the current defining documents of the language. .Open Goals of Project To make the MATHS tools and language usable by any body on the web. To open up the defining documents and tools to the Free/Open Source Community. Ultimately to develop the MATHS web site so that it will improve and grow as a resource for people doing maths and logic as part of developing software, even after I have retired (4..5 years) or died. .Close .Open User Stories A beginer can generate a web page rendered from a MATHS document. Any body can submit a MATHS document to the owner of the web site. While creating a MATHS document a user can add a template: subsection, argument, rebuttal, net, PISCO, ... and fill in blanks in the template. A programmer needs a quick summary of the syntax and semantics of a language can find links and/or MATHS definitions. A developer needs a model that acounts for a particular part of a domain can search the site to find relevant formal systems, in computer notation. Members of the core editor group can maintain and improve the structure. A trustworthy person can edit the content and so improve it. Someone who is not known to the community can submit new material to trustworthy people who will place it in the site. People can earn the right to move up the hierarchy from reader, to writer, and to editor. .Close .Close Purposes of maths project .Open Qualities of maths project . The Illities (Q1): Security, (Q2): simplicity, See $Q2a and $Q2b below and .See ./T.html#KISS (Q2a): Simple web technology -- HTML + simple CSS. (Q2b): Simple development tools and techniques. (Q3): cost=free, (Q3a): Avoid proprietary technology, (Q4): usable by geeks, (Q5): artifacts readable by most. (Q6): aim for data not glitz. (Q7): easy to code. (Q7a): The Minimum Necessary Change at each step. (Q8): Low CPU load -- not enough to slow other users. (Q9): Keep Disk space within CSE.CSUSB limits. .Close .Open Realities of maths project . Introduction There are many pages. Some pages are samples of applications, some are part of a repository of mathematcs, some define the underlying logic (including methods of proof), and some define the notation (Syntax and semantics) used. MATHS documents have many internal and external links. Each theorem has a link to its proof. Each defined term links to its definition. Each name of a mathematical system has a link to its definition. MATHS is a a source code that can be translated into various mark up languages such a HTML and TeX. The generated HTML takes up twice the disk space as the source code. . Some can not be trusted to use the pages as planned Evidence: every week or so someone submits a piece of HTML with an invalid addres and irrelevant subject and links to porn, advertising, drugs and other non-mathematical stuff. Examples: .See http://www.codinghorror.com/blog/archives/001123.html (Coding Horror blog "Designing For Evil", May 2008). .See http://www.codinghorror.com/blog/archives/001171.html (Coding Horror blog , September 23, 2008 "Cross-Site Request Forgeries and You") . A Group Is Its Own Worst Enemy .See [Skirky03] .See .See http://shirky.com/writings/group_enemy.html .List Social and technical issues are intertwingled: they can not be separated niether does the technical drive the social. The system will have antics -- emergent properties. There will be a formal rules and informal rules. Members are not just users. There will be an onion structure. Example: reader -> anonymous coward -> named person -> moderator. The Core subgroup love and weed the garden that others wander through (and vandalize?). = Volunteer fire department. `One user = one vote` does not work when any wandering visitor can be a user. .Close.List . Number of external links One page -- the bibliography of softwre development has over 113 distinct sites in "http" URLs. .Close .Open Systems of maths project . Upto September 18th 2008 Only the owner can update the site, but any reader can submit new materials to the owner for inclusion. Even so there is a bibliography or nearly 4k items on software development and mathematics and logic. . September 19th 2008 A form will allow the generation of an HTML page for the user. The form will be able to add templates in MATHS. . September 25th 2008 A form will allow the generation of an HTML page for the user, and a copy of the MATHS source will be sent to the owner. To be published the submitter must include their EMail address and a nick-name for use on the site. Work is credited to the submitter via the nick-name. . Wait to gather clientele/users . Next? Some limitted form of auto-submission by those who have proved themselves. New materials are creditted to the person. .Close .Open Technologies and Techniques of maths project (Team): Just me .See ../../index.html at this time. Long term goal recruit volunteers and students to (1) develop intro, math, logic pages. (2) develop the notation (notn pages), (3) develop more tools and improve current tools. (KISS): The technology used must not be bleeding edge. This includes both generated pages and the technology used to create them. .See ./Q.html#Q2 (locost):It should be free or at least, very cheap. (PHP): PHP is a well tested preprocessor that fits well into web servers. Runs on CSE.CSUSB web servers. (unix): Used standard Unix tools like sed, awk, grep etc. to prototype tools for translating MATHS to HTML. The next small step would be to execute mht2html from PHP. .See ./Q.html#Q7a (ed): This old Unix editor is stable and unbreakable. It fits .See Q.html#Q1 and .See Q.html#Q2 well. For example: .Box .As_is : fix extra slashes injected by PHP .As_is if [ $# -ne 1 -o "x$1" = x ] .As_is then .As_is echo $0: Wrong number of arguments .As_is exit 2 .As_is fi .As_is if [ -r $1 ] .As_is then .As_is ed - $1 <"); .As_is system("pwd"); .As_is echo("
"); .As_is system("set"); .As_is echo("
"); .As_is system("echo PATH=\$PATH", $retval); .As_is echo("
$retval
"); .As_is echo("
"); .As_is system("ls /bin"); .As_is echo("
"); .As_is system("cat /usr/local/www/data-dist/faculty/dick/bin/cookie", $retval); .As_is echo("
"); .As_is echo("$retval"); .As_is echo("
"); .As_is system("sh /usr/local/www/data-dist/faculty/dick/bin/cookie", $retval); .As_is echo("
"); .As_is echo("$retval"); .As_is echo("
"); .As_is system("/usr/local/www/data-dist/faculty/dick/bin/cookie", $retval); .As_is echo("
"); .As_is echo("$retval"); .As_is echo("
"); .As_is ?> .Close.Box .Close.But .Close.But (HTML_forms): For posting data to PHP. (AJAX): Asynchronous JavaScript and XML. See $KISS above. (LAMP): the CSE.CSUSB web servers user the Linux+Apache+Preprocessor stack. Does it have MySQL? (ruby): is available on lab machines... is it available on the web server? (Gen): generate pages on demand from MATHS to HTML, or store HTML prepared when MATHS changes. First choice will reduce disk space .See ./Q.html#Q8 by about 60% .See ./R.html but increase the CPU load .See ./Q.html#Q9 for each request. A classic Quality tradeoff. (limit offsite links): -- plausible but feasible. To protect against evil users allow automatic posting of items with offiste links limitted to a few safe sites -- example ACM DL, Wikipedia, ... .But See .See ./R.html#Number of external links which makes this an implausible technique. .Close.But (convert unix2dos): Available on the lab machine and the login server. Used in `mth2html` to create ".txt" files from".mth" files. Reinvented using `sed` for Web server: .As_is sed 's/$/^M/' Note -- you must actually type "^V^M" = [CTRL v][CTRL M] to insert the "\r" character at the end of the line. .Close .Open Other Factors in the maths project . How to motivate people to use MATHS . How to motivate people to write MATHS for this site . How to motivate people to write tools for this site .Close . Log of activities Each time I regenerate an HTML file or compile a source file my "Quickie" tool summarizes the changes in a file ".Q.log" which is linked to .See ./log.txt and published as part of this site. . Blog .See ../maths.html .Close