1<!DOCTYPE html>
   2<html lang="en-US">  <!-- Set language of this page to USA English. -->
   3
   4    <!-- ===========================================================================================
   5    |
   6    | NAME
   7    |
   8    |     webDesign.html
   9    |
  10    | DESCRIPTION
  11    |
  12    |     Examples of my web page design.
  13    |     It is a hand-crafted HTML 5 W3C validated document.
  14    |
  15    | AUTHOR
  16    |
  17    |    Sean Erik O'Connor
  18    |
  19    ============================================================================================ -->
  20
  21    <head>
  22        <!-- This page uses Unicode characters. -->
  23        <meta charset="utf-8">
  24
  25        <!-- Set viewport to actual device width.  Any other settings makes the web page initially appear zoomed-in on mobile devices. -->
  26        <meta name="viewport" content="width=device-width, initial-scale=1">
  27
  28        <!-- Titles appear in the web browser and the browser's bookmarks. -->
  29        <title>DESIGN OF MY WEB PAGE</title>
  30
  31        <!-- Search engines will show this description below the title. -->
  32        <meta name="description" content="Examples of HTML, CSS, Javascript used in my web page design." >
  33
  34        <meta name="author" content="Sean Erik O'Connor" >
  35
  36        <meta name="copyright" content="Copyright (C) 1999-2024 by Sean Erik O'Connor.  All Rights Reserved.">
  37
  38        <!-- Configure and load MathJax -->
  39        <script src="../Scripts/load-mathjax.js" async></script>
  40
  41        <!-- Cascading style sheet for this document. -->
  42        <link rel="stylesheet" href="../StyleSheet.css" type="text/css">
  43
  44        <!-- Favicons are 32x32 or 16x16, 8 or 24 bit PNG Images which show up left of the web page title in a browser.  -->
  45        <link rel="icon" type="image/png" href="../Images/favicon.png">
  46
  47        <!-- Javascript email utility.  -->
  48        <script src="../Scripts/email.js"></script>
  49    </head>
  50
  51    <body class="technicalReport">
  52
  53        <!-- This wraps the whole body in a CSS grid. -->
  54        <div class="wrapper technicalReport">
  55
  56            <!-- Title page at the top.  -->
  57            <header class="title">
  58                <h1 class="stylish">Web Page Design Examples</h1>
  59                <hr>
  60            </header>
  61
  62            <!-- Horizontal navigation bar to all top level pages. -->
  63            <header class="navigation">
  64                <a href="../index.html">
  65                    <img src="../Images/home.png" alt="Home Page Button." width="32" height="32" >
  66                     <em>Home</em>
  67                 </a>
  68
  69                 <a href="../Mathematics/mathematicalSoftware.html">
  70                     <img src="../Images/compactDisk.png" alt="Mathematical Software Button." width="32" height="32" >
  71                      <em>Mathematical Software</em>
  72                 </a>
  73
  74                 <a href="../Art/Art.html">
  75                     <img src="../Images/sampleArtLowRes.png" alt="Art Button." width="32" height="32" >
  76                      <em>Fine Arts</em>
  77                 </a>
  78
  79                 <a href="webPageDesign.html">
  80                     <img src="../Images/home.png" alt="Web Design Button." width="32" height="32" >
  81                      <em>Web Page Design</em>
  82                 </a>
  83
  84                 <a href="../Electronics/Electronics.html">
  85                     <img src="../Images/sparkCoil.png" alt="Hobby Electronics Button." width="32" height="32" >
  86                      <em>Hobby Electronics</em>
  87                 </a>
  88
  89                 <a href="../ReadingList/readingList.html">
  90                      <img src="../Images/terraApollo17NASALowRes.png" alt="Reading List Button." width="32" height="32">
  91                      <em>Reading list</em>
  92                </a>
  93            </header>
  94
  95            <!-- A decorative border at the left side of the page. -->
  96            <aside class=border>
  97                  <img class="border" src="../Images/sinXYPlot.png" alt="Sin( x y ) Image Border.">
  98            </aside>
  99
 100            <!-- Table of contents in a navigation side bar using local hyperlinks within the page to each section. -->
 101            <nav>
 102                <ul>
 103                    <li><a href="#Introduction">Introduction</a></li>
 104                    <li><a href="#ContentAndGraphicDesign">Content And Graphic Design</a></li>
 105                    <li><a href="#DirectoryStructure">Directory Structure</a></li>
 106                    <li><a href="#Hypertext">Hypertext</a></li>
 107                    <li><a href="#Javascript">Javascript</a></li>
 108                    <li><a href="#StyleSheets">StyleSheets</a></li>
 109                    <li><a href="#ServerSide">Server Side</a></li>
 110                    <li><a href="#Basics">Basics</a></li>
 111                    <li><a href="#Headers">Headers</a></li>
 112                    <li><a href="#Email">email</a></li>
 113                    <li><a href="#Navigation">Navigation</a></li>
 114                    <li><a href="#Hyperlinks">Hyperlinks</a></li>
 115                    <li><a href="#InlineStyles">Inline Styles</a></li>
 116                    <li><a href="#ParagraphStyles">Paragraph Styles</a></li>
 117                    <li><a href="#Lists">Lists</a></li>
 118                    <li><a href="#Scrollbox">Scroll Box</a></li>
 119                    <li><a href="#Images">Images</a></li>
 120                    <li><a href="#Tables">Tables</a></li>
 121                    <li><a href="#Tooltips">Tooltips</a></li>
 122                    <li><a href="#Gallery">Gallery</a></li>
 123                    <li><a href="#Movies">Movies</a></li>
 124                    <li><a href="#Forms">Forms</a></li>
 125                    <li><a href="#SVG">SVG</a></li>
 126                    <li><a href="#Canvas">Canvas</a></li>
 127                    <li><a href="#GoogleSearch">Google Search</a></li>
 128                    <li><a href="#TypesettingMathematics">Typesetting Mathematics</a></li>
 129                    <li><a href="#Maintainance">Maintainance</a></li>
 130                    <li><a href="#DevelopmentEnvironment">Development Environment</a></li>
 131                    <li><a href="#Hosting">Hosting</a></li>
 132                    <li><a href="#Viewing">Viewing</a></li>
 133                    <li><a href="#GettingListed">Getting Listed</a></li>
 134                    <li><a href="#Communicating">Communicating</a></li>
 135                </ul>
 136            </nav>
 137
 138            <!-- The main content of this page. -->
 139            <article id="TopOfPage" class="content">
 140                <h2 style="display: none ;">&nbsp;</h2> <!-- Keep the W3C HTML syntax police from arresting this article with a dummy heading. -->
 141
 142                <section>
 143                    <h3 id="Introduction">Introduction</h3>
 144
 145                    <p>
 146                        I explain all the steps involved in creating, designing, hosting and maintaining my web pages.
 147                    </p>
 148                </section>
 149
 150                <section>
 151                    <h3 id="ContentAndGraphicDesign">Content and Graphic Design</h3>
 152
 153                    <p>
 154                        <strong>Content</strong> is the most important, but your web page should be pleasant to read.  
 155                        I use the design advice in
 156                        <a href="https://www.learningwebdesign.com/">
 157                        Learning Web Design, 4th Edition, A Beginner's Guide to HTML, CSS, JavaScript,
 158                        and Web Graphics by Jennifer Niederst Robbins</a>
 159                    </p>
 160
 161                    <p>
 162                    <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design">Responsive Web Design</a>
 163                    is a collection of fluid techniques which make web pages look good on both mobile or laptop screens.
 164                    CSS tools such as <a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/">flexboxes</a> and
 165                    <a href="https://css-tricks.com/snippets/css/complete-guide-grid/">grids</a> are a big part of fluid positioning.
 166                    Web browsers have built-in developer tools which simulate different mobile and laptop screens.
 167                    </p>
 168
 169                    <p>
 170                    I've used Mathematica to create <a href="../Images/WebSiteBackgroundPictures.nb.pdf">graphic designs</a> 
 171                    for my web pages and business cards.
 172                    </p>
 173                </section>
 174
 175                <section>
 176                    <h3 id="DirectoryStructure">Directory Structure</h3>
 177
 178                    <p>
 179                    The main web page <em>index.html</em> goes in the top level directory.
 180                    All other items are sorted into subdirectories.  
 181                    For example, images go into directories named <em>/Images</em>.  Image files are of type .png or .jpg.
 182                    </p>
 183                </section>
 184
 185                <section>
 186                    <h3 id="Hypertext">Hypertext</h3>
 187
 188                    <p>
 189                        Web pages are written in
 190                        <a href="https://www.w3.org/TR/html/">HTML 5</a>
 191                        using guidance from the book 
 192                            <a href="https://diveinto.html5doctor.com/">Diving into HTML 5</a>
 193                        with occasional use of 
 194                            <a href="http://www.unicode.org/charts/">unicode</a>
 195                        I edit pages with the
 196                            <a href="http://www.vim.org">Vim</a>
 197                        text editor for which I've written simple vim scripts to help edit html and css.
 198                        I do a final check on each html file using 
 199                            <a href="http://validator.w3.org">validate</a>
 200                        from 
 201                            <a href="http://www.w3.org">W3C</a>'s service.
 202                    </p>
 203                </section>
 204
 205                <section>
 206                    <h3 id="Javascript">Javascript</h3>
 207
 208                    <p> 
 209                        I use <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">Javascript</a> in my web pages.
 210                        The Javascript language has no classes, inheritance, constructors or instances;
 211                        there are only objects and delegation along the prototype chain.  
 212                        The commonly used <i>constructor function + new pattern</i> is very misleading and unnecessarily complex.
 213                        So forget classes+instances and read about
 214                        <a href="https://alistapart.com/article/prototypal-object-oriented-programming-using-javascript/">prototypal object oriented programming</a> 
 215                        and 
 216                        <a href="https://www.toptal.com/javascript/javascript-prototypes-scopes-and-performance-what-you-need-to-know">prototypes and performance</a> for an introduction.
 217                        Then read this series of books which explain 
 218                        <a href="https://github.com/getify/You-Dont-Know-JS">basic JS concepts</a>.
 219                        Many textbooks like the excellent 
 220                        <a href="http://eloquentjavascript.net">Eloquent JavaScript</a>.
 221                        use the syntactic sugar which makes JS appear to be an OO language like C++ when itst core behavior is very different.
 222                    </p>
 223                </section>
 224
 225                <section>
 226                    <h3 id="StyleSheets">Style Sheets</h3>
 227
 228                    <p>
 229                        My documents use 
 230                        <a href="https://www.w3.org/Style/CSS/">CSS level 3 + SVG style sheets</a>.
 231                        I have one CSS
 232                            <a href="../StyleSheet.css.html">style sheet</a>
 233                        for all my documents, which I
 234                        <a href="http://jigsaw.w3.org/css-validator/">validate</a>.
 235                        you can see an example of using styles in my HTML file
 236                            <a href="webPageDesign.html.html">webPageDesign.html</a>
 237                    </p>
 238                    <p>
 239                        You can use Firefox's web developer tools 
 240                        <em class="hotkey">Tools &#10148; Browser Tools &#10148; Web Developer Tools &#10148; Inspector</em>
 241                        to debug your CSS stylesheet.  You can point to HTML elements and see which style get inherited from which selectors.
 242                    </p>
 243                    <img class="centeredsmaller" src="Images/StyleSheetDebuggerFirefox.jpg" alt="Firefox web developer tools.">
 244
 245                </section>
 246
 247                <section>
 248                    <h3 id="ServerSide">Server Side</h3>
 249
 250                    <p>
 251                        My server uses <em>Apache</em>.  Here are some server side fixups and optimizations 
 252                        which go into the 
 253                            <a href="http://httpd.apache.org/docs/current/howto/htaccess.html">.htaccess</a>.
 254                        file which in the top level directory of the web site.
 255                    </p>
 256
 257                    <ol>
 258                        <li>
 259                            Specify a <a href="../error404.html">personal error 404 page</a> for broken links and
 260                            <a href="http://nosuchpage.html">test it out here</a>
 261                        </li>
 262
 263                        <li>
 264                            My host's Apache web server didn't recognize the C language header .h and Mathematica .nb 
 265                            file file types and was not allowing access to the files.
 266                            So I added the file extension type into my top-level .htaccess file on the server,
 267                        </li>
 268
 269                        <li>
 270                            Server compresses web file types before sending.
 271                            The client side browsers will decompress it.
 272                        </li>
 273
 274                        <li>
 275                            Server tells browsers to cache files locally for faster page loading.
 276                        </li>
 277                    </ol>
 278
 279                    <p>
 280                    I use FileZilla ftp to manually upload the .htaccess file.  I upload all rest of the files with my
 281                    Python script <a href="#Maintainance">updateweb.py</a>  And here are some additional 
 282                    <a href="FreeserversFixes.pdf">Tips and Tricks</a> for my server.
 283                    </p>
 284
 285                    <div class="scrollBox"> <div class="scrollBoxContent">
 286                        # BEGIN ERROR DOCUMENT
 287                        # Personalized error document for broken links.
 288                        # See https://httpd.apache.org/docs/2.4/custom-error.html
 289                        ErrorDocument 404 /error404.html
 290                        # END ERROR DOCUMENT
 291
 292                        # BEGIN ADD MIME TYPE FOR FILES
 293                        # Tell the server to support a particular MIME type.
 294                        # See https://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
 295                        &amp;lt;FilesMatch "\.(h)$"&amp;gt;
 296                        &amp;lt;IfModule mod_headers.c&amp;gt;
 297                        Header set Access-Control-Allow-Origin "*"
 298                        &amp;lt;IfModule&amp;gt;
 299                        &amp;lt;FilesMatch&amp;gt;
 300                        AddType text/plain h
 301                        AddType text/plain nb
 302                        Addtype text/plain for
 303                        Addtype text/plain FOR
 304                        # END ADD MIME TYPE FOR FILES
 305
 306                        # BEGIN DEFLATE COMPRESSION
 307                        # Server will compress these MIME file types.  Browser will decompress.
 308                        # See http://httpd.apache.org/docs/current/mod/mod_deflate.html
 309                        &amp;lt;ifmodule mod_deflate.c&amp;gt;
 310                        AddOutputFilterByType DEFLATE text/text text/html text/plain 
 311                        text/xml text/css application/x-javascript application/javascript
 312                        &amp;lt;ifmodule&amp;gt;
 313                        # END DEFLATE COMPRESSION
 314
 315                        ## BEGIN BROWSER CACHING
 316                        # Ask the user's browser to cache certain file types for a limited time after 
 317                        # the first web page visit.  The server can then avoid resending them and page
 318                        # loads will be faster.  After the expiration time, files will be sent again.
 319                        # See http://httpd.apache.org/docs/current/mod/mod_expires.html
 320                        &amp;lt;IfModule mod_expires.c&amp;gt;
 321                        ExpiresActive On
 322                        ExpiresByType image/jpg "access plus 1 day"
 323                        ExpiresByType image/jpeg "access plus 1 day"
 324                        ExpiresByType image/gif "access plus 1 week"
 325                        ExpiresByType image/png "access plus 1 day"
 326                        ExpiresByType text/css "access plus 1 week"
 327                        ExpiresByType application/pdf "access plus 1 week"
 328                        ExpiresByType text/x-javascript "access plus 1 day"
 329                        ExpiresByType application/x-shockwave-flash "access plus 1 month"
 330                        ExpiresByType image/x-icon "access plus 1 week"
 331                        ExpiresDefault "access plus 2 days"
 332                        &lt;IfModule&gt;
 333                        ## END BROWSER CACHING
 334                    </div> </div>
 335                </section>
 336
 337                <section>
 338                    <h3 id="Basics">Basics</h3>
 339
 340                    <p>
 341                    You can't see the paragraph's margins, since they are transparent, but the top margin is from the bottom of this line 
 342                    to the paragraph's dashed border below.  
 343                    And the paragraph's left margin is from edge of page (the body) to the paragraph's left dashed border.
 344                    </p>
 345            
 346                    <p class="example">
 347                    This is a paragraph illlustrating contents, padding, border and margin.  Contents is white text with a blue
 348                    background.  Padding surrounds the contents and is the same color as the background.  
 349                    Padding extends into the light red dashed border by default.
 350                    Margin surrounds the border and is transparent.
 351                    I've turned on outlining (green dotted line) to show where the border ends and the margin begins.
 352                    </p>
 353
 354                    <p class="example" style="background-clip: padding-box;">
 355                    But now I've added the <small>CSS style modifier &lt;p class="example" style="background-clip: padding-box;"&gt;</small>A
 356                    which makes the padding stop short of the border.  The margin surrounds the border and is transparent.
 357                    </p>
 358
 359                </section>
 360
 361                <section>
 362                    <h3 id="Headers">Headers</h3>
 363                    
 364                    <!-- For illustration only.  HTML checkers will bark about placing a heading out of order -->
 365                    <h1 class="stylish">&lt;h1 class=&quot;stylish&quot;&gt;Stylish Header&lt;/h1&gt;</h1>
 366
 367                    <h2>&lt;h2&gt;h2 header&lt;/h2&gt;</h2>
 368                    <h3>&lt;h3&gt;h3 header&lt;/h3&gt;</h3>
 369                    <h4>&lt;h4&gt;h4 header&lt;/h4&gt;</h4>
 370                    <h5>&lt;h5&gt;h5 header&lt;/h5&gt;</h5>
 371                    <h6>&lt;h6&gt;h6 header&lt;/h6&gt;</h6>
 372                </section>
 373
 374                <section>
 375                    <h3 id="Email">Email</h3>
 376
 377                    This is an email header:
 378
 379                    <h2 class="email">
 380                        <!-- Javascript for hiding my email address from spambots yet it works as usual. -->
 381                        <script>
 382                            <!--
 383                            // Insert email address into this file's HTML.
 384                            var mailMessage = '<em>' + "email" + '</em>' ;
 385                            document.write( mailto( mailMessage ) ) ;
 386                            // -->
 387                        </script> 
 388                        me if you have questions or comments.
 389                    </h2>
 390
 391                    produced with this code in the head:
 392
 393                    <div class="scrollBox"> <div class="scrollBoxContent">
 394                        &lt;!-- Javascript email utility --&gt;
 395                        &lt;script src="../Scripts/email.js"&lt;&gt;/script&gt;
 396                    </div> </div>
 397
 398                    and this code in the body:
 399                    
 400                    <div class="scrollBox"> <div class="scrollBoxContent">
 401                        &lt;!-- Javascript for hiding my email address from spambots yet it works as usual. --&gt;
 402                        &lt;script&gt;
 403                        &lt;!--
 404                        // Insert email address into this file's HTML.
 405                        var mailMessage = '&lt;em&gt;' + "email" + '&lt;/em&gt;' ;
 406                        document.write( mailto( mailMessage ) ) ;
 407                        // --&gt;
 408                        &lt;/script&gt; 
 409                        me if you have questions or comments.
 410                    </div> </div>
 411                </section>
 412                
 413                <section>
 414                   <h3 id="Navigation">Navigation</h3>
 415                  
 416                   The navigation sidebar on the left was produced with this code:
 417
 418                   <div class="scrollBox"> <div class="scrollBoxContent">
 419                       &lt;nav&gt;
 420                       &lt;ul&gt;
 421                       &lt;li&gt; List item &lt;/li&gt;
 422                       ...
 423                       &lt;li&gt; List item &lt;/li&gt;
 424                       &lt;/ul&gt;
 425                       &lt;/nav&gt;
 426                   </div> </div>
 427
 428                A special "back to top" navigation button
 429
 430                <nav class="backtotop"><a href="#TopOfPage">Back to top</a></nav>
 431
 432                Used this way with a link:
 433
 434                <div class="scrollBox"> <div class="scrollBoxContent">
 435                 &lt;article id="TopOfPage" class="content"&gt;
 436                ...
 437                &lt;nav class="backtotop"&gt; &lt;a href="#TopOfPage"&gt;Back to top&lt;/a&lt;&gt;&lt;/nav&gt;
 438                </div></div>
 439                </section>
 440
 441                <section>
 442                    <h3 id="Hyperlinks">Hyperlinks</h3>
 443
 444                    <ul>
 445                        <li>
 446                        <a href="webPageDesign.html" title="I am the tooltip text!">Hyperlink to this page itself.</a>
 447                        Hover over the link to see the tooltip! 
 448                        </li>
 449                    </ul>
 450
 451                    <img class="centeredsmallest" src="Images/htmlToolTip.jpg" alt="Tooltip image.">
 452
 453                    <div class="scrollBox"> <div class="scrollBoxContent">
 454                        &lt;ul&gt;
 455                        &lt;li&gt;
 456                        &lt;a href="webDesign.html" title="I am the tooltip text!"&gt;Hyperlink to this page itself.&lt;a&gt;
 457                        Hover over the link to see the tooltip!
 458                        &lt;/li&gt;
 459                        &lt;/ul&gt;
 460                    </div> </div>
 461
 462                    <p class="box">
 463                    Note that tooltips only work on devices which support hover, e.g. computers with mouse, stylus or trackpad.  
 464                    They are not supported on mobile devices right now.
 465                    </p>
 466
 467                </section>
 468
 469                <section>
 470                    <h3 id="InlineStyles">Inline Styles</h3>
 471
 472                    <h4>Fonts and Font Styles</h4>
 473
 474                        <p>
 475                        <span style="font-size: 1.8rem; font-family: var(--serif);"> serif</span> &blacklozenge;
 476                        <span style="font-size: 1.5rem; font-family: var(--san-serif);"> san-serif</span> &blacklozenge;
 477                        <span style="font-size: 1.7rem; font-family: var(--monospace);"> monospace</span> &blacklozenge;
 478                        <span style="font-size: 2.1rem; font-family: var(--cursive);"> cursive</span> &blacklozenge;
 479                        <span style="font-size: 1.5rem; font-family: var(--fantasy);"> fantasy</span>
 480                        </p>
 481
 482                        <p>
 483                        <i>
 484                            &lt;i&gt; italic text &lt;/i&gt;
 485                        </i> 
 486                        <br>
 487
 488                        <strong>
 489                            &lt;strong&gt; strong text &lt;/strong&gt;
 490                        </strong>
 491                        <br>
 492
 493                        <small>
 494                            &lt;small&gt; small text &lt;/small&gt;
 495                        </small>
 496                        <br>
 497
 498                        <mark>
 499                            &lt;mark&gt; colored marker &lt;/mark&gt;
 500                        </mark>
 501                        <br>
 502
 503                        <s>
 504                         &lt;s&gt;strike out &lt;/s&gt;
 505                        </s>
 506                        </p>
 507
 508                        <p>
 509                        <a href="https://www.compart.com/en/unicode/html">HTML Entities</a> 
 510                        For example, 
 511                        <span style="font-size: 3rem;"> &ContourIntegral; </span>
 512                        <span style="font-size: 2rem;"> &infin; </span> 
 513                        <span style="font-size: 2rem;"> &ctdot; </span>
 514                        whose size is controlled like any font.
 515                        </p>
 516
 517                        <div class="scrollBoxSmall"> <div class="scrollBoxContent">
 518                        &lt;span style="font-size: 2rem;"&gt; &amp;ContourIntegral; &lt;/span&gt;
 519                        &lt;span style="font-size: 2rem;"&gt; &amp;infin; &lt;/span&gt;
 520                        &lt;span style="font-size: 2rem;"&gt; &amp;ctdot; &lt;/span&gt;
 521                        </div></div>
 522
 523                    <h4>Emphasized Text</h4>
 524
 525                        <em>
 526                            &lt;em&gt; emphasized text &lt;/em&gt;
 527                        </em> 
 528                        <br>
 529
 530                        <em class="warning">
 531                            &lt;em class="warning"&gt; warning &lt;/em&gt;
 532                        </em> 
 533                        <br>
 534
 535                        <em class="caution">
 536                            &lt;em class="caution"&gt; caution &lt;/em&gt;
 537                        </em> 
 538                        <br>
 539
 540                        <h3>&lt;h3&gt;h3 header&lt;/h3&gt; <em class="warning">&lt;em class="warning"&gt;emphasized text in header&lt;/em&gt;</em></h3>
 541                        <h3>&lt;h3&gt;h3 header&lt;/h3&gt; <em class="caution">&lt;em class="caution"&gt;emphasized text in header&lt;/em&gt;</em></h3>
 542
 543                        <em class="wavy">
 544                            &lt;em class="wavy"&gt; Wiggle Wiggle &lt;/em&gt;
 545                        </em>
 546                        <br>
 547                        <br>
 548
 549                        <em class="hotkey">
 550                            &lt;em class="hotkey"&gt; Blender hot key &lt;/em&gt;
 551                        </em> 
 552                        <br>
 553
 554                    <h4>Pseudocode</h4>
 555
 556                        <code>
 557                            pseudocode <em>code comment</em>
 558                            <i>indented once</i> 
 559                            <i><i>indented twice</i></i>
 560                            <i><i><i>indented thrice</i></i></i> <em>That's all the indents</em>
 561                        </code> 
 562
 563                        <div class="scrollBoxMedium"> <div class="scrollBoxContent">
 564                        &lt;code&gt;
 565                        source code &lt;em&gt; Code Comment &lt;/em&gt; &lt;em&gt;
 566                        &lt;i&gt;indented once&lt;/i&gt;
 567                        &lt;i&gt;&lt;i&gt;indented twice&lt;/i&gt;&lt;/i&gt;
 568                        &lt;i&gt;&lt;i&gt;&lt;i&gt;indented thrice&lt;/i&gt;&lt;/i&gt;&lt;/i&gt;
 569                        &lt;/code&gt;
 570                        </div></div>
 571
 572                    <h4>Colors</h4>
 573                       <p>
 574                       <span style="color: white; background-color: var(--kweilin-black);">--kweilin-black</span>
 575                       <br>
 576                       <span style="color: white; background-color: var(--warm-brown);">--warm-brown</span>
 577                       <span style="color: white; background-color: var(--dark-brown);">--dark-brown</span>
 578                       <br>
 579                       <span style="color: white; background-color: var(--canvas-gray);">--canvas-gray</span>
 580                       <span style="color: black; background-color: var(--light-gray);">--light-gray</span>
 581                       <span style="color: black; background-color: var(--dark-blue-gray);">--dark-blue-gray</span>
 582                       <span style="color: black; background-color: var(--light-blue-gray);">--light-blue-gray</span>
 583                       <span style="color: white; background-color: var(--art-gallery-blue-gray);">--art-gallery-blue-gray</span>
 584                       <br>
 585                       <span style="color: black; background-color: var(--light-yellow-tint);">--light-yellow-tint</span>
 586                       <br>
 587                       <span style="color: black; background-color: var(--light-red);">--light-red</span>
 588                       <br>
 589                       <span style="color: white; background-color: var(--art-gallery-blue);">--art-gallery-blue</span>
 590                       <span style="color: white; background-color: var(--light-blue);">--light-blue</span>
 591                       <span style="color: white; background-color: var(--dark-blue);">--dark-blue</span>
 592                       <span style="color: black; background-color: var(--cyan-tint);">--cyan-tint</span>
 593                       <span style="color: black; background-color: var(--light-blue-tint);">--light-blue-tint</span>
 594                       <span style="color: black; background-color: var(--very-light-blue);">--very-light-blue</span>
 595                       <br>
 596                       <span style="color: black; background-color: var(--light-blue-background);">--light-blue-background</span>
 597                       <span style="color: black; background-color: var(--lighter-blue-background);">--lighter-blue-background</span>
 598                       <span style="color: black; background-color: var(--light-blue-paper);">--light-blue-paper</span>
 599                       <span style="color: black; background-color: var(--light-blue-body-background);">--light-blue-body-background</span>
 600                       <p>
 601
 602                       <div class="scrollBoxTiny"> <div class="scrollBoxContent">
 603                           &lt;span style="color: white; background-color: var(--warm-brown);"&gt;warm-brown&lt;span&gt; . . . and so on . . .
 604                       </div></div>
 605                        
 606                </section>
 607
 608                <section>
 609                    <h3 id="ParagraphStyles">Paragraph Styles</h3>
 610
 611                    <h4>Illustrated Paragraph</h4>
 612
 613                    <div class="illustratedparagraph">
 614                        <p>
 615                            <a href="webPageDesign.html">
 616                                <img src="../Images/home.png" alt="Image of home." height="100" width="100" >
 617                                <em>illustrated paragraph</em>
 618                            </a>
 619                            with a hyperlinked image and text plus extra paragraph filler.
 620                            This image icon floats left within a paragraph as shown here.
 621                            “Our ignorance can be divided into problems and mysteries. 
 622                            When we face a problem, we may not know its solution, but we have insight, 
 623                            increasing knowledge, and an inkling of what we are looking for. When we 
 624                            face a mystery, however, we can only stare in wonder and bewilderment, 
 625                            not knowing what an explanation would even look like.” ― Noam Chomsky
 626                        </p>
 627                    </div>
 628
 629                    <div class="scrollBox"> <div class="scrollBoxContent">
 630                    &lt;div class="illustratedparagraph"&gt;
 631                        &lt;p&gt;
 632                            &lt;a href="hyperlink.html"&gt;
 633                                &lt;img src="../Images/home.png" alt="Image of home." height="64" width="64" /&gt;
 634                                &lt;em&gt;illustrated paragraph&lt;em&gt;&lt;/a&gt;
 635                            with a hyperlinked image
 636                            ...
 637                        &lt;/p&gt;
 638                    &lt;div&gt;
 639                    </div> </div>
 640
 641                    <h4>Spaced out Paragraph</h4>
 642
 643                    <p class="spacedout">
 644                        This paragraph of class "spacedout" has larger font and more vertical space between previous and next 
 645                        paragraphs.  "Solitude is painful when one is young, but delightful when one is more 
 646                        mature."  -Albert Einstein
 647                    </p>
 648
 649                    <div class="scrollBox"> <div class="scrollBoxContent">
 650                        This paragraph of class "spacedout" has larger font and more vertical space 
 651                        between previous and next...
 652                    </div></div>
 653
 654                    <h4>Paragraph with Floating Figure</h4>
 655
 656                    <figure>
 657                        <img src="Images/Yoicks.jpg" alt="Yoicks">
 658                        <img src="Images/CyberPowerPCUbuntuGauss.jpg" alt="CyberPowerPC">
 659                        <figcaption>
 660                            Fig 0.  Example of a figure.
 661                       </figcaption>
 662                    </figure>
 663
 664                    <p>
 665                    The artist is the creator of beautiful things. 
 666                    </p>
 667                     
 668                    <p>
 669                    To reveal art and conceal the artist is art's aim. The critic is he who 
 670                    can translate into another manner or a new material his impression of 
 671                    beautiful things.
 672                    </p>
 673
 674                    <p>
 675                    The highest as the lowest form of criticism is a mode of autobiography. 
 676                    Those who find ugly meanings in beautiful things are corrupt without being charming. This is a fault.
 677                    </p>
 678
 679                    <p>
 680                    Those who find beautiful meanings in beautiful things are the cultivated. For these there is hope. 
 681                    They are the elect to whom beautiful things mean only beauty.
 682                    </p>
 683
 684                    <p>
 685                    There is no such thing as a moral or an immoral book. Books are well written, or badly written. That is all.
 686                    </p>
 687
 688                    <p>
 689                    The nineteenth century dislike of realism is the rage of Caliban seeing his own face in a glass.
 690                    </p>
 691
 692                    <p>
 693                    The nineteenth century dislike of romanticism is the rage of Caliban not seeing his own face in a glass. 
 694                    The moral life of man forms part of the subject-matter of the artist, but the morality of art consists in the 
 695                    perfect use of an imperfect medium.
 696                    </p>
 697
 698                    <p>
 699                    No artist desires to prove anything. Even things that are true can be proved. 
 700                    No artist has ethical sympathies. An ethical sympathy in an artist is an unpardonable mannerism of style. 
 701                    No artist is ever morbid. The artist can express everything.
 702                    </p>
 703
 704                    <p>
 705                    Thought and language are to the artist instruments of an art. Vice and virtue are to the artist materials 
 706                    for an art. From the point of view of form, the type of all the arts is the art of the musician. 
 707                    From the point of view of feeling, the actor's craft is the type. All art is at once surface and symbol. 
 708                    Those who go beneath the surface do so at their peril.
 709                    </p>
 710
 711                    <p>
 712                    Those who read the symbol do so at their peril. It is the spectator, and not life, that art really mirrors. 
 713                    Diversity of opinion about a work of art shows that the work is new, complex, and vital. 
 714                    When critics disagree, the artist is in accord with himself. 
 715                    </p>
 716
 717                    <p>
 718                    We can forgive a man for making a useful thing as long as he does not admire it. 
 719                    The only excuse for making a useless thing is that one admires it intensely.
 720                    </p>
 721
 722                    <p> 
 723                    All art is quite useless.
 724                    </p>
 725
 726                    <i>
 727                    -Oscar Wilde, Preface to The Picture of Dorian Grey.
 728                    </i>
 729
 730                    <div class="scrollBox"> <div class="scrollBoxContent">
 731                        &lt;figure&gt;
 732                                &lt;img src="../Images/mailbox.png" alt="Mail Box Image" &gt;
 733
 734                            &lt;figcaption&gt;
 735                                Fig 0.  Example of a figure.
 736                           &lt;/figcaption&gt;
 737                        &lt;/figure&gt;
 738                    </div> </div>
 739
 740                    <h4>Block quote</h4>
 741
 742                    <blockquote>
 743                        Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly 
 744                        and applying the wrong remedies.
 745                    <cite>Groucho Marx</cite>
 746                    </blockquote>
 747
 748                    <div class="scrollBox"> <div class="scrollBoxContent">
 749                        &lt;blockquote&gt;
 750                        Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly 
 751                        and applying the wrong remedies.
 752                        &lt;cite&gt;Groucho Marx&lt;/cite&gt;
 753                        &lt;/blockquote&gt;
 754                    </div></div>
 755
 756                    <h4>Boxed Paragraph</h4>
 757
 758                    <p class="box">
 759                    "To raise new questions, new possibilities, to regard old problems from a 
 760                    new angle, requires creative imagination and marks real advance in 
 761                    science."  -Albert Einstein
 762                    </p>
 763
 764                    <div class="scrollBox"> <div class="scrollBoxContent">
 765                        &lt;p class="box"&gt;
 766                        "To raise new questions, new possibilities, to regard old problems from a 
 767                        &lt;/p&gt;
 768                    </div> </div>
 769
 770                    <h4>Paragraph with Change Bar</h4>
 771
 772                    <p class="changed">
 773                    “Art is not what you see, but what you make others see.” ― Edgar Degas
 774<br>
 775                    “Art is the only serious thing in the world. And the artist is the only 
 776                    person who is never serious.” ― Oscar Wilde
 777                    </p>
 778
 779                    <div class="scrollBox"> <div class="scrollBoxContent">
 780                        &lt;p class="changed"&gt;
 781                        “Art is not what you see, but what you make others see.” ― Edgar Degas
 782                        &lt;br&gt;
 783                        “Art is the only serious thing in the world. And the artist is the only 
 784                        person who is never serious.” ― Oscar Wilde
 785                        &lt;/p&gt;
 786                    </div> </div>
 787
 788                    <h4>Footnote Paragraph</h4>
 789
 790                    <p class="footnote">
 791                    "We are all in the gutter, but some of us are looking at the 
 792                    stars.” - Oscar Wilde
 793                    </p>
 794
 795                    <div class="scrollBox"> <div class="scrollBoxContent">
 796                        &lt;p class="footnote"&gt;
 797                        "We are all in the gutter, but some of us are looking at the 
 798                        &lt;/p&gt;
 799                    </div> </div>
 800
 801                    <h4>Fine Print Paragraph</h4>
 802
 803                    <p class="fineprint">
 804                    "If people did not sometimes do silly things, nothing intelligent would 
 805                    ever get done."  -Ludwig Wittgenstein
 806                    </p>
 807
 808                    <div class="scrollBox"> <div class="scrollBoxContent">
 809                        &lt;p class="fineprint"&gt;
 810                        "If people did not sometimes do silly things, nothing intelligent would 
 811                        &lt;/p&gt;
 812                    </div> </div>
 813                </section>
 814
 815                <section>
 816                    <h3 id="Lists">Lists</h3>
 817
 818                    <ul>
 819                        <li>Unordered list</li>
 820                        <li>img within a list 
 821                            <img src="../Images/home.png" alt="Home icon." height="16" width="16" >
 822                        </li>
 823                    </ul>
 824
 825                    <div class="scrollBox"> <div class="scrollBoxContent">
 826                        &lt;ul&gt;
 827                        &lt;li&gt;Unordered list&lt;li&gt;
 828                        &lt;li&gt;img within a list 
 829                            &lt;img src="../Images/home.png" alt="Home icon." height="16" width="16" /&gt;
 830                        &lt;li&gt;
 831                        &lt;/ul&gt;
 832                    </div> </div>
 833                    
 834                    <ol>
 835                        <li>Ordered list</li>
 836                        <li>Ordered list</li>
 837                    </ol>
 838
 839                    <div class="scrollBox"> <div class="scrollBoxContent">
 840                         &lt;ol&gt;
 841                        &lt;li&gt;Ordered list&lt;li&gt;
 842                        &lt;li&gt;Ordered list&lt;li&gt;
 843                        &lt;/ol&gt;
 844                    </div> </div>
 845
 846                    <ul class="bullet">
 847                        <li>Unordered list</li>
 848                        <li>Unordered list</li>
 849                        <li>Unordered list</li>
 850                    </ul>
 851
 852                    <ul class="minorBullet">
 853                        <li>Unordered list</li>
 854                        <li>Unordered list</li>
 855                        <li>Unordered list</li>
 856                    </ul>
 857
 858                    <div class="scrollBox"> <div class="scrollBoxContent">
 859                        &lt;ul class="bullet"&gt;
 860                        &lt;li&gt;Unordered list&lt;li&gt;
 861                        &lt;li&gt;Unordered list&lt;li&gt;
 862                        &lt;li&gt;Unordered list&lt;li&gt;
 863                        &lt;/ul&gt;
 864
 865                        &lt;ul class="minorBullet"&gt;
 866                        &lt;li&gt;Unordered list&lt;li&gt;
 867                        &lt;li&gt;Unordered list&lt;li&gt;
 868                        &lt;li&gt;&gt;Unordered list&lt;li&gt;
 869                    &lt;/ul&gt;
 870                    </div> </div>
 871                </section>
 872                
 873                <section>
 874                    <h3 id="Scrollbox">Scroll Box</h3>
 875
 876                    <p>
 877                    We have the classes scrollBox, scrollBoxTiny, scrollBoxSmall, scrollBoxMedium, scrollBoxLarge, scrollBoxHuge.
 878                    The default is scrollBox, which are around 12 em high.  scrollBoxTiny is used for single lines, and scrollBoxHuge
 879                    is used when we want to see most of the text and not have to scroll up and down so much.
 880                    </p>
 881
 882                    <div class="scrollBox"> <div class="scrollBoxContent">
 883                    &lt;div class="scrollBox"&gt; &lt;div class="scrollBoxContent"&gt;
 884                    Default scroll box.
 885                    Default scroll box.
 886                    Default scroll box.
 887                    Default scroll box.
 888                    Default scroll box.
 889                    Default scroll box.
 890                    Default scroll box.
 891                    &lt;/div&gt; &lt;/div&gt;
 892                    </div> </div>
 893
 894                    <div class="scrollBoxTiny"> <div class="scrollBoxContent">
 895                    &lt;div class="scrollBoxTiny"&gt; &lt;div class="scrollBoxContent"&gt;
 896                    Tiny scroll box.
 897                    &lt;/div&gt; &lt;/div&gt;
 898                    </div></div>
 899
 900                    <div class="scrollBoxSmall"> <div class="scrollBoxContent">
 901                    &lt;div class="scrollBoxSmall"&gt; &lt;div class="scrollBoxContent"&gt;
 902                    Small scroll box.
 903                    Small scroll box.
 904                    Small scroll box.
 905                    Small scroll box.
 906                    Small scroll box.
 907                    Small scroll box.
 908                    Small scroll box.
 909                    &lt;/div&gt; &lt;/div&gt;
 910                    </div> </div>
 911
 912                    <div class="scrollBoxMedium"> <div class="scrollBoxContent">
 913                    &lt;div class="scrollBoxMedium"&gt; &lt;div class="scrollBoxContent"&gt;
 914                    Medium scroll box.
 915                    Medium scroll box.
 916                    Medium scroll box.
 917                    Medium scroll box.
 918                    Medium scroll box.
 919                    Medium scroll box.
 920                    Medium scroll box.
 921                    &lt;/div&gt; &lt;/div&gt;
 922                    </div> </div>
 923
 924                    <div class="scrollBoxLarge"> <div class="scrollBoxContent">
 925                    &lt;div class="scrollBoxLarge"&gt; &lt;div class="scrollBoxContent"&gt;
 926                    Large scroll box.
 927                    Large scroll box.
 928                    Large scroll box.
 929                    Large scroll box.
 930                    Large scroll box.
 931                    Large scroll box.
 932                    Large scroll box.
 933                    &lt;/div&gt; &lt;/div&gt;
 934                    </div> </div>
 935
 936                    <div class="scrollBoxHuge"> <div class="scrollBoxContent">
 937                    &lt;div class="scrollBoxHuge"&gt; &lt;div class="scrollBoxContent"&gt;
 938                    Huge scroll box.
 939                    Huge scroll box.
 940                    Huge scroll box.
 941                    Huge scroll box.
 942                    Huge scroll box.
 943                    Huge scroll box.
 944                    Huge scroll box.
 945                    Huge scroll box.
 946                    Huge scroll box.
 947                    Huge scroll box.
 948                    Huge scroll box.
 949                    Huge scroll box.
 950                    Huge scroll box.
 951                    Huge scroll box.
 952                    Huge scroll box.
 953                    Huge scroll box.
 954                    Huge scroll box.
 955                    Huge scroll box.
 956                    Huge scroll box.
 957                    Huge scroll box.
 958                    Huge scroll box.
 959                    Huge scroll box.
 960                    Huge scroll box.
 961                    Huge scroll box.
 962                    Huge scroll box.
 963                    Huge scroll box.
 964                    Huge scroll box.
 965                    Huge scroll box.
 966                    Huge scroll box.
 967                    Huge scroll box.
 968                    Huge scroll box.
 969                    Huge scroll box.
 970                    Huge scroll box.
 971                    Huge scroll box.
 972                    Huge scroll box.
 973                    Huge scroll box.
 974                    Huge scroll box.
 975                    &lt;/div&gt; &lt;/div&gt;
 976                    </div> </div>
 977                </section>
 978
 979                <section>
 980                    <h3 id="Images">Images</h3>
 981
 982                    <p>
 983                    Centered images, from full width to smaller sizes.
 984                    </p>
 985                    <img class="centered" alt="artificer" src="Images/Artificer.jpg">
 986                    <img class="centeredsmaller" alt="artificer" src="Images/Artificer.jpg">
 987                    <img class="centeredsmallest" alt="artificer" src="Images/Artificer.jpg">
 988
 989                    <div class="scrollBox"> <div class="scrollBoxContent">
 990                    &lt;img class="centered" alt="artificer" src="Images/Artificer.jpg"&gt;
 991                    &lt;img class="centeredsmaller" alt="artificer" src="Images/Artificer.jpg"&gt;
 992                    &lt;img class="centeredsmallest" alt="artificer" src="Images/Artificer.jpg"&gt;
 993                    </div> </div>
 994                </section>
 995
 996                <section>
 997                    <h3 id="Tables">Tables</h3>
 998
 999                    <table>
