*** empty log message ***
authorMatthew Mondor <mmondor@pulsar-zone.net>
Sat, 24 Jul 2010 04:53:44 +0000 (04:53 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Sat, 24 Jul 2010 04:53:44 +0000 (04:53 +0000)
site/ng/ajax_position.html [new file with mode: 0644]
site/ng/browser_security.html [new file with mode: 0644]
site/ng/contact.html [new file with mode: 0644]
site/ng/css/mmsoftware.css [new file with mode: 0644]
site/ng/documentation.html [new file with mode: 0644]
site/ng/images/key-small.jpg [new file with mode: 0644]
site/ng/index.html [new file with mode: 0644]
site/ng/mmsoftware.html [new file with mode: 0644]
site/ng/news.html [new file with mode: 0644]
site/ng/repository.html [new file with mode: 0644]
site/ng/software.html [new file with mode: 0644]

diff --git a/site/ng/ajax_position.html b/site/ng/ajax_position.html
new file mode 100644 (file)
index 0000000..1f778c3
--- /dev/null
@@ -0,0 +1,65 @@
+<html><head><title>AJAX - A kludge, not a solution</title></head>
+<body style="background:#003000; font-family:helvetica;
+ font-size:small; color:#00e000;">
+
+<table width="600"><tr>
+<td width="200" valign="top"></td>
+<p><a style="color:#00ff00;" href="../">Back</a></p>
+<td valign="top">
+<h1>AJAX - A kludge, not a solution</h1>
+
+<h2>A hack</h2>
+<p>
+AJAX is a hack.  A plethora of kludges built on the assumption
+that users accept to run third party scripts from most sites, and
+that sites should provide scripts to enhance the interface for
+every browser.  Results in a collection of compatibility code to
+work with a few browsers only.
+</p>
+<p>
+Oftentimes slight modifications to the User-Agent sent by HTTP
+clients cause problems.  For instance, google maps stopped to work
+in AJAX mode whenever I removed the version from my Firefox
+User-Agent.  Every site may parse the User-Agent string differently
+and (mis)evaluate the features of the client.
+</p>
+<p>
+Various circumvented ways to achieve semi-asynchroneous
+functionality.  An attempt to dumb down sites so that users
+unfamiliar with the way HTTP works may have an interface closer to
+that of local GUI applications.  As a side effect, often causes
+every site to use a different interface without following UI
+standards.
+</p>
+
+<h2>Hype</h2>
+<p>
+Unfortunately, the industry largely fell into the trap.  This
+makes it hard to work on actual solutions and on their
+standarization.  More time and effort are spent on the interface
+than on actual useful content.  This is also a landmark of Web
+2.0, but many of the Web 2.0 functionality could remain available
+with better, real, solutions to the problem.
+</p>
+
+<h2>What is needed</h2>
+<p>
+An enhancement to the HTTP protocol or a replacement protocol such
+as BEEP to support bidirectional asynchroneous events over a
+persistent connection.  An enhanced form system which does not
+require javascript for user interaction and supports required
+features like widget lists updates via asynchroneous events, etc.
+Basically to do all that AJAX can provide but without needing
+scripts.
+</p>
+<p>
+The new technologies should be secure and standarized.
+The W3C XFORMS, for instance, appear to have potential to advance
+towards a solution.
+</p>
+
+</td></tr></table>
+
+<!-- : vim:tw=66:ai:
+-->
+</body></html>
diff --git a/site/ng/browser_security.html b/site/ng/browser_security.html
new file mode 100644 (file)
index 0000000..257125f
--- /dev/null
@@ -0,0 +1,207 @@
+<html><head><title>Privacy browser settings</title></head>
+<body style="background:#003000; font-family:utopia;
+ font-size:small; color:#00e000;">
+
+<table width="600"><tr>
+<td width="200" valign="top"></td>
+<a style="color:#00ff00;" href="../">Back</a>
+<td valign="top">
+<h1 style="font-size:large;">
+The definition of a privacy-aware HTTP browser
+</h1>
+
+<p>
+It is a well known fact that cross-site scripting and content is
+common-place.  They are especially used for advertizing and user
+tracking.  Consider what we call web bugs or beacons for
+instance.
+
+<p>
+For a number of years, mainstream browsers allow to optionally
+refuse to load images from other sources than the current site
+being viewed.  Although this restriction is off by default, it
+should, on an ideal web, be on by default, with users needing to
+add sites to an exceptions list to allow cross-site images.
+
+<p>
+Ideally, a browser's default settings should be as follows:
+<ul>
+<li>Use of standard HTML 4.01+ and XML 1.0+ along with CSS, but
+not allowing iframes or images to originate from another domain.
+Forbidden third-party scripts.  Ability of the user to allow third
+party content on request (but discouraged).
+<li>Scripting disabled, unless explicitely allowed by the user
+for specific domains (the NoScript Firefox extension allows this).
+<li>Features like Flash or Java disabled by default unless
+explicitely allowed by the user for specific domains.
+NoScript also handles this.  These extensions are proprietary and
+their main function consist in the execution of remote arbitrary
+code.  Although Java and Flash are mentionned here as reference,
+since widely known, this includes PDF and mail readers and other
+proprietary products implementing SVG, VRML, as well as
+SilverBullet and other extensions.  Potentially also simple video
+media players.
+<li>When scripting functionality is allowed, these should only be
+allowed to use network functionality with the same domain by
+default, unless explicitely specified by the user for certain
+domains.  Unfortunately, the advent of Web 2.0 (or 2.2) using
+intensive JavaScript to render more interactive GUI features
+(commonly called AJAX) causes more and more people to rely on
+scripting functionality.  JavaScript consisting of an open-source
+and thus security auditable implementation of ECMAScript, it
+should be able to become secure when these restrictions are in
+effect.
+<li>Scripts which serve as extensions and are explicitely
+installed on request by the user commonly have file system access.
+Access to the file system should be restricted to an automatically
+assigned extension-specific virtual root directory for each.
+Better, an independent extension-specific simple key/value
+registry could be provided instead of file system access in most
+cases.
+<li>Any functionality which makes a browser access automatically
+a site should be disabled by default.  This includes auto-update
+functionality, downloading of a bookmark's icon from a site,
+update of an RSS feed, as well as auto-search functionality from
+the address bar or other similar features.
+<li>The HTTP-Referer HTTP header field should be disabled by
+default.
+<li>Cookies should by default be destroyed on request easily as
+well as at automatically at browser exit by default.  This is also
+valid for all cached content.  Ideally, sites should not be able
+to alter previously sent cookies.  They however should be able to
+re-send the cookie whenever it expired, or to resend them with the
+same values if one still exists with the key.
+<li>The history should be restricted to a decent configurable
+value and no further data should be kept than for that exact
+period.  These should also be deletable on request as well as
+application exit, although optionally.  This is also valid for
+auto-saved sessions.  This is valid for both browsing and download
+history.
+<li>Cached data should be protected against timing attacks.
+<li>Any auto-fill reminder managers (for forms as well as for
+passwords) should be disabled by default.
+<li>Browsers should support optional functionality, selected
+at installation, to encrypt all stored content using strong
+cryptography, requireing the user to type a password to start the
+application, as well as auto-suspend functionality after a
+user-set timed inactivity period disabling all network and GUI
+activity of the application until the password is re-entered.
+Although we see an emergence of similar functionality for
+password managers, this should apply to global storage,
+including storage of most of the configuration.  Moreover, it is
+important for an inactive browser not to continue updating
+content automatically.  Obviously, there should also be provided
+functionality to import and export any of the wanted data in
+unencrypted form by the user on explicit one-time requests.
+<li>By default, browsers should warn whenever use of an SSL
+certificate is to be used for the user to confirm that he indeed
+wants to connect to that HTTPS resource.
+<li>Information about stored cookies or other data should be
+limited to the domain from which it originates.
+<li>Stored bookmarks information should not by default include
+statistics about the last access date or number of accesses.
+</ul>
+
+<p>
+Although a browser implementing these security features might
+break the current functionality of existing commercial and
+fraudulent sites, they should be considered unethical to not
+provide a version of their content not making use of any of the
+disabled functionality which was usually assumed to be enabled.
+
+<p>
+Since major corporations such as Google and IBM now have a foot
+into Firefox development, this goal appears difficult to achieve.
+It thus becomes necessary for a neutral third party to enforce
+those default behaviors into a security-aware browser, such as a
+Mozilla or Firefox based product shipped with better settings.
+If an official project can never achieve this level of security,
+a third party could write a single Firefox extension enforcing
+these settings by default.  Although there exist extensions here
+and there which can be added to enhance privacy and security in
+certain ways, there is a need for a single, non-commercially
+sponsored one embedding all the necessary measures into one.
+
+<p>
+Trusted Computing should not be considered an eventual solution to
+such problems.  TC is a major step backwards as for human rights
+are concerned, and is also controlled by a coalition of major
+multi-national corporations such as IBM, Sony, Microsoft, Intel
+and Apple.  Their goal is to totally limit your hardware and
+software flexibility so that you may not gain real administrator
+status on your own systems.
+
+<p>
+The enormous amount of data which corporations and organizations
+are able to accumulate by current default browser functionality is
+of serious concern.  Privacy is being frowned upon by common
+practices.  The accumulation of personal data and the length at
+which this is done gives unwanted, unethical individuals an
+enormous amount of power.  People should be sensibilized about
+this.  This part can only be done through education.  However, if
+standard browsers limited functionality to what is strictly
+necessary, the web industry and sites would have to work with
+what's available.
+
+<p>
+Other common web trends are probematic on the web, such as
+acceptance of Flash as a video media player.  Flash does not suit
+properly for this job and direct links to videos, playable by
+specialized media of the user's choice should be used instead.
+Sites like YouTube unfortunately popularized this bad practice.
+There are few officially Flash-supported platforms, which
+restricts portability of the method.  Moreover, this requires the
+user to accept to run arbitrary remote code in a proprietary,
+non-auditable framework.  Additionally, it is an extreme waste of
+CPU and RAM resources.
+
+<p>
+In a better educated population, it would become easier to boycott
+the use of unethical or unappropriate trends.  But people also
+need tools which are already configured to only encourage good
+practices.  Privacy of course does not end here.  People should
+also be informed about the type of information they disclose when
+using web services, such as the plethora of Google services.  But
+this is another story.
+
+<h1 style="font-size:large;">The WWW is a kludge</h1>
+
+<p>
+Some could argue that these suggestions would prevent the web from
+evolving technologically.  It is true that the web requires a full
+redesign.  Many deprecated and standard technologies should also
+no longer be supported in a new design.  The HTTP protocol itself
+should be dropped in favor of better protocols allowing more
+interactivity (and inherently designed to avoid all the mess HTTP
+became over time), eliminating the need for hacks such as AJAX.
+
+<p>
+The current web consists of a chaos of redundant technologies and
+kludges.  It also has favored the development and public acceptance
+of extensions which should ideally not have been allowed, since
+they are unstandard, closed sourced as well as untrustable.  There
+are various existing technologies which could replace Web v1 and 2
+if they had more public exposure.  Of course, migrating from a
+technology to another is not an easy task, and would initially
+require support as extensions for existing browsers, before
+eliminating the bloated mainstream browsers to totally replace the
+technology.  Tools for content generation and server-side scripts
+should also be readily available to the public for the new
+technology.
+
+<p>
+The server-side technology should be distributed
+and scalable, as well as secure (using a determined security
+framework similar to BSD kauth to fine-grain authorize permissions
+of applications).  If a client-side scripting framework is also
+supported, the user also should be able to configure the access
+permissions with ease, and the framework should be secure by
+default.  The system also should be designed to support sessions
+without permitting the type of abuse possible with cookies.
+This also is another story.
+
+</td></tr></table>
+
+<!-- : vim:tw=66:ai:
+-->
+</body></html>
diff --git a/site/ng/contact.html b/site/ng/contact.html
new file mode 100644 (file)
index 0000000..b99806d
--- /dev/null
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Contact</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Contact</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h3>Contact</h3>
+  <p>The red pill (λ) allows you to reprogram your universe (☺).</p>
+<pre>
+(defun email-address ()
+  "Discloses the contact email address of the author :)"
+  (apply #'concatenate 'string
+         (mapcar #'(lambda (ᛟ)
+                     (string-capitalize (symbol-name ᛟ)))
+                 (reverse '(net |.| pulsar-zone @ software m m)))))
+</pre>
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: contact.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/css/mmsoftware.css b/site/ng/css/mmsoftware.css
new file mode 100644 (file)
index 0000000..4c06393
--- /dev/null
@@ -0,0 +1,160 @@
+html {
+       background: #b0cfca;
+}
+
+body {
+       /*background: #c4dada;*/
+       background: #b0cfca;
+       color: #000000;
+       font-family: sans-serif;
+       font-size: small;
+       text-indent: 0;
+}
+
+a:link, a:visited, a:active, a:hover {
+       font-family: sans-serif;
+       font-size: small;
+       font-style: normal;
+       font-weight: bold;
+       text-decoration: none;
+       color: #4040a0;
+       outline: none;
+}
+a:visited {
+       color: #804080;
+}
+a:active {
+       text-decoration: underline;
+}
+a:hover {
+       text-decoration: underline;
+       color: #107070;
+}
+a:link img, a:visited img, a:active img, a:hover img {
+       border: none;
+}
+
+#container {
+       width: 98%;
+       margin: 10px auto;
+       color: #303040;
+       border: thin solid gray;
+       line-height: 130%;
+       background: #d0d0f0;
+}
+#container h1 {
+       font-family: sans-serif;
+       font-size: larger;
+       font-weight: bold;
+       color: #000000;
+       margin: .5em 0 .5em 0;
+       padding: 0;
+}
+#container h3 {
+       font-family: sans-serif;
+       font-size: large;
+       font-weight: bold;
+       color: #000066;
+       margin: .5em 0 .5em 0;
+       padding: .5em 0 0 0;
+}
+#container h4 {
+       font-family: sans-serif;
+       font-size: medium;
+       font-weight: bold;
+       color: #000066;
+       margin: 0;
+       padding: 0 0 0.5em 0;
+}
+
+#top {
+       background: #e0e0ff;
+       border-bottom: thin solid gray;
+       text-align: center;
+       margin: 0;
+       padding: 0;
+}
+#top h1 {
+       font-family: sans-serif;
+       font-size: large;
+       font-weight: bold;
+       color: #000000;
+       margin: 0;
+       padding: 0;
+}
+
+#leftnav {
+       float: left;
+       width: 155px;
+       margin: 0;
+       padding: 1em;
+       min-height: 32em;
+       text-align: justify;
+       border: none;
+       font-size: small;
+}
+#leftnav p {
+       margin: 0 0 1em 0;
+}
+#leftnav dl {
+       margin: 0 0 2em 0;
+}
+#leftnav dt {
+       margin: 0 0 .1em 1em;
+}
+#leftnav a:link, a:visited, a:active, a:hover {
+       font-size: small;
+}
+
+#content {
+       margin: 0 0 0 155px;
+       border-left: thin solid gray;
+       padding: 2em;
+       min-height: 32em;
+       text-align: justify;
+       background: #f0f0ff;
+       font-size: medium;
+}
+#content a:link, a:visited, a:active, a:hover {
+       font-size: medium;
+}
+#content ul {
+       list-style: square;
+       margin: 0 0 2em 0;
+}
+#content li {
+       margin: 0 0 .1em .1em;
+}
+
+#footer {
+       padding: .2em;
+       clear: both;
+       margin: 0;
+       color: #303040;
+       background: #c0c0e0;
+       border-top: thin solid gray;
+       text-align: right;
+       font-size: small;
+}
+
+div.Results {
+       clear: none;
+       margin: 0.5em 0.5em 0.5em 0.5em;
+       border: thin solid;
+       padding: 0.1em 2em 0.1em 2em;
+       background: #b0b0d0;
+       text-align: center;
+}
+div.Box {
+       clear: none;
+       margin: 0.1em 0.1em 0.1em 0.1em;
+       border: thin solid;
+       padding: 0.1em 2em 0.1em 2em;
+       background: #d0d0f0;
+       text-align: center;
+}
+#resultMessage {
+       margin: 0;
+       padding: 0;
+       border: none;
+}
diff --git a/site/ng/documentation.html b/site/ng/documentation.html
new file mode 100644 (file)
index 0000000..9f11201
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Documentation</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Documentation</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h2>Miscellaneous Documents</h2>
+  <p>
+   Software documentation, where it exists, is linked by the project-specific
+   section in the <a href="mmsoftware.html">Software</a> page.
+   This page links to various documents or notes.
+  </p>
+
+  <h3>NetBSD PRs which need to be commited or closed</h3>
+  <p>Various bug reports which I have been involved with or was simply
+   interested in tracking.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/netbsd/pr.txt">
+        <code>pr.txt</code></a>
+  </ul>
+
+  <h3>A view on WWW browser security</h3>
+  <ul>
+   <li><a href="browser_security.html">browser_security.html</a>
+  </ul>
+
+  <h3>An opinion on AJAX</h3>
+  <ul>
+   <li><a href="ajax_position.html">ajax_position.html</a>
+  </ul>
+
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: documentation.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/images/key-small.jpg b/site/ng/images/key-small.jpg
new file mode 100644 (file)
index 0000000..f445d42
Binary files /dev/null and b/site/ng/images/key-small.jpg differ
diff --git a/site/ng/index.html b/site/ng/index.html
new file mode 100644 (file)
index 0000000..e3fed09
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Main</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Main</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h3>Abstract</h3>
+  <p>
+   This site provides various
+   <a href="http://www.opensource.org/">Open Source</a>
+   software to anyone who find it useful.  The projects were written from
+   scratch by Matthew Mondor and publically released under a modified
+   <a href="http://opensource.org/licenses/bsd-license.php">BSD</a>
+   (Berkeley Source Distribution) license.  Some are listed on the
+   <a href="mmsoftware.html">Software</a> page.
+  </p>
+  <p>
+  <h3>Support</h3>
+  <p>
+   If you are using some of this software, and would like to propose
+   enhancements or bug-fixes, feel free to
+   <a href="contact.html">contact</a>
+   me so that we may further discuss via email and exchange diffs as
+   necessary.  However, this free software is by no means officially
+   supported and there is no commercial support available at current time.
+  </p>
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: index.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/mmsoftware.html b/site/ng/mmsoftware.html
new file mode 100644 (file)
index 0000000..8448e94
--- /dev/null
@@ -0,0 +1,522 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Software</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Software</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <a id="top"<h2>Open source software</h2></a>
+  <p>Various other software may also be found within the CVS repository,
+   although these may merit some highlight.
+  </p>
+  <p>
+   <a href="#mmstatd">mmstatd</a> |
+   <a href="#apache-mmstat">apache-mmstat</a> |
+   <a href="#mmftpd">mmftpd</a> |
+   <a href="#mmmail">mmmail</a> |
+   <a href="#mmspawnd2">mmspawnd2</a> |
+   <a href="#mmserver-mmserver2">mmserver-mmserver2</a> |
+   <a href="#mmlist-mmpool-mmhash">mmlist-mmpool-mmhash</a> |
+   <a href="#pthread_util">pthread_util</a> |
+   <a href="#js-appserv-sh">js-appserv-sh</a> |
+   <a href="#ecl-unix">ecl-unix</a> |
+   <a href="#bktr">bktr</a> |
+   <a href="#tap-bridge">tap-bridge</a> |
+   <a href="#utf-8">utf-8</a> |
+   <a href="#xisop">xisop</a> |
+   <a href="#mythic-ships">mythic-ships</a> |
+   <a href="#paradise-adventure">paradise-adventure</a> |
+   <a href="#symbol-game">symbol-game</a>
+  </p>
+  <hr>
+
+  <a id="mmstatd"><h3>mmstatd</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>mmstatd</code> is a small database server, C library and command-line
+   client designed to store key-based counters for statistics or simple
+   configuration storage.  These up to date statistics may then be queried in
+   real-time.  The C library allows C software to query and modify those using
+   transactions, and the server internally uses a recovery log.
+  </p>
+  <p>
+   <code>mmstatd</code> is used by <code>mmftpd</code>, <code>mmmail</code>
+   and <code>apache-mmstat</code>.  It may be found at the following
+   locations:
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmstatd/">
+        mmstat server and command line client</a>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmlib/">
+        mmstat documentation and client library (mmstat.*)</a>
+  </ul>
+
+  <a id="apache-mmstat"><h3>apache-mmstat</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   This utility can easily be used with apache so that it pipes a custom log
+   format trough it, for various statistics to become maintained by
+   <code>mmstatd</code>.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/apache-mmstat/">
+        apache-mmstat source and documentation</a>
+  </ul>
+
+  <a id="mmftpd"><h3>mmftpd</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   At the time I wrote this FTP server, none that I knew were open source
+   for unix, properly and easily supported virtual users (simulating chroot
+   for each), running fully unprivileged and under a real chroot(2).
+   I also wanted a single file to serve as an accounts database, and another
+   simple configuration file.  Internally using the <code>mmserver</code>
+   library, it initially used GNU Pth threads.  Over time, the
+   <code>pthread_util</code> library was written to solve some missing
+   functionality from POSIX threads, and the <code>mmserver</code> library was
+   modified to use pthread.  Later on, IPv6 support was also added.
+  </p>
+  <p>
+   Other features include configurable per-address rate and connection limits
+   as well as bandwidth throttling.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmftpd/">
+        mmftpd source and documentation</a>
+  </ul>
+
+  <a id="mmmail"><h3>mmmail</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   Following the writing of <code>mmftpd</code>, I also wanted a
+   non-privileged, chroot-capable non-relaying SMTP server and its POP3
+   server companion.  Originally, MySQL was used as the backend, but
+   eventually the code was modified to use PostgreSQL and file storage for
+   message content, which the setups running it had migrated to.
+   Like <code>mmftpd</code> it also uses the <code>mmserver</code> library
+   so now uses POSIX threads and supports IPv6 as well.
+  </p><p>
+   This mail server is highly tuned against spam.  It performs various sanity
+   checking and allows filtering based on headers or user/mailbox specific
+   envelope based filters which users may configure via an HTTP interface.
+   The latest HTTP interface to MMMail is unfortunately not open source,
+   however.
+  </p>
+  <p>
+   Other features include configurable per-address rate and connection limits
+   as well as bandwidth throttling.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmmail/">
+        mmmail SMTP/POP3 servers and documentation</a>
+  </ul>
+
+  <a id="mmspawnd2"><h3>mmspawnd2</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>mmspawnd2</code> consists of an <code>inetd</code>-like server but
+   an instance of the server is needed for every service.  However, more
+   control is allowed on a service, such as setrlimit(2), chroot(2), running
+   unprivileged, binding privileged ports to then drop privileges before
+   starting serving connections, doing some sanity checking before executing
+   the target executable, etc.  This server uses the <code>mmserver2</code>
+   library and thus supports IPv6 and maintains a dynamic pool of pre-forked
+   processes for performance.  Connection and rate limits are also supported.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmspawnd2/">
+        mmspawnd2 source and documentation</a>
+  </ul>
+
+  <a id="mmserver-mmserver2"><h3>mmserver and mmserver2</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>mmserver</code> was initially a library for writing unprivileged
+   network IPv4 TCP servers using the GNU Pth portable user-threads library.
+   Although mainly I/O bound, which user-threads can be suited for, a special
+   facility was designed using a pool of processes along with a messaging
+   system so that parallel tasks, or ones which might require a fair amount of
+   stack, be served by non-threaded processes.
+  </p>
+  <p>
+   As POSIX threads implementations became more widely available and more
+   mature, conforming to POSIX more and more (LinuxThreads didn't conform and
+   NetBSD had no kernel threads at the time), the <code>pthread_util</code>
+   library was eventually written and <code>mmserver</code> was modified to
+   use POSIX threads.  The non-threaded pool of processes is still available
+   and may still be used for cases where threads are unappropriate, like for
+   using non-threadsafe library calls, tasks needing a lot of stack, etc.
+   Later on, support for IPv6 was also added.  This library is used by
+   <code>mmftpd</code> and <code>mmmail</code>.
+  </p>
+  <p>
+   <code>mmserver2</code> consists of another similar library but which is
+   designed to use processes rather than threads.  This model is more adequate
+   for some types of applications and provides enhanced reliability.  A pool
+   of processes is maintained to serve the clients in parallel, such as is
+   done in Apache 1.3, and <code>mmserver2</code> supports AF_LOCAL, IPv4 and
+   IPv6 TCP/Stream and UDP/Datagram.  <code>mmserver2</code> is used by
+   <code>mmspawnd2</code> and <code>js-appserv</code>, and has also been used
+   in proprietary server code.  This library also permits to reuse, and to
+   eventually recycle processes of the pool to for instance recover memory
+   leaks from a third party library, and this is tunable by every application.
+   Connection/request rate and limits are also supported.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmlib/">
+         mmserver and mmserver2 source and documentation (mmserver*)</a>
+  </ul>
+
+  <a id="mmlist-mmpool-mmhash"><h3>mmlist, mmpool, mmhash</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>mmlist</code> is a library of C macros to help dealing with doubly
+   linked lists, which are a common data structure used in software.
+  </p>
+  <p>
+   <code>mmpool</code> consists of an efficient fixed-sized objet pool-based
+   allocator, with some slab-allocator features such as asynchroneous object
+   creation/destruction and reuse of recently used memory pages.
+  </p>
+  <p>
+   <code>mmhash</code> is a general purpose hash table library, also a
+   frequently used data structure.  Custom 32-bit hash functions, as well as
+   object-specific comparision functions may be provided, and the tables may
+   be tuned/customized via various options.  Collisions are dealt with,
+   as well as automatic table resizing and rehashing.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmlib/">
+        source and documentation (mdoc manual pages) of these libraries</a>
+  </ul>
+
+  <a id="pthread_util"><h3>pthread_util</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   The <code>pthread_util</code> library provides utility features for use
+   with POSIX threads.  It first implements an efficient Amiga/PTH like message
+   passing interface for inter-thread synchronization, where rings can be used
+   for polling.  It then also implements a poll(2) variant which can be used
+   to poll on both file descriptors and message rings at a time.  Along with
+   this new polling primitive, asynchroneous connect(2)/accept(2) variants are
+   implemented.  Other facilities include a managed pool of threads to which
+   tasks may easily be dispatched in parallel.  Finally, some thread sleep
+   variants are also implemented which may also wake up upon events on a ring.
+  </p>
+  <p>
+   This library was initially written to replace missing POSIX threads library
+   features which the GNU Pth library allowed, to then allow migrating
+   <code>mmserver</code> (and thus, <code>mmftpd</code> and
+   <code>mmmail</code>), to POSIX threads.  It also has found other uses
+   since.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/pthread_util/">
+        pthread_util library source</a>
+  </ul>
+
+  <a id="js-appserv-sh"><h3>js-appserv and js-sh</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   This was written in C, using the SpiderMonkey Mozilla JavaScript engine.
+   The shell (<code>js-sh</code>) allows to run various programs written in
+   JavaScript on unix systems.  As for the unix server
+   (<code>js-appserv</code>), it consists of a versatile server supporting
+   IPv4, IPv6 and local sockets.  This server is written in C but delegates
+   control to JavaScript server applications in an elegant way.  It uses the
+   <code>mmserver2(3)</code> library.
+  </p>
+  <p>
+   Various libraries are provided such as the following:
+  </p>
+  <ul>
+   <li>Syslog - Access to the syslog(3) logging facility
+   <li>Errno - Mappings for C errno
+   <li>FD - File Descriptor related syscalls, including file, network sockets,
+       non-blocking I/O and polling
+   <li>Event - libevent for OS-specific efficient events polling
+   <li>GD - Full GD graphics library support for live image
+       generation/manipulation
+   <li>PG - Full Postgresql 8.1.4+ database server (a production quality,
+       featureful and efficient free ORDBMS) support, including asynchroneous
+       non-blocking functions, pre-processed queries and escaping-avoiding
+       explicit parameter-aware functions
+   <li>Dir - Directory traversal opendir(3) and friends wrapper
+   <li>FS - Various file-system related syscalls
+   <li>File - Full stdio FILE * support including popen(3) functionality
+   <li>jslib - Various JavaScript libraries to extend native and above objects
+   <li>jsdoc - An application to translate comments from JS and SpiderMonkey
+       based C code modules, into reference documentation (currently HTML, but
+       other modules could be written such as for mdoc macros). This
+       implementation was especially written to not care about code, but only
+       about recognized comments.
+   <li>Reference documentation of the classes, their properties and methods.
+  </ul>
+  <p>
+   Eventual support might be provided for:
+  </p>
+  <ul>
+   <li>Signal - Changing signal masks and providing signal handler
+       functions/events
+   <li>Global - Support for inter-process shared memory
+   <li>MMStat - Support for mmstat(3) statistics database system 
+  </ul>
+  <p>
+   Also provided are example programs:
+  </p>
+  <ul>
+   <li>jshttpd - An HTTP server written in JavaScript using FD (hosting this
+       site)
+   <li>irclog - An IRC logging robot
+   <li>jsthumb - An image gallery indexer application using GD 
+  </ul>
+  <p>
+   Here are the relevant links:
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/js/">
+        the js-sh and js-appserv source and examples</a>
+   <li><a href="http://mmondor.pulsar-zone.net/jsdoc/classes.html">
+        the reference documentation for the implemented classes, their
+       properties and methods</a>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/js/js-sh/app/">
+        example js-sh applications</a>
+  </ul>
+
+  <a id="ecl-unix"><h3>ecl-unix</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>ecl-unix</code> is an interface to NetBSD syscalls and various other
+   important libc interfaces for the ECL implementation of Common Lisp.  It is
+   written to use ECL's native C inline features.  This allows ECL to be used
+   on NetBSD to develop various kinds of server and client applications
+   easily, with good performance and minimal dependencies.  Support for
+   kqueue(2) is also included.
+  </p><p>
+   It makes uses of custom SETF expansions and lexically scoped MACROLETs to
+   override DEFMACRO-defined global macros to very efficiently inline C
+   structure accessors where the code is intended to be compiled.  In cases
+   where serializing whole structures at once is more convenient, this is used
+   instead of working via structure accessors.  For interpreted or third party
+   code, where random access to a C structure object is necessary, accessor
+   functions are provided for C structures.
+  </p>
+  <p>
+   <em>This code is still a work in progress.</em>
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/cl/test/ecl-unix.lisp">
+        ecl-unix.lisp source</a>
+  </ul>
+
+  <a id="bktr"><h3>bktr_multicast, bktr_client and bktr_httpd</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   <code>bktr_multicast</code> consists of an UDP multicasting server,
+   listening to BSD bktr(2) interfaces (device for bt8x8 video capture
+   devices), compressing and marking frames, to then sign them and broadcast
+   them on the LAN.  The frames are tagged with the current timestamp and
+   source, as well as a noonce-like tag to prevent replay attacks.  Frames are
+   also signed using RSA such that the clients may verify they are authentic.
+   Capture rate and parameters are configurable, as well as the simplistic
+   motion detection system.  Was used on NetBSD with a PCI 4 bktr ports board.
+  </p>
+  <p>
+   <code>bktr_client</code> is an SDL-based client which displays frames sent
+   by bktr_multicast for the wanted source.  It supports pause and save
+   features.  It also ensures to only decode frames with a valid RSA
+   signature.  This client was used successfully on NetBSD, Linux and Windows.
+  </p>
+  <p>
+   <code>bktr_httpd</code> is an efficient, I/O bound single-threaded HTTP
+   server using kqueue(2), which can stream image frames originating from
+   a wanted <code>bktr_multicast</code> source to many web clients.
+   It supports HTTP authentication and Keep-Alive, as well as some type of
+   bandwidth adaptation to adapt the frame rate to the link speed of every
+   client.  Only frames with a valid RSA signature are streamed.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/tests/bktr_multicast/">
+        bktr_multicast source</a>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/tests/bktr_client/">
+        bktr_client source</a>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/tests/bktr_httpd/">
+        bktr_httpd source</a>
+  </ul>
+
+  <a id="tap-bridge"><h3>tap-bridge</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   This is a modular daemon designed to act as a bridge/proxy between a
+   physical ethernet device and a NetBSD tap(4) virtual one to learn more
+   about network protocols and permit to easily write prototype network stacks
+   and low-level applications as userspace modules.  Packet capture and
+   injection are possible, and a few facilities are provided to modules for
+   ethernet/IP header deserializing/serializing as well as delayed send queues
+   and a facility for persistent property/variable which may last when modules
+   are reloaded (i.e. at reception of SIGHUP).  A diagram of the system can be
+   found
+   <a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/~checkout~/mmondor/mmsoftware/tap-bridge/doc/tap-bridge.png?rev=1.1;content-type=image%2Fpng">
+     here</a>.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/tap-bridge/">
+        tap-bridge source, documentation and example modules</a>
+  </ul>
+
+  <a id="utf-8"><h3>UTF-8/UTF-32 encoder/decoder</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   More and more applications make use of the UTF-8 external format and of
+   unicode, and UTF-8 is also the standard format of several network
+   protocols.  This library implements a UTF-8 to UTF-32 decoder and an UTF-32
+   to UTF-8 encoder.  I needed a comprehensive and efficient C interface which
+   was under a non-restrictive license, for use as third party extensions to
+   software which could not be under the GPL, and had to write this
+   implementation.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmlib/utf8.c">
+        utf8.c</a>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mmlib/utf8.h">
+        utf8.h</a>
+  </ul>
+
+  <a id="xisop"><h3>Xisop</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   Once upon a time, the author was an Amiga user.  This was a microkernel
+   with intefaces and design similar to that of AmigaOS.  An eventual
+   offspring of Xisop had to be licensed under more restrictive terms and
+   development stopped on the open source original, but here is the old code
+   anyway.  This version only runs on Amiga (it was developped on NetBSD using
+   an m68k cross-compiler targetted at the UAE emulator at the time).
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/Xisop/">
+        the Xisop source</a>
+  </ul>
+
+  <a id="mythic-ships"><h3>The Mythic Ships</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   After discovering <a href="http://en.wikipedia.org/wiki/Netrek">Netrek</a>,
+   playing it, running a bronco server for some time, and hosting a third
+   party CVS repository for bronco-server and cow-client, I got interested in
+   possibly developing a similar game from scratch.
+  </p>
+  <p>
+   Some work was done on the basic system including an encrypted and
+   compressed, adaptively streamed TCP-based client-server protocol, a
+   kqueue(2) based server allowing a large number of concurrent clients
+   efficiently and an SDL-based portable client (NetBSD, Linux, Windows).
+   However, as the challenging parts which were interesting to me were fully
+   implemented, interest in the game itself diminished and development was
+   stopped.
+  </p>
+  <p>
+   Since the network protocol and base client/server are implemented and
+   working, this may still be of interest to someone who is more interested in
+   the game writing part and less in the low-level parts.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/mystic_ships/">
+    the Mythic/Mystic Ships portable client and BSD server source</a>
+  </ul>
+
+  <a id="paradise-adventure"><h3>Paradise Adventure</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   Since a few of my family members have a drawing, painting and music hobby,
+   and that I have a type of nostalgy for old adventure games and am myself
+   musician and compositor, I started writing an SDL-based text+image adventure
+   game.  It started out well, but lack of time and lack of family support
+   stalled development.  The existing part is more a demo than anything else,
+   and is portable (tested on NetBSD, Linux and Windows).  An early
+   <a href="http://mmondor.pulsar-zone.net/img_gallery/screenshots/ParadiseAdventure.png">
+    screenshot</a>
+   is also available.
+  </p>
+  <p>
+   If I ever pick the project up seriously again, I'll most probably use ECL
+   with it such that the world and events system be implemented in Common
+   Lisp.
+  </p>
+  <p>
+   Please note that although the code is BSD-licensed, the artwork (images and
+   music) is not licensed for public distribution or use.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/mmondor/mmsoftware/paradise_adventure/">
+        Paradise Adventure source code</a>
+  </ul>
+
+  <a id="symbol-game"><h3>Symbol Game</h3></a>
+  <a href="#top">(top)</a>
+  <p>
+   This was a test I wrote when learing Common Lisp.  The main goals were to
+   learn how to develop an application interactively, how to make custom use
+   of the package system, dynamic symbols manipulation and simple macros.
+   <code>symbol-game</code> runs on ECL or SBCL.
+  </p>
+  <ul>
+   <li><a href="http://cvs.pulsar-zone.net/cgi-bin/cvsweb.cgi/~checkout~/mmondor/mmsoftware/cl/test/symbol-game3.lisp?rev=1.17;content-type=text%2Fplain">
+        symbol-game3.lisp source code</a>
+   <li><a href="telnet://ginseng.pulsar-zone.net:7777/">play it via telnet :)</a>
+  </ul>
+
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: mmsoftware.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/news.html b/site/ng/news.html
new file mode 100644 (file)
index 0000000..e293a3d
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - News</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - News</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h3>News</h3>
+  <p>
+   No news for now.
+  </p>
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: news.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/repository.html b/site/ng/repository.html
new file mode 100644 (file)
index 0000000..b33d0fd
--- /dev/null
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Repository</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Repository</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h2>Public pserver CVS repository access</h2>
+  <h3>MMSoftware</h3>
+<pre>
+Checkout:
+ $ cvs -z3 -d:pserver:anoncvs@cvs.pulsar-zone.net:/cvsroot co mmondor
+
+Update:
+ $ cd mmondor
+ $ cvs -z3 -d:pserver:anoncvs@cvs.pulsar-zone.net:/cvsroot update -dPA
+</pre>
+ <h3>Rubiks network related software</h3>
+<pre>
+Checkout:
+ $ cvs -z3 -d:pserver:anoncvs@cvs.pulsar-zone.net:/cvsroot co rubiks
+
+Update:
+ $ cd rubiks
+ $ cvs -z3 -d:pserver:anoncvs@cvs.pulsar-zone.net:/cvsroot update -dPA
+</pre>
+ <h2>HTTP frontend to the repository</h2>
+ <a href="http://cvs.pulsar-zone.net/">http://cvs.pulsar-zone.net/</a>
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: repository.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>
diff --git a/site/ng/software.html b/site/ng/software.html
new file mode 100644 (file)
index 0000000..47dea6b
--- /dev/null
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd">
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>MMSoftware - Software I Enjoy</title>
+<link rel="stylesheet" href="/css/mmsoftware.css">
+<link rel="shortcut icon" href="/images/mmsoftware.ico">
+</head>
+<body>
+
+<div id="container">
+ <div id="top">
+  <table width="100%">
+   <tr>
+    <td width="155" align="center">
+     <img src="/images/key-small.jpg" alt="image">
+    </td>
+    <td align="left" valign="middle">
+     <h1>MMSoftware - Software I Enjoy</h1>
+    </td>
+    <td width="320" align="right">
+     <img src="/images/sigil-header.jpg" alt="image">
+    </td>
+   </tr>
+  </table>
+ </div>
+
+ <div id="leftnav">
+  <h4>Main</h4>
+  <dl>
+   <dt><a href="index.html">Main page</a>
+  </dl>
+  <h4>MMSoftware</h4>
+  <dl>
+   <dt><a href="news.html">News</a>
+   <dt><a href="mmsoftware.html">Software</a>
+   <dt><a href="documentation.html">Documentation</a>
+   <dt><a href="repository.html">CVS Repository</a>
+  </dl>
+  <h4>Various</h4>
+  <dl>
+   <dt><a href="/img_gallery/index.html">Image Gallery</a>
+   <dt><a href="contact.html">Contact Me</a>
+  </dl>
+  <h4>Links</h4>
+  <dl>
+   <dt><a href="software.html">Software I Enjoy</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/mmmail/">MMMail</a>
+   <dt><a href="https://ginseng.pulsar-zone.net/bookmarks/">MMBookmark</a>
+  </dl>
+ </div>
+
+ <div id="content">
+  <h2>Third party software I enjoy</h2>
+  <h3>Operating System</h3>
+  <ul>
+   <li><a href="http://www.netbsd.org/">NetBSD</a>
+    An integrated, secure, high-performance, portable, mostly BSD-licensed
+    Operating System descendant of the 4.4BSD unix family
+  </ul>
+  <h3>Networking</h3>
+  <ul>
+   <li><a href="http://www.apache.org/">Apache</a>
+    The most widely used HTTP server
+   <li><a href="http://nginx.org/">nginx</a>
+    Very efficient frontend HTTP server
+   <li><a href="http://www.isc.org/index.pl?/sw/bind/">BIND</a>
+    (Berkeley Internet Name Domain) DNS server
+   <li><a href="http://www.openssh.org/">OpenSSH</a>
+    BSD-licensed implementation of Secure Shell
+   <li><a href="http://www.openssl.org/">OpenSSL</a>
+    BSD-style licensed implementation of many encryption protocols, an
+    excellent C library, including a command-line utility
+   <li><a href="http://www.mutt.org/">Mutt</a>
+    Text email client
+   <li><a href="http://www.claws-mail.org/">Claws-Mail</a>
+    GTK modular email client
+   <li><a href="http://www.squid-cache.org/">Squid</a>
+    A cacheing HTTP proxy server
+   <li><a href="http://www.privoxy.org/">Privoxy</a>
+    A powerful filtering HTTP proxy server to enhance your network security
+    and reduce loading times, by eliminating ads and web bugs and optionally
+    spoofing HTTP-Referer and/or User-Agent
+   <li><a href="http://lftp.yar.ru/">LFtp</a>
+    Powerful command-line FTP+SSH client
+   <li><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>
+    For those times when you need to use the cursed OS of a taboo vendor
+    and need a good SSH client and terminal emulator
+  </ul>
+  <h3>HTTP</h3>
+  <ul>
+   <li><a href="http://www.dillo.org/">Dillo</a>
+    A very lightweight graphical HTTP client with good security features
+    and defaults
+   <li><a href="http://lynx.isc.org/">Lynx</a>
+    A lightweight text HTTP client
+   <li><a href="http://www.firefox.com/">Mozilla Firefox</a>
+    A full (too) featured graphical HTTP client
+   <li><a href="http://noscript.net/">NoScript</a>
+    A very useful plugin to enhance Firefox security
+   <li><a href="http://adblockplus.org/en/">AdBlock Plus</a>
+    A very useful plugin to make using Firefox less annoying
+   <li><a href="http://www.gnu.org/software/wget/">GNU WGet</a>
+    Powerful command-line HTTP/FTP client
+  </ul>
+  <h3>Editors and IDEs</h3>
+  <ul>
+   <li><a href="http://www.vim.org/">ViM</a>
+    (Vi iMproved) a powerful programmer's editor
+   <li><a href="http://www.gnu.org/software/emacs/">GNU Emacs</a>
+    An <code>OS^H^Hintegrated</code> development environment and editor
+   <li><a href="http://common-lisp.net/project/slime/">SLIME</a>
+    A Lisp IDE for Emacs
+  </ul>
+  <h3>Database</h3>
+  <ul>
+   <li><a href="http://www.postgresql.org/">PostgreSQL</a>
+    A powerful and efficient ORDBMS (Object-Relational Database Management
+    System) with SQL support, released under BSD license.
+   <li><a href="www.oracle.com/technology/.../berkeley-db/index.html">Berkeley
+   DB</a> Berkeley Database, easily embeddable in software
+   <li><a href="http://www.sqlite.org/">SQLite</a>
+    BSD-licensed easily embeddable database library with SQL interface
+  </ul>
+  <h3>Language Implementations</h3>
+  <ul>
+   <li><a href="http://gcc.gnu.org/">GNU GCC</a>
+    Part of an excellent portable C toolchain, along with binutils
+   <li><a href="http://ecls.sourceforge.net/">Embeddable Common Lisp</a>
+    ECL is a Common Lisp implementation which compiles to C
+   <li><a href="http://sbcl.sourceforge.net/">SBCL</a>
+    Steel Bank Common Lisp, a high-performance implementation of Common Lisp
+   <li><a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a>
+    The Mozilla JavaScript engine, easily embeddable into C projects
+  </ul>
+  <h3>Multimedia</h3>
+  <ul>
+   <li><a href="http://clive.sourceforge.net/">CLive</a>
+    A command-line video extraction/downloading utility to save your time
+    and help processor longevity, avoiding bloated Flash video players
+   <li><a href="http://www.ffmpeg.org/">FFmpeg</a>
+    Library and command line utility to handle video, audio and codecs
+   <li><a href="http://www.mplayerhq.hu/">mplayer and mencoder</a>
+    Multimedia player, encoder and transcoder also making use of ffmpeg
+   <li><a href="http://www.libsdl.org/">Simple Direct media Layer</a>
+    Portable graphics and sound libraries (with friend libraries)
+  </ul>
+  <h3>Miscellaneous</h3>
+  <ul>
+   <li><a href="http://www.cvshome.org/">CVS</a>
+    Concurrent Versions System
+   <li><a href="http://fluxbox.org/">Fluxbox</a>
+    Light and themable, configurable window manager for X11
+   <li><a href="http://en.wikipedia.org/wiki/X_Window_System">X Window System</a>
+    X.Org and XFree86 are implementations of X11
+   <li><a href="http://software.schmorp.de/pkg/rxvt-unicode.html">urxvt</a>
+    A lightweight X11 terminal emulator based on rxvt with unicode and
+    pseudo-translucency support
+   <li><a href="http://www.gnu.org/software/screen/">GNU Screen</a>
+    An extremely useful terminal multiplexer with detach support
+   <li><a href="http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html">GKrellM</a>
+    A nice GTK themable monitoring application with optional modules
+  </ul>
+ </div>
+
+ <div id="footer">
+  Copyright © 2010, Matthew Mondor, ALL RIGHTS RESERVED.<br>
+  <code>$Id: software.html,v 1.1 2010/07/24 04:53:38 mmondor Exp $</code>
+ </div>
+</div>
+
+</body></html>