1000                        <caption>This is a simple table</caption>
1001
1002                        <tr>
1003                            <th>Table Header, Column 1</th>
1004                            <th>Table Header, Column 2</th>
1005                        </tr>
1006
1007                        <tr>
1008                            <td>Row 1, Column 1.</td>
1009                            <td>Row 1, Column 2.</td>
1010                        </tr>
1011
1012                        <tr>
1013                            <td>Row 1, Column 1.</td>
1014                            <td>Row 2, Column 2.</td>
1015                        </tr>
1016                    </table>
1017
1018                    <div class="scrollBox"> <div class="scrollBoxContent">
1019                        &lt;table&gt;
1020                            &lt;caption&gt;This is a simple table&lt;/caption&gt;
1021                            &lt;tr&gt;
1022                                &lt;th&gt;Table Header, Column 1&lt;/th&gt;
1023                                &lt;th&gt;Table Header, Column 2&lt;/th&gt;
1024                            &lt;/tr&gt;
1025                            &lt;tr&gt;
1026                                &lt;td&gt;Row 1, Column 1.&lt;/td&gt;
1027                                &lt;td&gt;Row 1, Column 2.&lt;/td&gt;
1028                            &lt;/tr&gt;
1029                            &lt;tr&gt;
1030                                &lt;td&gt;Row 1, Column 1.&lt;/td&gt;
1031                                &lt;td&gt;Row 2, Column 2.&lt;/td&gt;
1032                            &lt;/tr&gt;
1033                        &lt;/table&gt;
1034                    </div> </div>
1035                </section>
1036
1037                <section>
1038                    <h3 id="Tooltips">Tooltips</h3>
1039
1040                    <p class="box">
1041                    Note that tooltips only work on devices which support hover, e.g. computers with mouse, stylus or trackpad.  
1042                    They are not supported on mobile devices right now.
1043                    </p>
1044
1045                    <p>
1046                    Here is an example tooltip modified a lot from
1047                    <a href="https://blog.logrocket.com/creating-beautiful-tooltips-with-only-css/">creating beautiful tooltips using CSS</a>
1048                    using the following HTML5 and CSS3+ technologies:
1049                    </p>
1050
1051                    <ul>
1052                        <li> 
1053                            <a href=" https://developer.mozilla.org/en-US/docs/Web/CSS/position">static, relative, absolute and sticky position</a>
1054                        </li>
1055                        <li> 
1056                            <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block">layout and contiaing blocks</a>
1057                        </li>
1058                        <li> 
1059                            <a href="https://www.smashingmagazine.com/2011/07/learning-to-use-the-before-and-after-pseudo-elements-in-css/">:before and :after pseudo-classes</a>
1060                        </li>
1061                        <li> 
1062                            <a href="https://www.sitepoint.com/how-why-use-html5-custom-data-attributes/">custom data attributes</a>
1063                        </li>
1064                    </ul>
1065
1066                    <p>
1067                    Your time is limited, so don't waste it living someone else's life. 
1068                    Don't be trapped by dogma - which is living with the results of other people's thinking. 
1069                    Don't let the noise of others' opinions drown out your own 
1070                    <span data-text="-Steve Jobs" class="tooltip">inner voice</span>.
1071                    And most important, have the courage to follow your heart and 
1072                    <span data-text="Steve Jobs again!" class="tooltip">intuition</span>.
1073                    </p>
1074
1075                    <div class="scrollBoxSmall"> <div class="scrollBoxContent">
1076                    &lt;span data-text="-Steve Jobs" class="tooltip"&gt;inner voice&lt;span&gt;
1077                    And most important, have the courage to follow your heart and 
1078                    &lt;span data-text="-Steve Jobs again!" class="tooltip"&gt;inner voice&lt;span&gt;
1079                    </div></div>
1080
1081                    <p>
1082                    Most of the magic is in the CSS <a href="../StyleSheet.css.html">style sheet</a>.  
1083                    </p> 
1084                </section>
1085
1086                <section>
1087                    <h3 id="Gallery">Art Gallery</h3>
1088
1089                    <p>
1090                    An art gallery.
1091                    </p>
1092
1093                    <div class="gallery">
1094                        <div class="painting" title="Fast PC.">
1095                            <a href="Images/CyberPowerPCUbuntuGauss.jpg">
1096                                <img src="Images/CyberPowerPCUbuntuGauss.jpg" alt="Fast PC.">
1097                            </a>
1098                            <p>Fast PC</p>
1099                        </div>
1100
1101                        <div class="painting" title="Black and Gray Chalk on Paper.">
1102                            <a href="../Art/Images/ShiftSelectCornea.jpg">
1103                                <img src="../Art/Images/ShiftSelectCornea.jpg" alt="3D eye.">
1104                            </a>
1105                            <p>3D eye</p>
1106                        </div>
1107
1108                        <div class="painting" title="Black and Gray Chalk on Paper.">
1109                            <a href="../Images/eye.png">
1110                                <img src="../Images/eye.png" alt="2D eye.">
1111                            </a>
1112                            <p>2D eye</p>
1113                        </div>
1114
1115                        <div class="painting" title="Black and Gray Chalk on Paper.">
1116                            <a href="../Images/home.png">
1117                                <img src="../Images/home.png" alt="Home">
1118                            </a>
1119                            <p>Home</p>
1120                        </div>
1121                    </div>
1122
1123                    <div class="scrollBox"> <div class="scrollBoxContent">
1124                        &lt;div class="gallery"&gt;
1125                            &lt;div class="painting" title="Fast PC."&gt;
1126                                &lt;a href="Images/CyberPowerPCUbuntuGauss.jpg"&gt;
1127                                    &lt;img src="Images/CyberPowerPCUbuntuGauss.jpg" alt="Fast PC."&gt;
1128                                &lt;/a&gt;
1129                                &lt;p&gt;Fast PC&lt;/p&gt;
1130                            &lt;/div&gt;
1131                            &lt;div class="painting" title="Black and Gray Chalk on Paper."&gt;
1132                                &lt;a href="../Art/Images/ShiftSelectCornea.jpg"&gt;
1133                                    &lt;img src="../Art/Images/ShiftSelectCornea.jpg" alt="3D eye."&gt;
1134                                &lt;/a&gt;
1135                                &lt;p&gt;3D eye&lt;/p&gt;
1136                            &lt;/div&gt;
1137                            &lt;div class="painting" title="Black and Gray Chalk on Paper."&gt;
1138                                &lt;a href="../Images/eye.png"&gt;
1139                                    &lt;img src="../Images/eye.png" alt="2D eye."&gt;
1140                                &lt;/a&gt;
1141                                &lt;p&gt;2D eye&lt;/p&gt;
1142                            &lt;/div&gt;
1143                            &lt;div class="painting" title="Black and Gray Chalk on Paper."&gt;
1144                                &lt;a href="../Images/home.png"&gt;
1145                                    &lt;img src="../Images/home.png" alt="Home"&gt;
1146                                &lt;/a&gt;
1147                                &lt;p&gt;Home&lt;/p&gt;
1148                            &lt;/div&gt;
1149                    </div> </div>
1150                </section>
1151
1152                <section>
1153                    <h3 id="Movies">Movies</h3>
1154
1155                        <video width="320" height="240" controls>
1156                            <source src="Images/sean.mp4" type="video/mp4">
1157                            Your browser does not support the HTML5 video tag.
1158                        </video> 
1159
1160                        <video width="200" height="100" controls>
1161                            <source src="Images/sean.mov" type="video/mp4">
1162                            Your browser does not support the HTML5 video tag.
1163                        </video> 
1164
1165                        <div class="scrollBox"> <div class="scrollBoxContent">
1166                            &lt;video width="320" height="240" controls&gt;
1167                            &lt;source src="Images/sean.mp4" type="video/mp4"&gt;
1168                            Your browser does not support the HTML5 video tag.
1169                            &lt;video&gt;
1170
1171                            &lt;video width="500" height="200" controls&gt;
1172                            &lt;source src="Images/sean.mov" type="video/mp4"&gt;
1173                            Your browser does not support the HTML5 video tag.
1174                            &lt;video&gt;
1175                        </div> </div>
1176                </section>
1177
1178                <section>
1179                    <h3 id="Forms">Forms</h3>
1180
1181                    <p>Form push button example showing my layout style and a very simple callback</p>
1182
1183                    <form>
1184                        <ul>
1185                            <li>
1186                              <fieldset>
1187                                  <legend>Form Button</legend>
1188                                      <input type="button" onclick="alert( 'Do not push this button again!' )" value="Push Me!">
1189                                 </fieldset>
1190                            </li>
1191                        </ul>
1192                    </form>
1193
1194                    <div class="scrollBox"> <div class="scrollBoxContent">
1195                    &lt;form&gt;
1196                        &lt;ul&gt;
1197                            &lt;li&gt;
1198                              &lt;fieldset&gt;
1199                                  &lt;legend&gt;Form Button&lt;/legend&gt;
1200                                      &lt;input type="button" onclick="alert( 
1201                                            'Do not push this button again!' )" value="Push Me!" /&gt;
1202                                 &lt;/fieldset&gt;
1203                            &lt;/li&gt;
1204                        &lt;/ul&gt;
1205                    &lt;/form&gt;
1206                    </div> </div>
1207                </section>
1208
1209                <section>
1210                    <h3 id="SVG">SVG</h3>
1211
1212                    <p>
1213                        <a href="https://www.w3.org/TR/SVG11/">Scalable Vector Graphics (SVG)</a> is a language for describing vector graphics.
1214                        See the <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Introduction">Mozilla SVG Tutorial</a>
1215                    </p>
1216
1217                    <p>
1218                        I use <a href="https://inkscape.org">Inkscape</a> to do the drawing and generate the SVG file.
1219                        Here's an example, where I've drawn a picture in Inkscape, and saved it to an *.svg file.  
1220                        Load the *.svg image as you would any image, except I have <em>background: transparent;</em> in the style sheet
1221                        so the SVG draws on top of the page, just like a drawing on paper.
1222                        Thus the image size fills the containing box (this paragraph) and resizes with the browser window.
1223                        <img class="transparent" alt="Yoicks" src="Images/Yoicks.svg" >
1224                    </p>
1225
1226                    <p>
1227                        <em>Yoicks</em> by Sean Erik O'Connor is licensed under the Creative Commons license
1228
1229                        <a href="https://creativecommons.org/licenses/by-nd/4.0/?ref=chooser-v1" 
1230                           target="_blank" 
1231                           rel="license noopener noreferrer" 
1232                           style="display:inline-block;">CC BY-ND 4.0
1233                            <img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" 
1234                                src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" 
1235                                alt="">
1236                            <img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" 
1237                                 src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" alt="">
1238                            <img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" 
1239                                 src="https://mirrors.creativecommons.org/presskit/icons/nd.svg?ref=chooser-v1" alt=""></a>
1240                    </p>
1241
1242                    <div class="scrollBoxSmall"> <div class="scrollBoxContent">
1243                        &lt;img class="transparent" src="Images/Yoicks.svg" &gt;
1244                    </div></div>
1245
1246                </section>
1247
1248                <section>
1249                    <h3 id="Canvas">Canvas</h3>
1250
1251                    <p>
1252                        <a href="https://www.w3.org/TR/2dcontext/">Canvas Specification</a>
1253                    </p>
1254
1255                    <canvas id="canvas" width="300" height="225">
1256                        Your browser does not support the canvas API!
1257                    </canvas>
1258
1259                    <script>
1260                        function draw()
1261                        {
1262                            var canvas = document.getElementById( "canvas" ) ;
1263                            var context = canvas.getContext( "2d" ) ;
1264                            var gradient = context.createLinearGradient( 0, 0, 300, 0 ) ;
1265                            gradient.addColorStop( 0, "green" ) ;
1266                            gradient.addColorStop( 1, "red" ) ;
1267                            context.fillStyle = gradient ;
1268                            context.fillRect( 0, 0, 150, 100 ) ;
1269                            context.fillStyle = "rgba( 0, 0, 100, 0.5 )" ;
1270                            context.fillRect( 100, 50, 150, 100 ) ;
1271                        }
1272
1273                        /* Or you can call from <body onload="draw();"> */
1274                        draw() ;
1275                    </script>
1276
1277                    <div class="scrollBox"> <div class="scrollBoxContent">
1278                        &lt;canvas id="canvas" width="300" height="225"&gt;
1279                        Your browser does not support the canvas API!
1280                        &lt;canvas&gt;
1281
1282                        &lt;script&gt;
1283                        function draw()
1284                        {
1285                            var canvas = document.getElementById( "canvas" ) ;
1286                            var context = canvas.getContext( "2d" ) ;
1287                            var gradient = context.createLinearGradient( 0, 0, 300, 0 ) ;
1288                            gradient.addColorStop( 0, "green" ) ;
1289                            gradient.addColorStop( 1, "red" ) ;
1290                            context.fillStyle = gradient ;
1291                            context.fillRect( 0, 0, 150, 100 ) ;
1292                            context.fillStyle = "rgba( 0, 0, 100, 0.5 )" ;
1293                            context.fillRect( 100, 50, 150, 100 ) ;
1294                        }
1295
1296                        /* Or you can call from &lt;body onload="draw();"&gt; */
1297                        draw() ;
1298                        &lt;/script&gt;
1299                    </div> </div>
1300                </section>
1301
1302                <section>
1303                    <h3 id="GoogleSearch">Google Search</h3>
1304
1305                    <!-- Form to search my site with Google.  From Google's free tools web page.  -->
1306                    <form method="get" action="http://www.google.com/search">
1307
1308                        <div id="GoogleForm">
1309                            <input type="hidden" name="ie" value="UTF-8">
1310                            <input type="hidden" name="oe" value="UTF-8">
1311
1312                            <!-- Required Google logo -->
1313                            <a href="http://www.google.com/"> <img src="http://www.google.com/logos/Logo_25wht.gif" alt="Google">
1314                            </a>
1315
1316                            <!-- A text input control for the (q)uery search string. -->
1317                            <input type="text" name="q" size="32" maxlength="255" value="Primitive Polynomial">
1318
1319                            <!-- Submit button:  submits this form when activated. -->
1320                            <input type="submit" name="btnG" value="Search my site">
1321
1322                            <!-- The URL of my site to search.
1323                                  Determine which server we are on and use the appropriate hyperlink.
1324                                  Use comments to hide this Javascript from older browsers.
1325                            -->
1326                            <script>
1327                            <!-- 
1328                                var hostname = location.href
1329                                var prefix = "<input type=\"hidden\" name=\"sitesearch\" value=\"http://"
1330                                var suffix = ".com\">"
1331
1332                                if (hostname.match( "atspace" ))
1333                                {
1334                                    document.write( prefix + "seanerikoconnor.atspace" + suffix )
1335                                }
1336                                else if (hostname.match( "freeservers" ))
1337                                {
1338                                    document.write( prefix + "seanerikoconnor.freeservers" + suffix )
1339                                }
1340                                else if (hostname.match( "file" ))
1341                                {
1342                                    document.write( prefix + "seanerikoconnor.freeservers" + suffix )
1343                                }
1344                             // -->
1345                            </script> 
1346                        </div>
1347                    </form>
1348
1349                    <div class="scrollBox"> <div class="scrollBoxContent">
1350                        &lt;!-- Form to search my site with Google.
1351                             From Google's free tools web page.
1352                          --&gt;
1353                        &lt;form method="get" action="http://www.google.com/search"&gt;
1354
1355                            &lt;div id="GoogleForm"&gt;
1356                                &lt;input type="hidden" name="ie" value="UTF-8" /&gt;
1357                                &lt;input type="hidden" name="oe" value="UTF-8" /&gt;
1358
1359                                &lt; Required Google logo --&gt;
1360                                &lt;a href="http://www.google.com/"&gt;
1361                                        &lt;img src="http://www.google.com/logos/Logo_25wht.gif"
1362                                             alt="Google" /&gt;
1363                                &lt;a&gt;
1364
1365                                &lt; A text input control for the (q)uery search string. --&gt;
1366                                &lt;input type="text" name="q" size="32" maxlength="255"
1367                                       value="Primitive Polynomial" /&gt;
1368
1369                                &lt; Submit button:  submits this form when activated. --&gt;
1370                                &lt;input type="submit" name="btnG" value="Search my site" /&gt;
1371
1372                                &lt; The URL of my site to search.
1373                                      Determine which server we are on and use the appropriate hyperlink.
1374                                      Use comments to hide this Javascript from older browsers.
1375                                --&gt;
1376                                &lt;script&gt;
1377                                &lt; 
1378                                    var hostname = location.href
1379                                    var prefix = "&lt;input type=\"hidden\" 
1380                                        name=\"sitesearch\" value=\"http://"
1381                                    var suffix = ".com\" /&gt;
1382
1383                                    if (hostname.match( "atspace" ))
1384                                    {
1385                                        document.write( prefix + "seanerikoconnor.atspace" + suffix )
1386                                    }
1387                                    else if (hostname.match( "freeservers" ))
1388                                    {
1389                                        document.write( prefix + "seanerikoconnor.freeservers" + suffix )
1390                                    }
1391                                    else if (hostname.match( "file" ))
1392                                    {
1393                                        document.write( prefix + "seanerikoconnor.freeservers" + suffix )
1394                                    }
1395                                     // --&gt;
1396                                &lt;script&gt;
1397                            &lt;div&gt;
1398                        &lt;form&gt;
1399                    </div> </div>
1400               </section>
1401
1402               <section>
1403                   <h3 id="TypesettingMathematics">Typesetting Mathematics</h3>
1404
1405                    <h4>Math on the Web</h4>
1406
1407                    <p>
1408                        I use <a href="https://www.mathjax.org/">MathJax</a> to typeset equations.
1409                        I write equations in $\LaTeX$ in both inline or display style, using single or double 
1410                        dollar sign delimiters.
1411                        Here's the wonderful <a href="../Finance/lshort.pdf">Not So Short Introduction to LATEX</a>
1412                    </p>
1413
1414                    <p>
1415                        For example, the Navier-Stokes equation is 
1416                          ${{V} \over { \partial t }} + \left( V \bullet \nabla \right) V = 
1417                          {{ - \nabla p} \over { \rho_0}} + \nu \triangle V + F$, $\quad \nabla \bullet 
1418                            V = 0$, $\quad V |_{\partial \Omega} = 0$.
1419                    </p>
1420
1421                    <div class="scrollBox"> <div class="scrollBoxContent">
1422                      dollarsign dollarsign
1423                      {{V} \over { \partial t }} + \left( V \bullet \nabla \right) V = 
1424                      {{ - \nabla p} \over { \rho_0}} + \nu \triangle V + F, \quad \nabla \bullet V = 0
1425                      \quad V |_{\partial \Omega} = 0
1426                      dollarsign dollarsign
1427                    </div> </div>
1428
1429                    <p>
1430                    The Frobenius norm is 
1431                    $\| A \|_2 \equiv  
1432                    \sum_{ij} | A_{ij} |^2 \equiv 
1433                    \sqrt { tr( A^T A ) }$.
1434                    and the error function is defined to be
1435                    $ \operatorname{erfc}(x) = 
1436                    \frac{2}{\sqrt{\bar{\pi}}} \int_x^{\infty} e^{-t^2}\,dt 
1437                    = \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}} 
1438                    $
1439                    </p>
1440
1441                    <p>
1442                    The Frechet derivative of a vector norm, 
1443                    $$
1444                    Df(x)h =
1445                     \lim_{t \rightarrow 0}
1446                     { 
1447                         {  f( x + t h) - f(x) }
1448                         \over
1449                         {t}
1450                     } 
1451                     $$
1452                     $$
1453                      = 
1454                     \lim_{t \rightarrow 0}
1455                     { 
1456                        { \sqrt{ {\| x \|}^2 + 2 \lt x | t h \gt + {\| t h \|}^2 } - \| x \|}
1457                         \over
1458                         {t}
1459                     } 
1460                    $$
1461                    </p>
1462
1463                    <p>
1464                    A circulant matrix equation,
1465                    $$
1466                    \left( 
1467                    \begin{array} { cccccc }
1468                    a^{sn}     & a^{s(n-1)}  & \ldots &  a^s       & 1 \\
1469                    a^{s(n+1)} & a^{sn}      & \ldots & a^{s+1}    & a^s \\
1470                    \ldots \\
1471                    a^{s(2n)}  & a^{s(2n-1)} &\ldots  & a^{s(n+1)} & a^{sn}
1472                    \end{array} 
1473                    \right)
1474                    X
1475                    =
1476                    \left( 
1477                    \begin{array} { c }
1478                    c_{n} \\
1479                    c_{n-1} \\
1480                    \ldots \\
1481                    c_0
1482                    \end{array} 
1483                    \right)
1484                    $$   
1485                    </p>
1486
1487                    <p>
1488                    a Fourier transform sum,
1489                    $$   
1490                    \sum_{k_0=0}^1  \sum_{k_1=0}^1\ldots 
1491                    \sum_{k_{g-1}=0}^1 
1492                    \quad \times
1493                    $$   
1494                    $$   
1495                    \bar{x}(k_{g-1}, k_{g-2}, \ldots , k_0)
1496                    \quad \times
1497                    $$   
1498                    $$   
1499                    W^{ (n_0) (2^{g-1}k_{g-1})} 
1500                    W^{(2 n_1 + n_0) (2^{g-2}k_{g-2})} 
1501                    W^{(2^{g-1} n_{g-1} + \ldots + n_0) (k_0)}
1502                    $$   
1503                    <p>
1504
1505                    <p>
1506                    and a normalized cross-correlation,
1507                    $$
1508                    P = \frac{\displaystyle{
1509                    \sum_{i=1}^n (x_i- x) (y_i- y)}} 
1510                    {\displaystyle{\left[ \sum_{i=1}^n(x_i-x)^2 
1511                    \sum_{i=1}^n(y_i- y)^2 \right]^{1/2}}}
1512                    $$
1513                    Update form for mean,
1514                    $$
1515                    M_{n+1}= {{\sum_{i=1}^{n+1} x_i} \over 
1516                        {n+1}}
1517                    ={M_n } {n \over n+1} + {x_{n+1} \over {n+1}}
1518                    $$
1519                    </p>    
1520
1521                    <div class="scrollBox"> <div class="scrollBoxContent">
1522                    Update form for mean,
1523                    dollarsign dollarsign
1524                    M_{n+1}= {{\sum_{i=1}^{n+1} x_i} \over 
1525                        {n+1}}
1526                    ={M_n } {n \over n+1} + {x_{n+1} \over {n+1}}
1527                    dollarsign dollarsign
1528                    </div> </div>
1529
1530                    <p>
1531                    MathJax will show you the source code for the equation with a right 
1532                    click over the equation, or you can set hover to show the equation source.
1533                    </p>
1534
1535                    <figure>
1536                        <img src="Images/MathJaxShowMathAs.jpg" alt="MathJax Show Math As" >
1537                        <img src="Images/MathJaxEquationsSource.jpg" alt="MathJax Equation Source" >
1538
1539                        <figcaption>
1540                            Right click on the mathematical symbols to get a MathJax menu.
1541                        </figcaption>
1542                    </figure>
1543
1544                    <h4>Setting up MathJax</h4>
1545
1546                    <p>
1547                    To set up MathJax for your web page, put this into your &lt;head&gt; section before loading the style sheet,
1548                    </p>
1549
1550                    <div class="scrollBoxSmall"> <div class="scrollBoxContent">
1551                        &lt;!-- Configure and load MathJax --&gt;
1552                        &lt;script src="../Scripts/load-mathjax.js" async&gt;&lt;/script&gt;
1553                    </div></div>
1554
1555                    <p>
1556                    Put this script into your <em>/Scripts</em> directory which configures and loads MathJax in 
1557                    three different ways:
1558                    </p>
1559
1560                    <ul>
1561                        <li>From MathJax files in the /mathjax directory on my local development platform (MacBook Pro).</li>
1562                        <li>From MathJax files in the /mathjax directory on my web host (after 
1563                            uploading the directory to my web host).</li>
1564                        <li>Otherwise from CDN URL for MathJax.</li>
1565                    </ul>
1566
1567                    <ul class="download">
1568                        <li class="downloadName">load-mathjax.js</li>
1569                        <li class="downloadDescription">Load MathJax Javascript.</li>
1570                        <li class="downloadView"> 
1571                            <a href="../Scripts/load-mathjax.js.html">
1572                                <img src="../Images/eye.png" alt="Eye icon for source code viewing." width="30" height="30" >View</a>
1573                        </li>
1574                        <li class="download"> 
1575                            <a href="../Scripts/load-mathjax.js" download="../Scripts/load-mathjax.js">
1576                                <img src="../Images/compactDisk.png" alt="Compact disk icon for source code download." width="25" height="25" >Download</a>
1577                        </li>
1578                    </ul>
1579
1580                    <p>
1581                    Not happening now, but this used to happen with a 2018 version of MathJax:
1582                    </p>
1583
1584                    <p>
1585                    I was getting timeouts loading the italic font from my server, 
1586                    but not for my local web page on my MacBook Pro host.  
1587                    So I added the following .htaccess file in mathjax/fonts which fixed the 
1588                    problem.
1589                    My Apache web server didn't recognize the .woff font file type and was 
1590                    not allowing access to the files as explained in
1591                    <a href="http://httpd.apache.org/docs/current/howto/htaccess.html">
1592                           Apache how to for htaccess</a>.
1593                    </p>
1594
1595                    <div class="scrollBox"> <div class="scrollBoxContent">
1596                        &lt;FilesMatch "\.(ttf|otf|eot|woff)$"&gt;
1597                        &lt;IfModule mod_headers.c&gt;
1598                        Header set Access-Control-Allow-Origin "*"
1599                        &lt;/IfModule&gt;
1600                        &lt;/FilesMatch&gt;
1601                        AddType application/x-font-woff woff
1602                    </div> </div>
1603               </section>
1604
1605               <section>
1606                    <h3 id="Maintainance">Maintainance</h3>
1607
1608                    <p>
1609                    In the top level directory, I have a 
1610                    <a href="../ComputerScience/DevelopmentEnvironment/macLinuxComputerSetupForDevelopers.html#PROGRAMMINGLANGUAGES">Python</a>
1611                    script called <em>updateweb.py</em> which maintains this site.  Some of its features:
1612                    </p>
1613
1614                    <ul>
1615                        <li>Automatic generation of syntax highlighted source code listings.</li>
1616                        <li>Automatic search and replace any type of text (e.g. old copyright notices) in all hypertext and source files.</li>
1617                        <li>Delete temporary files and directories generated by compilers.</li>
1618                        <li>Upload the changed web pages files to my host web site.</li>
1619                    </ul>
1620
1621                    <p>
1622                    <em>updateweb Version 7.1 - A Python utility program which maintains my web site</em> is distributed under the terms of the
1623                    <a href="http://www.gnu.org/licenses/">GNU General Public License</a>.
1624                    </p>
1625                    
1626                    <ul class="download">
1627                        <li class="downloadName">updateweb.py</li>
1628                        <li class="downloadDescription">Update Web Page Script</li>
1629                        <li class="downloadView"> 
1630                            <a href="MaintainWebPage/updateweb.py.html">
1631                                <img src="../Images/eye.png" alt="Eye icon for source code viewing." width="30" height="30" >View</a>
1632                        </li>
1633                        <li class="download"> 
1634                            <a href="MaintainWebPage/updateweb.py" download="MaintainWebPage/updateweb.pys">
1635                                <img src="../Images/compactDisk.png" alt="Compact disk icon for source code download." width="25" height="25" >Download</a>
1636                        </li>
1637
1638                        <li class="downloadName">updateweb.yaml</li>
1639                        <li class="downloadDescription">Update Web Page YAML configuration file (demo example only).</li>
1640                        <li class="downloadView"> 
1641                            <a href="MaintainWebPage/updateweb.yaml.html">
1642                                <img src="../Images/eye.png" alt="Eye icon for source code viewing." width="30" height="30" >View</a>
1643                        </li>
1644                        <li class="download"> 
1645                            <a href="MaintainWebPage/updateweb.yaml" download="MaintainWebPage/updateweb.yaml">
1646                                <img src="../Images/compactDisk.png" alt="Compact disk icon for source code download." width="25" height="25" >Download</a>
1647                        </li>
1648                    </ul>
1649
1650                    <p>
1651                    I still need to submit each page to a final 
1652                    <a href="https://validator.w3.org/checklink/">link check</a>
1653                    as web links undergo software rot.
1654                    </p>
1655               </section>
1656
1657               <section>
1658                    <h3 id="DevelopmentEnvironment">Development Environment</h3>
1659
1660                    <figure>
1661                        <a href="Images/Artificer.jpg">
1662                            <img src="Images/Artificer.jpg" 
1663                                 height="250" width="400"
1664                                 alt="Artificer laptop running macOS.">
1665                        </a>
1666                        <figcaption>MacBook Pro laptop running macOS.</figcaption>
1667                    </figure>
1668
1669                    <p style="clear:both">
1670                    I do my development on my MacBookPro 16-inch, 2021 Apple M1 Max laptop running macOS Sonoma 14.5 (23F79)
1671                    on which I have loaded a variety of 
1672                    <a href="../ComputerScience/DevelopmentEnvironment/macLinuxComputerSetupForDevelopers.html"><em>software designer's tools</em></a>
1673                    I also develop on a CyberPowerPC Series C 2019 ET8880-1202 running Ubuntu Linux 20.04 LTS (Focal Fossa).
1674                    </p>
1675
1676                    <figure>
1677                        <a href="Images/CyberPowerPCUbuntuGauss.jpg">
1678                            <img src="Images/CyberPowerPCUbuntuGauss.jpg" 
1679                                 height="350" width="600"
1680                                 alt="CyberPower PC running Ubuntu Linux">
1681                        </a>
1682                        <figcaption>CyberPower PC running Ubuntu Linux.</figcaption>
1683                    </figure>
1684               </section>
1685
1686               <section>
1687                    <h3 id="Hosting">Hosting</h3>
1688
1689                    <p>
1690                    I use Freeservers, which I have used for a number of years with
1691                    excellent results.  I used to use the file manager in the 
1692                    <a href="http://seanerikoconnor.freeservers.com/cgi-bin/login">
1693                        member</a> 
1694                    area, but now I use my 
1695                    <a href="#Maintainance">automatic updater program</a>.
1696                    </p>
1697
1698                    <p>
1699                    I use AT&amp;T DSL with a wireless transceiver so I can communicate
1700                    to my laptop.
1701                    Once upon a time, I connected through the phone on a separate line 
1702                    using a modem with 
1703                    <a href="https://www.netzero.net/">Netzero</a>
1704                    as my ISP.
1705                    </p>
1706               </section>
1707
1708               <section>
1709                    <h3 id="Viewing">Viewing</h3>
1710
1711                    <p>
1712                    I check my web page appearance in the 
1713                    <a href="http://www.mozilla.org/en-US/">Firefox</a>,
1714                    <a href="https://www.apple.com/safari/">Safari</a>,
1715                    <a href="https://www.opera.com">Opera</a>, and
1716                    <a href="https://www.chromium.org/Home">Chromium</a>
1717                    internet browsers, and on iPad and iPhone devices.
1718                    </p>
1719               </section>
1720
1721               <section>
1722                    <h3 id="GettingListed">Getting Listed</h3>
1723
1724                    <p>
1725                    Some tips on submitting the site to search engines are given in 
1726                    <a href="https://searchenginewatch.com/">search engine watch</a>.
1727                    I test search for my site using 
1728                    <a href="http://www.google.com/">Google</a>.
1729                    </p>
1730               </section>
1731
1732               <section>
1733                    <h3 id="Communicating">Communicating</h3>
1734                    
1735                    <p>
1736                    I also occasionally post on Google groups:
1737                    <a href="https://support.google.com/groups/answer/1067205?hl=en">newsgroups</a>.
1738                    </p>
1739               </section>
1740
1741            </article>
1742
1743            <footer class="footnote">
1744                <hr>
1745
1746                <!-- A copyright to preserve my legal rights. -->
1747                <p class="footnote">
1748                    Copyright &copy; 1986-2024 by Sean Erik O'Connor.
1749                    All Rights Reserved.
1750                    &nbsp;&nbsp;&nbsp;
1751                    last updated 14 Dec 25.
1752                </p>
1753            </footer>
1754        </div> <!-- wrapper -->
1755    </body>
1756</html>