endpoints.path: /
endpoints.endpoint_type: HTTP
endpoints.scan_time: 2025-10-10T15:26:54.825581
endpoints.uri: http://mail.lomont.org/
endpoints.protocol: HTTP/1.1
endpoints.status_reason: OK
endpoints.key: X-Frame-Options
endpoints.headers: SAMEORIGIN
endpoints.key: Last-Modified
endpoints.headers: Mon, 23 Sep 2024 03:41:46 GMT
endpoints.key: Date
endpoints.headers: <REDACTED>
endpoints.key: X-Content-Type-Options
endpoints.headers: nosniff
endpoints.key: Server
endpoints.headers: Apache
endpoints.key: Content-Length
endpoints.headers: 20608
endpoints.key: Strict-Transport-Security
endpoints.headers: max-age=63072000; includeSubDomains
endpoints.key: Content-Type
endpoints.headers: text/html
endpoints.key: Accept-Ranges
endpoints.headers: bytes
endpoints.key: Vary
endpoints.headers: Accept-Encoding
endpoints.key: Cache-Control
endpoints.headers: max-age=3600, must-revalidate
endpoints.key: Content-Encoding
endpoints.headers: gzip
endpoints.html_tags: <title>Lomont.org</title> <meta charset="utf-8" /> <meta name="description"
          content="Lomont, Chris, Chris Lomont, Computer Graphics, Math, Quantum Computing, Programming, Programming Languages, Publications, Resume, Software, Research, IEEE, ACM, AMS, MAA, CPU, Disk, Graphics, GUI, C, C++, " /> <meta name="keywords"
          content="Lomont, Chris, Chris Lomont, Computer Graphics, Math, Quantum Computing, Programming, Programming Languages, Publications, Resume, Software, Research, IEEE, ACM, AMS, MAA, CPU, Disk, Graphics, GUI, C, C++, " /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="generator" content="Hugo 0.101.0" />
endpoints.body: <!DOCTYPE html>
  <html lang="en">
  
  
  <head>
      <meta charset="utf-8" />
      
      <meta name="description"
          content="Lomont, Chris, Chris Lomont, Computer Graphics, Math, Quantum Computing, Programming, Programming Languages, Publications, Resume, Software, Research, IEEE, ACM, AMS, MAA, CPU, Disk, Graphics, GUI, C, C++, " />
      
      <meta name="keywords"
          content="Lomont, Chris, Chris Lomont, Computer Graphics, Math, Quantum Computing, Programming, Programming Languages, Publications, Resume, Software, Research, IEEE, ACM, AMS, MAA, CPU, Disk, Graphics, GUI, C, C++, " />
  
      
      
      <link rel="stylesheet" href="/resources/css/normalize.css" media="screen">
  
      
      
      <link rel="stylesheet" href="/resources/css/main.min.f680eb3ad3031cebb4f9877ac532978e0541fec97eef4c8910593ed88781ffc5.css" integrity="sha256-9oDrOtMDHOu0&#43;Yd6xTKXjgVB/sl&#43;70yJEFk&#43;2IeB/8U=" crossorigin="anonymous" media="screen" />
  
      
      
      <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
          integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
  
          
          <link
          href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i%7CRoboto:400,400i,700,700i&display=swap"
          rel="stylesheet">
  
      
  
      
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      
      <meta name="viewport" content="width=device-width, initial-scale=1" />
  
      <meta name="generator" content="Hugo 0.101.0" />
      
      <link rel="canonical" href="http://lomont.org/" />
      
      <link rel="alternate" type="application/rss&#43;xml" href="http://lomont.org/index.xml">
      
      <title>Lomont.org</title>
      
      <link rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.6/styles/atom-one-light.min.css">
  
          
      <script>
          imgBase1 = "/images/lomont/";
          var imgList1 = new Array("LomontHair", "LomontChild", "MadDogLomont2", "LomontCrazy", "Marky");
          imgPos1 = 0;
          function NextPic(idName, base, picList, posName) {
              if (document.images) {
                  imgPos1++;
                  if (imgPos1 == picList.length)
                      imgPos1 = 0;
                  document.getElementById(idName).src = base + picList[imgPos1] + ".jpg";
              }
          }
      </script>
  
  </head>
  
  <body>
      <header class="header" id="myHeader">
    <div>
      <h1><a href="/">Lomont.org</a></h1>
    <p>(Also <a href="http://www.lomonster.com">lomonster.com</a> and <a href="http://www.clomont.com">clomont.com</a>)</p>
  </div>
  
    
  <nav class="topnav" id="topnav">
      <div class="dropdown">
          <a href="/">Home</a>
      </div>
      <div class="dropdown">
          <button class="dropbtn">Writings & Talks
              
          </button>
          <div class="dropdown-content">
              <a href="/posts/">Blog</a>
              <a href="/talks/">Talks</a>
              <a href="/papers/">Papers</a>
          </div>
      </div>
      <div class="dropdown">
          <button class="dropbtn">Computing
              
          </button>
          <div class="dropdown-content">
              <a href="/software/">Software</a>
              <a href="/software/#screensavers">Screensavers</a>
              <a href="/graphics/">Graphics</a>
              <a href="/quantum-computing/">Quantum Computing</a>
          </div>
      </div>
      <div class="dropdown">
          <button class="dropbtn">Misc
              
          </button>
          <div class="dropdown-content">
              <a href="/math/">Math</a>
              <a href="/puzzles/">Puzzles</a>
              <a href="/riddles/">Riddles</a>
              <a href="/projects/">Projects</a>
              <a href="/lego/">Lego</a>
              <a href="/links/">Links</a>
              <a href="/categories/">Categories</a>
              <a href="/tags/">Tags</a>
          </div>
      </div>
      <div class="dropdown">
          <button class="dropbtn">Personal
              
          </button>
          <div class="dropdown-content">
              <a href="/about/">About</a>
              <a href="/gallery/">Photos</a>
              <a href="/contact/">Contact</a>
              <a href="/professional/">Resume</a>
          </div>
      </div>
      <a href="javascript:void(0);" class="icon" onclick="navfunc()">&#9776;</a>
      <script>
           
          function navfunc() {
              var x = document.getElementById("topnav");
              if (x.className === "topnav") {
                  x.className += " responsive";
              } else {
                  x.className = "topnav";
              }
          }      
      </script>
  </nav>
    
    
    
    <script type="text/javascript">
      MathJax = {
        tex: {
          displayMath: [['$$', '$$'], ['\\[', '\\]']],
          inlineMath: [['$', '$'], ['\\(', '\\)']],
        },
      };
    </script>
    <script
        async
        id="MathJax-script"
        src="https://cdn.jsdelivr.net/npm/mathjax@3.2.0/es5/tex-mml-chtml.js"
        integrity="sha384-+BSz3oj3ILMYvOBr16U9i0H4RZRmGyQQ+1q9eqr8T3skmAFrJk8GmgwgqlCZdNSo"
        crossorigin="anonymous"
        referrerpolicy="no-referrer"
        type="text/javascript"></script>
  
    
    
  
  </script>
  <script src=""></script>
  
    
  </header>
      
  
      
      
  
      <div class="content">
              <main class="col-8">
  
      
  
  <div id="main">
    <div id="intro">
      <p>This is the homepage of Chris Lomont, PhD. </p>
  
      <p>I am a co-founder of <a href="http://www.hypnocube.com">Hypnocube</a>, maker of fine blinky lights (and other
        tech items).</p>
      <p>I used to be a research scientist, working at
        <a href="http://www.cybernet.com/">Cybernet</a>, initially on quantum
        computing, although later my time was been spent working on image
        processing and computer security. </p>
      <p>I have also been a game developer, a PhD student, <a href="http://www.hypnocube.com">small business owner</a>,
        and many other things.</p>
      <p>To see more about me, check out my <a href="/about/">about page</a>.</p>
  
      <hr /> 
    </div>
  
    
    
   
  <table id="eventTable">
    
    <tr>
      <th>Date</th>
      <th>Event</th>
    </tr>
  
    
    
    
    
    
  
    
    <tr>
      <td>Jul 26, 2024</td>
      <td>      
          <a href='http://lomont.org/posts/2024/minimaltictactoe/'>MinimalTicTacToe</a>
          <br/>
          <!-- raw HTML omitted -->
  <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 28, 2023</td>
      <td>      
          <a href='http://lomont.org/posts/2023/correctalphagammaforimages/'>Correct alpha and gamma for image processing</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jul 23, 2023</td>
      <td>      
          <a href='http://lomont.org/posts/2023/ios-png-errors/'>IOS PNG Errors</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jun 24, 2023</td>
      <td>      
          <a href='http://lomont.org/posts/2023/ssim/'>Problems using SSIM for image quality comparisons</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jun 6, 2023</td>
      <td>      
          <a href='http://lomont.org/posts/2023/accuratecolorconversions/'>Accurate color conversions</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Nov 22, 2022</td>
      <td>      
          <a href='http://lomont.org/posts/2022/buttondebouncing/'>Button debouncing and pattern matching</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 27, 2022</td>
      <td>      
          <a href='http://lomont.org/posts/2022/a-better-quadratic-formula-algorithm/'>A better quadratic formula algorithm</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 26, 2022</td>
      <td>      
          <a href='http://lomont.org/posts/2022/lomont-floating-point-notes/'>Lomont floating point notes</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Dec 7, 2020</td>
      <td>      
          <a href='http://lomont.org/posts/2020/rtk-gps-project/'>Rtk Gps Project</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jun 23, 2019</td>
      <td>      
          <a href='http://lomont.org/posts/2019/lines-of-code/'>Chris Lomont&#39;s lines of code over time</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jun 1, 2019</td>
      <td>      
          <a href='http://lomont.org/posts/2019/brief-csharp/'>New C# syntax and features</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>May 15, 2019</td>
      <td>      
          <a href='http://lomont.org/talks/2019/thirty-algorithms/'>30 Algorithms in 60 Minutes</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Feb 25, 2019</td>
      <td>      
          <a href='http://lomont.org/talks/2019/quantum-computing/'>Computation: Theory, Methods, Limitations, and the Future</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jul 21, 2018</td>
      <td>      
          <a href='http://lomont.org/talks/2018/intro-to-wireless/'>Intro to Wireless Communications</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Apr 2, 2018</td>
      <td>      
          <a href='http://lomont.org/talks/2018/crypto-practices-2018/'>Cryptography Best Practices 2018</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Mar 14, 2018</td>
      <td>      
          <a href='http://lomont.org/talks/2018/intro-to-functional-programming/'>Intro to Functional Programming with F#</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jan 10, 2018</td>
      <td>      
          <a href='http://lomont.org/talks/2018/meltdown/'>Meltdown and Modern CPU Architecture</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Nov 19, 2017</td>
      <td>      
          <a href='http://lomont.org/talks/2017/distance-ladder/'>The Cosmic Distance Ladder</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Nov 1, 2017</td>
      <td>      
          <a href='http://lomont.org/posts/2017/walking-ant/'>Walking Ant Probability Problem</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jun 19, 2017</td>
      <td>      
          <a href='http://lomont.org/talks/2017/overview-of-cryptology/'>Overview of Cryptology</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>May 1, 2017</td>
      <td>      
          <a href='http://lomont.org/posts/2017/fractran/'>A Universal FRACTRAN Interpreter in FRACTRAN</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Mar 5, 2017</td>
      <td>      
          <a href='http://lomont.org/posts/2017/unit-random/'>Generating Uniform Random Numbers on [0,1]</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Feb 21, 2017</td>
      <td>      
          <a href='http://lomont.org/posts/2017/divisibility-testing/'>Efficient divisibility testing</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Sep 17, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/2017/making-three-not-gates/'>Making Three NOT Gates from Two</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 29, 2016</td>
      <td>      
          <a href='http://lomont.org/compression-notes/'>Compression Notes</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 29, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/2016/embedded-compression/'>LZCL: An embedded compression library</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 23, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/2016/random-segment-length/'>Average segment length</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 23, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/2016/how-many-prisoners/'>How many prisoners?</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Aug 23, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/2016/pick-a-number/'>Pick a Number</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jul 1, 2016</td>
      <td>      
          <a href='http://lomont.org/posts/site-test/'>Test site features</a>
          <br/>
          <!-- raw HTML omitted -->
        </td>
      
    </tr>
    
    <tr>
      <td>Jan 1, 0001</td>
      <td>      
          <a href='http://lomont.org/posts/2023/colorconversions/'></a>
          <br/>
          Color Conversions This is a quick note for converting byte values colors in 0-255 back and forth to floating-point colors in 0-1.
  The Problem A common (yet incorrect) method (shown in C++) looks like this:
  1 2 3 4 5 6 7 8 9 10 11 12 #include &lt;cstdint&gt; // uint8_t // byte color in 0-255 to 32-bit float in 0-1 float ColorU8ToF32_BAD(uint8_t colorB) { return colorB/255.0f; } uint8_t ColorF32ToU8_BAD(float colorF) { return (uint8_t)(colorF*255.
        </td>
      
    </tr>
    
  
  
    
    <tr>
      <td>July 10, 2016</td>
      <td>After many years of letting this site langush, mostly because it was getting obsolete technology wise (1998 technology!),
  making it hard to update nicely, I have finally started a new website at <!-- raw HTML omitted --><a href="https://www.clomont.com">www.clomont.com</a><!-- raw HTML omitted -->.
  My plan is to merge most of this content into it, hopefully keeping a lot of the more popular links and items at the same
  relative locations, then move the new site back to here, and point all my personal sites to the new one.</td>
    </tr>
    
    <tr>
      <td>Oct 10, 2012</td>
      <td>I added an C# implementation of the newly released SHA3 hash algorithm
  on my <!-- raw HTML omitted -->software page<!-- raw HTML omitted -->, and a program to compute file hashes.
  <!-- raw HTML omitted -->Here is a zipfile of the VS2012 project (11MB)<!-- raw HTML omitted -->, and
  <!-- raw HTML omitted -->here is the
  implementation as a HTML file<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Aug 5, 2012</td>
      <td>I added a small, <!-- raw HTML omitted -->single source file QR-Code generator<!-- raw HTML omitted --> to my
  <!-- raw HTML omitted -->software<!-- raw HTML omitted --> page. I also added a QR code embedding a zipfile with a QR code generator in it :)</td>
    </tr>
    
    <tr>
      <td>July 16, 2012</td>
      <td>I added a nice logic puzzle and solution to my new
  <!-- raw HTML omitted -->Riddles<!-- raw HTML omitted --> page. The logic puzzle is titled &ldquo;How many Prisoners?&rdquo;</td>
    </tr>
    
    <tr>
      <td>June 8, 2012</td>
      <td>I updated the <!-- raw HTML omitted -->source<!-- raw HTML omitted -->
  and <!-- raw HTML omitted -->executable<!-- raw HTML omitted -->
  for my small disk utilization utility, DiskInfo. See
  <!-- raw HTML omitted -->my software page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>June 8, 2012</td>
      <td><!-- raw HTML omitted -->Here is a page<!-- raw HTML omitted --> describing a recent art installation Gene and I did in Seaham, UK.</td>
    </tr>
    
    <tr>
      <td>June 8, 2012</td>
      <td>Here are slides for a talk I have given recently:
  <!-- raw HTML omitted -->Introduction to the Lambda Calculus<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>June 8, 2012</td>
      <td>It&rsquo;s been a long time since an update, mostly since I have been very busy. Here are slides for
  a talk I have given recently: <!-- raw HTML omitted -->Computability and Computation<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Oct 8, 2011</td>
      <td>Over the
  weekend I got it in my head to disassemble the sound ROM on the Williams
  arcade boards to generate old school arcade sounds from the original
  algorithms. <!-- raw HTML omitted -->Here is a page<!-- raw HTML omitted -->
  with initial notes and some C# code that reproduces the original
  cycle-accurate algorithms. Here are some sample results, decimated down in
  sample rate to 44.1khz WAV files:
  <!-- raw HTML omitted -->one<!-- raw HTML omitted -->,
  <!-- raw HTML omitted -->two<!-- raw HTML omitted -->,
  <!-- raw HTML omitted -->three<!-- raw HTML omitted -->,
  <!-- raw HTML omitted -->four<!-- raw HTML omitted -->,
  <!-- raw HTML omitted -->five<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Oct 7, 2011</td>
      <td>I added a <!-- raw HTML omitted -->project page<!-- raw HTML omitted --> on a
  nice wooden torus I designed and made out of laser cut wood. Included
  are template files and source code the generate the geometry.</td>
    </tr>
    
    <tr>
      <td>Sep 27, 2011</td>
      <td>Here is a is a command line tool (CodeStats,
  <!-- raw HTML omitted -->29K executable<!-- raw HTML omitted -->,
  <!-- raw HTML omitted -->31K project file<!-- raw HTML omitted -->) that gathers statistics about source code in C#, C++, C. Read more on the<!-- raw HTML omitted --> software page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Sep 20, 2011</td>
      <td><!-- raw HTML omitted -->Here (PDF, 223K)<!-- raw HTML omitted --> is a detailed exposition of how to prove
  <!-- raw HTML omitted -->R. Sabey&rsquo;s 2004 pandigital
  approximation (1+9^-(6*7))^3^(2^85) to e<!-- raw HTML omitted --> is accurate to 18457734525360901453873570 digits
  (including the leading 2).</td>
    </tr>
    
    <tr>
      <td>Sep 12, 2011</td>
      <td>I extended my previous C# FFT code to allow for various conventions that
  different fields use in definig the FFT. This should make it easier to
  adapt to your specific uses. Have fun. Read the
  <!-- raw HTML omitted -->PDF about it<!-- raw HTML omitted -->, download the
  <!-- raw HTML omitted -->C# file<!-- raw HTML omitted -->, view
  <!-- raw HTML omitted -->the code<!-- raw HTML omitted -->, or get the whole
  <!-- raw HTML omitted -->VS 2010 project<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Aug 29, 2011</td>
      <td>I posted notes for a talk I gave showing how space and time intertwine to form spacetime. A simple. clear, complete derivation is given of the Lorenz Transform
  and what it implies. Experimental evidence is listed.
  <!-- raw HTML omitted -->Here is a 1MB PDF<!-- raw HTML omitted -->, and here is my
  <!-- raw HTML omitted -->talks page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Aug 25, 2011</td>
      <td>Posted an update to the SHA-3 candidate code for
  <!-- raw HTML omitted -->Skein<!-- raw HTML omitted --> since they updated their specification somewhat. I&rsquo;ve been busy and not posted most of the things
  I have been working on over the past few months. Hopefully I can fix that soon.
  <!-- raw HTML omitted -->HypnoCube<!-- raw HTML omitted --> sales are taking off and keeping the shipping pipeline from China to
  here to retailers takes some time. Tomorrow I give a talk about special relativity with an especially direct and simple derivation of the Lorenz Transform. I will post it soon.</td>
    </tr>
    
    <tr>
      <td>June 19, 2011</td>
      <td>Bug fix to the SSIM code. Did not dispose of the Bitmap immediately after use, leaving the file handle locked until GC kicked in. Now IDisposable is respected.
  I also fixed an error in the WELL512 implementation and an error in my
  uniform spread algorithm in my survey article on random number generation.</td>
    </tr>
    
    <tr>
      <td>June 3, 2011</td>
      <td><!-- raw HTML omitted -->This article (1.5MB PDF)<!-- raw HTML omitted --> is an introduction to Intel&rsquo;s Advanced Vector Extensions (AVX), written for their developer network.
  It covers the new registers, feature detection, assembler and compiler
  support, and an example using C++ intrisics. The appendix is a brief listing
  of all the AVX functions.
  <!-- raw HTML omitted -->Here is the C++ project described in the article (10MB zipfile).<!-- raw HTML omitted --></td>
    </tr>
    
    <tr>
      <td>Apr 7, 2011</td>
      <td>It&rsquo;s been a while since I posted something due to general business. Yesterday I gave the Don Buckeye talk at Eastern Michigan University to a group of faculty and students. The topic was
  showing how a common device (I chose an iPhone for the concrete example) requires sophisticated mathematics to design and implement. I showed how each math class that an undergrad could take
  and even many graduate courses are required to cover the full breadth of technologies.
  <!-- raw HTML omitted -->Here is a link to the PPT<!-- raw HTML omitted -->
  (and <!-- raw HTML omitted -->PDF<!-- raw HTML omitted -->) slides (including many I did not have time to show). A recording was taken
  which I will post if I can get a copy.</td>
    </tr>
    
    <tr>
      <td>Sept 12, 2010</td>
      <td>I added several projects to the <!-- raw HTML omitted -->software<!-- raw HTML omitted --> page. All are C# programs with sourcecode included. One is an
  <!-- raw HTML omitted -->x86 Intel binary disassembler<!-- raw HTML omitted --> with PE file reader. One is a
  <!-- raw HTML omitted -->Chess interface<!-- raw HTML omitted -->.
  One is a <!-- raw HTML omitted -->Planet Wars<!-- raw HTML omitted --> simulation for making bots for the
  <!-- raw HTML omitted -->University of Waterloo competition<!-- raw HTML omitted -->. The last is a
  <!-- raw HTML omitted -->4x4 Tic Tac Toe<!-- raw HTML omitted --> retrograde analysis generator and interface to play with.</td>
    </tr>
    
    <tr>
      <td>Aug 2, 2010</td>
      <td>I added some content to the last post on laser-cut polyhedra, adding a new smaller version of the previous one.
  See <!-- raw HTML omitted -->project page<!-- raw HTML omitted --> for details.
  Other than that I&rsquo;ve been pretty busy with work, finishing the 8x8x8 HypnoCube, and coding for fun. Hopefully soon I&rsquo;ll redo this website, add a blog to start writing, and post some papers.</td>
    </tr>
    
    <tr>
      <td>Apr 25, 2010</td>
      <td>My wife was out of town for two days recently, so I decided to work all night both nights playing with 3D shapes on the laser cutter.
  The result was I designed and built a neat translucent polyhedra (a
  <!-- raw HTML omitted -->
  truncated icosidodecahedron<!-- raw HTML omitted -->), about 20 inches across. Perhaps we&rsquo;ll
  sell them and related shapes as kits, since poeple seem to like them, and
  I designed a general way to construct them. See the
  <!-- raw HTML omitted -->project page<!-- raw HTML omitted --> for details,
  pictures, and DXF files for your own laser art.</td>
    </tr>
    
    <tr>
      <td>Apr 25, 2010</td>
      <td>I finally finished my &ldquo;Theory of Everything&rdquo; talk mentioned on the Nov 2007 post, and delivered it in three 1-hour talks.
  It explains the background for constructing theories of  everything
  by using symmetry groups to merge quantum mechanics and general
  relativity, motivating it to a technical but non-physicist audience.
  <!-- raw HTML omitted -->PPT<!-- raw HTML omitted --> and
  <!-- raw HTML omitted -->PDF<!-- raw HTML omitted --> are
  available on my talks page. It was motivated by Lisi&rsquo;s paper, &quot;<!-- raw HTML omitted -->An
  Exceptionally Simple Theory of Everything<!-- raw HTML omitted -->,&quot; but almost exclusively
  covers the background needed to understand the abstract.</td>
    </tr>
    
    <tr>
      <td>Apr 24, 2010</td>
      <td>At the request of Namco, I have redacted all information
  on my PacMan emulation pages that contain their material. My first Cease
  and Desist!</td>
    </tr>
    
    <tr>
      <td>Feb 7 30, 2010</td>
      <td>I added a small
  <!-- raw HTML omitted -->C# TCP/IP client/server architecture demo<!-- raw HTML omitted --> under
  <!-- raw HTML omitted -->Software<!-- raw HTML omitted -->. It consists of a small Server class, a small Client class, and a demo program.
  Developed for work on the <!-- raw HTML omitted -->8x8x8 HypnoCube<!-- raw HTML omitted -->, I&rsquo;m posting it here for others to use. There is a VS 2010 Beta 2 project file (zip).</td>
    </tr>
    
    <tr>
      <td>Jan 30, 2010</td>
      <td>I spent a few weeks in London and Paris, which was fun. Working on audio for the
  <!-- raw HTML omitted -->HypnoCube<!-- raw HTML omitted --> I ran into some Fourier Transform issues, so spent the last
  week designing and writing up a nice Fast Fourier Transform class in C#.
  It was designed to be small, free, decently performing. In the process I
  made a Real to Complex FFT that is twice as fast as the usual
  FFT,perfectly suited for Audio Processing. Read the
  <!-- raw HTML omitted -->PDF about it<!-- raw HTML omitted -->, download the
  <!-- raw HTML omitted -->C# file<!-- raw HTML omitted -->, view
  <!-- raw HTML omitted -->the code<!-- raw HTML omitted -->, or get the whole
  <!-- raw HTML omitted -->VS 2010 project<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Dec 7, 2009</td>
      <td>I posted a tool I wrote for investigating directory sizes on multiple drives and for finding duplicated files. Both an
  <!-- raw HTML omitted -->executable (400K)<!-- raw HTML omitted --> and a
  <!-- raw HTML omitted -->Visual Studio 2010 beta project
  (156K zip)<!-- raw HTML omitted -->
  are available. It was written in C#, and has some interesting WPF items such as an interactive pie chart and multithreaded tasks interacting with the UI nicely.
  See the <!-- raw HTML omitted -->software<!-- raw HTML omitted --> page for details.</td>
    </tr>
    
    <tr>
      <td>Dec 6, 2009</td>
      <td>I posted two articles I wrote for<!-- raw HTML omitted --> Game Programming Gems 8<!-- raw HTML omitted -->[amazon.com]. I was able to keep the copyright for publishing on the web, so I can post them here. The lamer of the articles is titled
  <!-- raw HTML omitted -->&ldquo;Secure Channel Communication&rdquo; (138K PDF)<!-- raw HTML omitted --> and is an overview of items to consider when designing game network protocols.
  The better article is
  <!-- raw HTML omitted -->&ldquo;Introduction to x64 Assembly&rdquo; (368K PDF)<!-- raw HTML omitted --> which covers many aspects of assembly
  programming on x64 systems, including register set overview (wuth MMX and SSE), assembler support, interfacing with C/C++, and details on the calling convention used on x64 systems. Both papers are on
  my <!-- raw HTML omitted -->papers page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Sept 4, 2009</td>
      <td>It&rsquo;s been a while since a post - I went climbing in Idaho, I bought a Robotron 2084 upright arcade machine, I wrote a lot of software, gave several talks, and have been busy. I posted a C# implementation for Structural Similarity Index (SSIM) image comparison under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->. Here is an <!-- raw HTML omitted -->executable<!-- raw HTML omitted -->, a <!-- raw HTML omitted -->HTML<!-- raw HTML omitted --> version of the code, and a <!-- raw HTML omitted -->project file<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>April 27, 2009</td>
      <td>I posted a C# implementation for arithmetic compression/decompression under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->. Here is the <!-- raw HTML omitted -->CS<!-- raw HTML omitted --> file and here is <!-- raw HTML omitted --><!-- raw HTML omitted -->ArithComp.html<!-- raw HTML omitted -->HTML<!-- raw HTML omitted --> of the code. Finally, here is a <!-- raw HTML omitted -->project file<!-- raw HTML omitted -->. Have fun.</td>
    </tr>
    
    <tr>
      <td>April 14, 2009</td>
      <td>I posted a C# implementation for a SkipList under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->. Here is the <!-- raw HTML omitted -->CS<!-- raw HTML omitted --> file and here is <!-- raw HTML omitted -->HTML<!-- raw HTML omitted --> of the code. Finally, here is a <!-- raw HTML omitted -->project file<!-- raw HTML omitted -->. Verdict - SkipList is better than .NETs SortedList, but worse than SortedDictionary. Oh well, it was a learning experience implementing all the interfaces.</td>
    </tr>
    
    <tr>
      <td>Mar 29, 2009</td>
      <td>I posted a global illumination renderer in C# on the <!-- raw HTML omitted -->software<!-- raw HTML omitted --> page. Command line <!-- raw HTML omitted -->EXE<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Sample Scene<!-- raw HTML omitted -->, and the <!-- raw HTML omitted -->complete sourcecode (VS2008 C#)<!-- raw HTML omitted --> are available.</td>
    </tr>
    
    <tr>
      <td>Mar 15, 2009</td>
      <td>I added another <!-- raw HTML omitted -->software<!-- raw HTML omitted --> item: a <!-- raw HTML omitted -->simple fullscreen WPF overlay app that demos simple physics.<!-- raw HTML omitted --> As usual it is placed on the software page, <!-- raw HTML omitted -->complete with C# sourcecode (VS2008 project file)<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Mar 8, 2009</td>
      <td>I added a few <!-- raw HTML omitted -->software<!-- raw HTML omitted --> items: a <!-- raw HTML omitted -->C# implementation of Skein<!-- raw HTML omitted -->, one of the hash functions contending for a SHA-3 candidate. I also added an interactive <!-- raw HTML omitted -->Mandelbrot C# program<!-- raw HTML omitted --> that can use multithreaded C#, SSE, OpenMP, and other methods to render mandelbrots in realtime. There is also a (very slow) infinite precision method included, all with source code. Runs under Vista x64.</td>
    </tr>
    
    <tr>
      <td>Jan 17, 2009</td>
      <td>During a trip to Key West, my wife wanted a Tetris game, so I wrote one in C#, .NET, and WPF. <!-- raw HTML omitted -->Source code <!-- raw HTML omitted -->is included on my <!-- raw HTML omitted -->software page<!-- raw HTML omitted -->. <!-- raw HTML omitted -->Here is a zipfile<!-- raw HTML omitted --> with the exe and config file (119K).</td>
    </tr>
    
    <tr>
      <td>Dec 11, 2008</td>
      <td>I <!-- raw HTML omitted -->posted a program<!-- raw HTML omitted --> with source that converts Visual Studio code into HTML under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->. Here is an <!-- raw HTML omitted -->example<!-- raw HTML omitted --> of the output the program makes, and <!-- raw HTML omitted -->here is the exe<!-- raw HTML omitted -->, and <!-- raw HTML omitted -->here is a zipfile<!-- raw HTML omitted --> of the (Visual Studio 2008, .NET 3.5, C#) source tree. Happy hacking :)</td>
    </tr>
    
    <tr>
      <td>Dec 2, 2008</td>
      <td>Over the last two months I have been doing the <!-- raw HTML omitted -->Project Euler (<a href="https://www.projecteuler.net">www.projecteuler.net</a>)<!-- raw HTML omitted --> problems in C# (and some in the new Mathematica 7!) to learn the language better. Over the Thanksgiving weekend I finally finished all of the current (219 of 219) problems. I (username <!-- raw HTML omitted -->lomont<!-- raw HTML omitted -->) am usually ranked in the top 10 of 50,000+ users and now want to get the top score, then I may retire from the competition. I also may post hints and/or solutions to the problems on my website.</td>
    </tr>
    
    <tr>
      <td>Oct 22, 2008</td>
      <td>Been busy again :)  I have a lot of items to post, but only time to do a few. So here is a very detailed description of <!-- raw HTML omitted --><!-- raw HTML omitted -->PacmanEmulation.htm<!-- raw HTML omitted -->Pac-Man hardware<!-- raw HTML omitted -->, and here is
  a <!-- raw HTML omitted --><!-- raw HTML omitted -->PacmanASM.html<!-- raw HTML omitted -->commented disassembly<!-- raw HTML omitted --> of the Z80 sourcecode. Also posted is a XP and Vista usuable <!-- raw HTML omitted -->FMTracker<!-- raw HTML omitted --> ported from my old DOS days FMTracker. I added OPL2 chip
  emulation to make it usuable without needing the old ADLib chips. Included are songs and complete C++ sourcecode. See the <!-- raw HTML omitted -->software page<!-- raw HTML omitted --> for more. Things I hope to post soon are a paper I wrote
  on embedding data in zip (RFC1950) files in the choices made during the compression phase. This came about writing a better compressor for .NET in C# than the
  included deflatestreams, which are horribly broken.</td>
    </tr>
    
    <tr>
      <td>July 20, 2008</td>
      <td>It&rsquo;s been a busy four months. I bought a house, among other things. Here is a talk I gave in May titled &ldquo;<!-- raw HTML omitted -->C# for C++ Programmers<!-- raw HTML omitted -->.&rdquo; As much as I hate to admit it, C# is a very good language, and using it makes me a lot more productive. Currently the seminar I run at work, &quot;Weekly Programming Fun,&quot; is covering a lot of C# development. Many programmers are learning it at Cybernet. <!-- raw HTML omitted -->
  I also changed hosts, so this site is still on shaky ground, and my email is slightly flaky. Finally we&rsquo;ve been seling a lot of <!-- raw HTML omitted -->HypnoCubes<!-- raw HTML omitted --> and <!-- raw HTML omitted -->HypnoSquares<!-- raw HTML omitted -->; at sometimes it takes a bit of time and scheduling to keep things flowing smoothly.<!-- raw HTML omitted -->
  A final note - we&rsquo;re back on finishing the 8x8x8 HypnoCubes, and have switched (tentatively) from the <!-- raw HTML omitted -->Gumstix<!-- raw HTML omitted --> to an <!-- raw HTML omitted -->EmbeddedArm TS-7800<!-- raw HTML omitted -->, which is a sweet SBC.</td>
    </tr>
    
    <tr>
      <td>March 23, 2008</td>
      <td>I updated my Lego program from last time to make a <!-- raw HTML omitted -->nice screensaver<!-- raw HTML omitted -->, including many models. The Screensaver assembles/disassembles LEGO models, and includes C# sourcecode. Check out the Screensavers section of my <!-- raw HTML omitted -->software page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Feb 24, 2008</td>
      <td>I added <!-- raw HTML omitted -->program (with C# sourcecode)<!-- raw HTML omitted --> to view LEGO CAD files to the <!-- raw HTML omitted -->software page<!-- raw HTML omitted -->. It is my first C# program, and comprises a weekends worth of work, totalling about 2500 lines of code. There is no way I could have done this so quickly in C++, so I may have to start doing all my play coding in C#. I also built the behemoth 1800+ piece Technic <!-- raw HTML omitted -->8421 Mobile Crane<!-- raw HTML omitted --> LEGO kit and posted pics and a video on my <!-- raw HTML omitted -->LEGO page<!-- raw HTML omitted -->. To top off the LEGO triumvirate posting, for testing my viewer I modeled the Technic Kits <!-- raw HTML omitted -->854 Go Kart<!-- raw HTML omitted --> and Technic <!-- raw HTML omitted -->853 Car Chassis<!-- raw HTML omitted --> from my childhood and posted the ML-CAD files to my <!-- raw HTML omitted -->LEGO page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Feb 8, 2008</td>
      <td>Games Programming Gems 7 was released [<!-- raw HTML omitted -->amazon.com<!-- raw HTML omitted -->], and due to copyright deals I worked out I am able to post my two articles on my <!-- raw HTML omitted -->papers page<!-- raw HTML omitted -->. The first one deals with implementing subdivision surfaces (<!-- raw HTML omitted -->PDF 254K<!-- raw HTML omitted -->) for geometry, including details on creases, corners, textures, normals, data structures, and pointers for high performance implementations, all in one handy place. The second one is an overview of various pseudo-random number generation (PRNG) algorithms (<!-- raw HTML omitted -->PDF 136K<!-- raw HTML omitted -->), and presents fast code for a very useful class of PRNGs introducued by L&rsquo;Ecuyer, the WELL algorithms. These are better than the popular Mersenne Twister in many ways, and were constructed by the same researchers.</td>
    </tr>
    
    <tr>
      <td>Nov 18, 2007</td>
      <td>I posted slides (<!-- raw HTML omitted -->PowerPoint<!-- raw HTML omitted -->, <!-- raw HTML omitted -->PDF<!-- raw HTML omitted -->, <!-- raw HTML omitted -->PowerPoint 2007<!-- raw HTML omitted -->) on my <!-- raw HTML omitted -->papers and talks page<!-- raw HTML omitted --> for a talk I gave recently on Special Relativity to a group of engineers. The point was to
  derive E=mc<!-- raw HTML omitted -->2<!-- raw HTML omitted --> from simple ideas. There is also historical and biographical information leading up the ideas of Special Relativity. Coming soon:
  <!-- raw HTML omitted -->Garrett Lisi&rsquo;<!-- raw HTML omitted -->   <!-- raw HTML omitted -->&ldquo;An Exceptionally Simple Theory of Everything&rdquo;<!-- raw HTML omitted --> for engineers and non-physics scientists. Although likely not the final Theory of Everything, it contains a lot of fascinating math and shows how theoretical physics fits reality to beautiful symmetries.</td>
    </tr>
    
    <tr>
      <td>Oct 14, 2007</td>
      <td>I recently analyzed in depth the <!-- raw HTML omitted -->Excel 2007 formatting bug<!-- raw HTML omitted -->. <!-- raw HTML omitted -->Here is a link <!-- raw HTML omitted -->to my results page, <!-- raw HTML omitted -->here is the PDF (500KB) <!-- raw HTML omitted -->and <!-- raw HTML omitted -->here is a link to my papers<!-- raw HTML omitted --> page where it is canonically referenced. Enjoy, and send comments/corrections.</td>
    </tr>
    
    <tr>
      <td>Sept 4, 2007</td>
      <td>I just returned from a Labor Day hiking/biking trip in the Upper Penninsula. Fun fun :)  <!-- raw HTML omitted -->
  Also I posted a <!-- raw HTML omitted -->solution<!-- raw HTML omitted --> on my <!-- raw HTML omitted -->puzzle page<!-- raw HTML omitted --> to a 51 piece wooden burr puzzle at the request of a puzzle collector.</td>
    </tr>
    
    <tr>
      <td>Aug 21, 2007</td>
      <td>I added a 256-color demo for the CoCo3 to my <!-- raw HTML omitted -->Color Computer (CoCo)<!-- raw HTML omitted --> page. It includes assembly code. Use as directed.</td>
    </tr>
    
    <tr>
      <td>Aug 18, 2007</td>
      <td>I was recently (well, now a few months ago) offered a job at <!-- raw HTML omitted -->Google<!-- raw HTML omitted --> in Mountain View, California. After consulting with my wifey, we decided not to take the job. However the interview process was interesting, long, and harder than any I&rsquo;ve ever heard of. However, I answered all their questions, and hope to post a complete story about it soon (after I review my legal requirements!)</td>
    </tr>
    
    <tr>
      <td>Aug 18, 2007</td>
      <td>I spent today (Saturday) reworking a Lemmings tool I wrote over a weekend about a year ago. It is now ready for primetime. It can decode six DOS Lemmings games, and is the base for a Lemmings clone I hope to do. Go directly to the <!-- raw HTML omitted -->Lemmings page<!-- raw HTML omitted -->, or get the <!-- raw HTML omitted -->exe as a 115KB zipfile download<!-- raw HTML omitted --> (requires .NET 2.0). Or check out the <!-- raw HTML omitted -->software page<!-- raw HTML omitted --> for general software goodness.</td>
    </tr>
    
    <tr>
      <td>Aug 2, 2007</td>
      <td>I just returned from a two week climbing, hiking, and shooting trip in Idaho. Along the trip I made a big update to my <!-- raw HTML omitted -->Color Computer Hardware Reference<!-- raw HTML omitted -->(1MB, PDF). See my <!-- raw HTML omitted -->Color Computer Page<!-- raw HTML omitted --> for the announcement.</td>
    </tr>
    
    <tr>
      <td>July 7, 2007</td>
      <td>After a recent discussion of how many digits of a transcendental number could be computed in a finite amount of RAM, I concluded that the Thue-Morse constant is likely the best candidate for the transcendental number. I wrote a program on an old 8-bit computer (the TRS-80 Color Computer 3) that computed the TM constant to a massive 10^314013 digits (but it will never practically finish - the Univers will end first). See my <!-- raw HTML omitted -->Color Computer Page<!-- raw HTML omitted --> for assembly sourcecode and a program using similar techniques to compute 287273 digits of e.</td>
    </tr>
    
    <tr>
      <td>May 17, 2007</td>
      <td>Under <!-- raw HTML omitted -->Software<!-- raw HTML omitted --> I posted an <!-- raw HTML omitted -->Ataxx<!-- raw HTML omitted --> game clone (<!-- raw HTML omitted -->2.8MB zipfile<!-- raw HTML omitted -->) I wrote. It plays quite strongly (I cannot beat it above level 3, and I am usually good at such games). Have fun!</td>
    </tr>
    
    <tr>
      <td>May 6, 2007</td>
      <td>Under <!-- raw HTML omitted -->Software<!-- raw HTML omitted --> I posted a 6309/6809 disassembler (<!-- raw HTML omitted -->115K zipfile<!-- raw HTML omitted -->) I wrote. I also updated my <!-- raw HTML omitted -->Color Computer Page<!-- raw HTML omitted --> with some info and my intended plan to write a C compiler (with certain C++ extensions for making cleaner code).</td>
    </tr>
    
    <tr>
      <td>Apr 6, 2007</td>
      <td>Under <!-- raw HTML omitted -->papers<!-- raw HTML omitted -->, Misc other writings, I added a detailed explanation of how I developed (as a beginner) an exploit for the recent ANI file handling vulnerabilty under Microsoft Windows NT, 2000, XP, 2003, and Vista. Here is a <!-- raw HTML omitted -->PDF (183K)<!-- raw HTML omitted --> detailing the flaw and attack, and here is a <!-- raw HTML omitted --><!-- raw HTML omitted -->ExploitANI.zip<!-- raw HTML omitted -->zipfile (193K)<!-- raw HTML omitted --> with related files. Rename the cursors back to ANI at your own risk!</td>
    </tr>
    
    <tr>
      <td>Mar 17, 2007</td>
      <td>Under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->, I added a <!-- raw HTML omitted -->C++/CLI implementation of Conway&rsquo;s Game of Life (6MB, source and 4000+patterns)<!-- raw HTML omitted -->, using Bill Gosper&rsquo;s HashLife algorithm. The program comes with sourcecode, and is about 5000 lines of C++ code. Also included are 4000+ patterns collected from around the web.</td>
    </tr>
    
    <tr>
      <td>Mar 16, 2007</td>
      <td>Under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->, I added a <!-- raw HTML omitted -->C++ Four Fours program (36K)<!-- raw HTML omitted -->. This program figures out how to write positive integers using only four 4&rsquo;s, and user selected operators. For example, 12 = 4*(4-4/4), 10 = sqrt(4)*4 + 4/sqrt(4), etc. Output is a CSV file easily viewed in Excel.</td>
    </tr>
    
    <tr>
      <td>Jan 25, 2007</td>
      <td>For a break from trying to get our 8x8x8 cube running (damn Linux under Gumstix makes hardware hacking troublesome), I decided to write some compression routines. I wanted most of all a fast, small overhead decompression engine, for adding data to embedded items. I started making up a method, which turned out to be a variant of LZ77/LZSS, but I think my handling of literal runs makes my method compress better. For small datasets it outperforms the common and slick <!-- raw HTML omitted -->QuickLZ<!-- raw HTML omitted --> library. Hooray! My attempt to make a compression routine is apparently a decent one! The result is under my Utilities section in under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->, or you can jump directly to <!-- raw HTML omitted -->this page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Dec 27, 2006</td>
      <td>Under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->, I added a spinning cube (<!-- raw HTML omitted -->61K exe<!-- raw HTML omitted -->), each face containing a zooming in and out Mandelbrot set, rendered using a GLSL Pixel Shader (requires at least shader model 3.0). Hopefully I&rsquo;ll clean the source and release source soon.</td>
    </tr>
    
    <tr>
      <td>Dec 21, 2006</td>
      <td>I updated my free <!-- raw HTML omitted -->Sudoku<!-- raw HTML omitted -->[Wikipedia] program, fixing some painting problems and adding some niceties. Click <!-- raw HTML omitted -->here<!-- raw HTML omitted --> to get the executable, and <!-- raw HTML omitted -->here<!-- raw HTML omitted --> to see the page. It is useful for creating and finding solutions to puzzles, but is very much a beta (representing about 20 hours of work in my spare time). Oddly enough, one University of Michigan Engineering Freshman person wanted me to write such a program for his <!-- raw HTML omitted -->programming assignment<!-- raw HTML omitted --> (I looked him up from his email, and Googled the assignment). What is the world coming to when even UM Engineering students try this type of cheating?</td>
    </tr>
    
    <tr>
      <td>Nov 4 , 2006</td>
      <td>I uploaded a command line utility (ren2.exe) with C++ sourcecode to do file renaming using regular expressions to the software utilities section. This allows you to do much more powerful group file renames, and has a html preview to show how files will be renamed before doing the changes. It is beta, so please send any feedback on it.</td>
    </tr>
    
    <tr>
      <td>Aug 18, 2006</td>
      <td>I uploaded a <!-- raw HTML omitted -->rectangle packing program with C++ source (104K)<!-- raw HTML omitted --> to the <!-- raw HTML omitted -->software page<!-- raw HTML omitted -->, utilities section. This program visually packs a list of rectangles into a given rectangle as best as it can, and is fast. Since the general problem is NP-complete, there is no known efficient algorithm. Future improvements could allow rotations of the rectangle, and a 2 pass version to get better packing. Uses include part placement, texture map merging, and many others.</td>
    </tr>
    
    <tr>
      <td>Aug 9, 2006</td>
      <td>I have uploaded a BETA version of an <!-- raw HTML omitted -->online password hasher<!-- raw HTML omitted -->. Let me know of improvements, errors, or if the entire idea is flawed.</td>
    </tr>
    
    <tr>
      <td>Aug 9, 2006</td>
      <td>Due to numerous requests for me to release my <!-- raw HTML omitted -->Metaballs Screensaver<!-- raw HTML omitted --> without the nag screen, I have done so. Pick it up from the <!-- raw HTML omitted -->Screensaver<!-- raw HTML omitted --> page.</td>
    </tr>
    
    <tr>
      <td>Jul 25, 2006</td>
      <td>I spent the weekend in retro-computing, developing an assembly-code mandelbrot renderer for my TRS-80 Color Computer 3. The resulting sourcecode, emulator and development information, and programs are under the <!-- raw HTML omitted -->software page<!-- raw HTML omitted --> or the direct <!-- raw HTML omitted -->Color Computer Page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Jun 20, 2006</td>
      <td>Gene and I finally turned on our site to sell our 3D LED cubes, at <!-- raw HTML omitted --><a href="https://www.hypnocube.com">www.hypnocube.com</a><!-- raw HTML omitted -->. We now have 4x4x4 RGB cubes for sale as kits and completed cubes. Be sure to check out the <!-- raw HTML omitted -->videos<!-- raw HTML omitted --> and the <!-- raw HTML omitted -->instructions<!-- raw HTML omitted --> on how to build such a cube! Hopefully soon I will finish the pages on this site for the Hypnocube.</td>
    </tr>
    
    <tr>
      <td>Jun 19, 2006</td>
      <td>I implemented a <!-- raw HTML omitted -->Loop subdivision renderer (104K)<!-- raw HTML omitted --> in OpenGL/C++, which I placed under the <!-- raw HTML omitted -->software section<!-- raw HTML omitted -->. It is not optimized, since I plan to implement the full gamut of corners, boundaries, normal interpolation, texturing, color interpolation, and creases before trying to make it fast. A final version might be GPU based if I have time.</td>
    </tr>
    
    <tr>
      <td>Apr 2, 2006</td>
      <td>Due to numerous requests for code to my Logitech G15 keyboard <!-- raw HTML omitted -->system info tool<!-- raw HTML omitted -->, I added a download for the <!-- raw HTML omitted -->source<!-- raw HTML omitted --> (124K). For details, look for the G15 tool on my <!-- raw HTML omitted -->software/utilities<!-- raw HTML omitted --> page or the <!-- raw HTML omitted -->direct G15Tool page<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Mar 11, 2006</td>
      <td>I added a new <!-- raw HTML omitted -->system info tool<!-- raw HTML omitted --> that runs on the Logitech G15 keyboard screen. Check out my <!-- raw HTML omitted -->software/utilities<!-- raw HTML omitted --> section or the <!-- raw HTML omitted -->direct page<!-- raw HTML omitted --> for more info. Also posted under <!-- raw HTML omitted -->software/games<!-- raw HTML omitted --> are a <!-- raw HTML omitted -->TicTacToe engine<!-- raw HTML omitted --> with source and a <!-- raw HTML omitted -->Zombie Infection Simulation<!-- raw HTML omitted --> with source. I wrote both to help train developers where I work - they implement various sample brains to learn about C/C++ and AI development in a more interesting manner than usual.</td>
    </tr>
    
    <tr>
      <td>Mar 11, 2006</td>
      <td>Sorry it&rsquo;s been so long since a post. I have been travelling and playing (Vegas, Acapulco, NY), building a new PC, and writing several interesting programs I hope to post later today. Gene Foulk and I continued building our 3D LED cube (<!-- raw HTML omitted -->Main Page<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part I<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part II<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part III<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part IV<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Videos<!-- raw HTML omitted -->). We have created nice PCBs, cases, and a new 4096 color RGB 4x4x4 cube. We also registered the website <!-- raw HTML omitted --><a href="https://www.hypnocube.com">www.hypnocube.com</a><!-- raw HTML omitted --> for selling these cubes as soon as we work out some final issues. Stay tuned!</td>
    </tr>
    
    <tr>
      <td>Dec 3, 2005</td>
      <td>Gene Foulk and I continued building a LED cube (<!-- raw HTML omitted -->Main Page<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part I<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part II<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part III<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Videos<!-- raw HTML omitted -->). We added some pictures of the new 8x8x8 cube, and show a lot of the work involved. Improvements to the 4x4x4 cube include: many more programming features, rock solid images, more visualizations, more symmetries, more transitions, PCB and case design, and almost production quality results. We hope to have kits for sale soon, and are working to get them manufactured and placed in stores.</td>
    </tr>
    
    <tr>
      <td>Sept 30, 2005</td>
      <td>I added a preliminary <!-- raw HTML omitted -->Sudoku<!-- raw HTML omitted -->[Wikipedia] program, free for download. Click <!-- raw HTML omitted -->here<!-- raw HTML omitted --> to get the executable, and <!-- raw HTML omitted -->here<!-- raw HTML omitted --> to see the page. It is useful for creating and finding solutions to puzzles, but is very much a beta (representing about 10 hours of work in my spare time).</td>
    </tr>
    
    <tr>
      <td>Sept 4, 2005</td>
      <td>Gene Foulk and I continued building a LED cube (<!-- raw HTML omitted -->Main Page<!-- raw HTML omitted -->, <!-- raw HTML omitted --><!-- raw HTML omitted --><!-- raw HTML omitted -->Part I<!-- raw HTML omitted -->, <!-- raw HTML omitted -->Part II<!-- raw HTML omitted -->) This past month we added a lot of programming and hardware modifications, resulting in a 256 color LED cube. See the <!-- raw HTML omitted -->new page<!-- raw HTML omitted --> for details, or click <!-- raw HTML omitted -->here (15MB)<!-- raw HTML omitted --> and <!-- raw HTML omitted -->here (15MB)<!-- raw HTML omitted --> for the latest videos.</td>
    </tr>
    
    <tr>
      <td>August 5, 2005</td>
      <td>An article titled &ldquo;Floating point tricks&rdquo; was accepted to appear in the book series <!-- raw HTML omitted -->Games Programming Gems<!-- raw HTML omitted -->, in volume 6, appearing spring 2006. This article shows how one can design fast algorithms by using clever access of the bit representations of the IEEE 754 floating point format, which is de facto on most computer and video game consoles. For a more detailed abstract see my <!-- raw HTML omitted -->papers page<!-- raw HTML omitted -->. For complete details, buy the book!</td>
    </tr>
    
    <tr>
      <td>July 31, 2005</td>
      <td>Gene Foulk and I started building a LED Cube (<!-- raw HTML omitted -->Main Page<!-- raw HTML omitted -->, <!-- raw HTML omitted --><!-- raw HTML omitted --><!-- raw HTML omitted -->Part I<!-- raw HTML omitted --><!-- raw HTML omitted --><!-- raw HTML omitted -->). This weekend we made a 4x4x4 bicolor prototype controlled from an 18F4620 PIC. We will beef it up over the next few weeks and build two large cubes (one each, greedy bastards&hellip;), at least 8x8x8 and perhaps as large as 13x13x13. It all depends on cost, timing problems, current drain, and moon phase&hellip;..</td>
    </tr>
    
    <tr>
      <td>June 17, 2005</td>
      <td>My <!-- raw HTML omitted -->superballs prank<!-- raw HTML omitted --> won the <!-- raw HTML omitted -->Gold Medal on a Gizmodo office prank contest<!-- raw HTML omitted -->. I have a <!-- raw HTML omitted -->page<!-- raw HTML omitted --> on this site for the <!-- raw HTML omitted -->video<!-- raw HTML omitted -->, which was hosted once at <!-- raw HTML omitted -->Purdue&rsquo;s math<!-- raw HTML omitted --> site. However, the resulting traffic caused them to pull the page. Go to my <!-- raw HTML omitted -->Superball Prank<!-- raw HTML omitted --> page for more!</td>
    </tr>
    
    <tr>
      <td>June 7, 2005</td>
      <td>I updated my high-performance, free <!-- raw HTML omitted -->AES code<!-- raw HTML omitted -->. It now has a much easier to use interface, and supports some block chaining modes for increased security. You can find it under <!-- raw HTML omitted -->software<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>May 11, 2005</td>
      <td>I added two new <!-- raw HTML omitted -->papers<!-- raw HTML omitted -->. &ldquo;<!-- raw HTML omitted -->Taming the floating-point beast<!-- raw HTML omitted -->&rdquo; details methods to improve floating point comparison performance, in some cases by a factor of 20! The other is a <!-- raw HTML omitted -->solution to a hard integral problem<!-- raw HTML omitted --> I have doodled with since high school.</td>
    </tr>
    
    <tr>
      <td>Feb 24, 2005</td>
      <td>I released a beta version of an <!-- raw HTML omitted -->MP3 ID3v1 and ID3v2 tag editing tool<!-- raw HTML omitted --> called <!-- raw HTML omitted -->&quot;Chris Lomont&rsquo;s TagTastic TagRasterizer&quot;<!-- raw HTML omitted --> under my <!-- raw HTML omitted -->Software\Utilities<!-- raw HTML omitted --> section. It is more featured than most (probably all) commercial ones. It is written in C++.NET. Let me know how it works for you!</td>
    </tr>
    
    <tr>
      <td>Feb 24, 2005</td>
      <td>I added a section for a new consulting (removed 2019) business I am starting with some others I know, under the Consulting navigation link.</td>
    </tr>
    
    <tr>
      <td>Jan 20, 2005</td>
      <td>I rewrote the site using php, and updated the photos section. Now I only have to add some MySQL stuff to have a completely interactive website :)</td>
    </tr>
    
    <tr>
      <td>Jan 10, 2005</td>
      <td>I added a simple <!-- raw HTML omitted -->webcounter<!-- raw HTML omitted --> to the <!-- raw HTML omitted -->software page<!-- raw HTML omitted --> that I wrote while on a Christmas trip to Hawaii (Maui, to be specific).</td>
    </tr>
    
    <tr>
      <td>Nov 16, 2004</td>
      <td>Added pictures of some of my <!-- raw HTML omitted -->3D puzzles<!-- raw HTML omitted -->, and a <!-- raw HTML omitted -->page about a 3D burr puzzle<!-- raw HTML omitted --> I created.</td>
    </tr>
    
    <tr>
      <td>Nov 9, 2004</td>
      <td>Added a new screensaver - an <!-- raw HTML omitted -->animated Mandelbrot set screensaver<!-- raw HTML omitted --> that requires OpenGL and a fast video card. See the <!-- raw HTML omitted -->screensavers section<!-- raw HTML omitted --> for more!</td>
    </tr>
    
    <tr>
      <td>Oct 29, 2004</td>
      <td>Added version 0.43b of an emule client that does not share your files back (for you leeches out there). See the <!-- raw HTML omitted -->software<!-- raw HTML omitted --> section, under <!-- raw HTML omitted -->Miscellaneous<!-- raw HTML omitted -->. I also added a lot of <!-- raw HTML omitted -->photos<!-- raw HTML omitted --> to the site, so be sure to waste your time and my bandwidth by looking through them.</td>
    </tr>
    
    <tr>
      <td>Oct 21, 2004</td>
      <td>I placed a new paper, &ldquo;<!-- raw HTML omitted -->The Hidden Subgroup Problem - Review and Open Problems<!-- raw HTML omitted -->&rdquo; online at my <!-- raw HTML omitted -->Publications<!-- raw HTML omitted --> page. It covers what is known about the HSP (which is the central issue in quantum computing algorithms), corrects proofs, unifies notation, and presents a good overview of state of the art.</td>
    </tr>
    
    <tr>
      <td>Oct 19, 2004</td>
      <td>After trying to obtain historical stock data for simulations, and finding out how expensive it is to buy, I collected it myself. And now I will seriously undercut the other vendors! This <!-- raw HTML omitted -->page<!-- raw HTML omitted --> sells 700MB of <!-- raw HTML omitted -->historical stock data<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Oct 05, 2004</td>
      <td>Added three talks I give under my <!-- raw HTML omitted -->publications<!-- raw HTML omitted --> page. The talks are &quot;<!-- raw HTML omitted -->Quantum Computing 101<!-- raw HTML omitted -->,&quot; &quot;<!-- raw HTML omitted -->Math and Videogames<!-- raw HTML omitted -->,&quot; and &quot;<!-- raw HTML omitted -->Mathematics and Insanity<!-- raw HTML omitted -->.&quot; I also added links to a joint column with Ed Pegg at <!-- raw HTML omitted -->MAA Online<!-- raw HTML omitted --> on <!-- raw HTML omitted -->Angelic and Evil Numbers<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Sep 24, 2004</td>
      <td>Added a 2D and 3D <!-- raw HTML omitted -->maze generation<!-- raw HTML omitted --> <!-- raw HTML omitted -->program<!-- raw HTML omitted --> with <!-- raw HTML omitted -->source<!-- raw HTML omitted --> under miscellaneous <!-- raw HTML omitted --> software<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Sep 20, 2004</td>
      <td>Added a <!-- raw HTML omitted -->page<!-- raw HTML omitted --> and videos <!-- raw HTML omitted -->(20MB)<!-- raw HTML omitted --> <!-- raw HTML omitted -->(8.5MB)<!-- raw HTML omitted --> for a practical joke I played at work involving <!-- raw HTML omitted -->two thousand superballs<!-- raw HTML omitted -->. You should see this if you like good jokes :)</td>
    </tr>
    
    <tr>
      <td>Sep 10, 2004</td>
      <td>Had a paper on geometric algebra accepted for publication in a book - <!-- raw HTML omitted -->publications<!-- raw HTML omitted -->. (Added a regular expression file renamer with source to utilities.) Update: somehow I lost my renamer&hellip;..</td>
    </tr>
    
    <tr>
      <td>Aug 08, 2004</td>
      <td>I added a lot of software to the <!-- raw HTML omitted -->Utilities<!-- raw HTML omitted --> and other computer sections, mostly stuff I have been playing with over the last few months. All are beta, but many are useful. Included are</p>
  <!-- raw HTML omitted --></td>
    </tr>
    
    <tr>
      <td>Jun, 2004</td>
      <td>Began rewriting website with CSS ideas from <!-- raw HTML omitted --><a href="https://www.kernelthread.com">www.kernelthread.com</a><!-- raw HTML omitted --> and <!-- raw HTML omitted --><a href="https://www.csszengarden.com">www.csszengarden.com</a><!-- raw HTML omitted -->, and with standards conforming XHTML.</td>
    </tr>
    
    <tr>
      <td>Apr 09, 2004</td>
      <td>I Added two papers to the <!-- raw HTML omitted -->math<!-- raw HTML omitted --> section: one on a quantum pattern matching algorithm, and one on a fast quantum algorithm for computing the Fourier transform over abelian groups.</td>
    </tr>
    
    <tr>
      <td>Mar 06, 2004</td>
      <td>Been a while since I updated this site. I've been busy writing code and trying to prove theorems. A recent work: the <!-- raw HTML omitted -->US Currency Screen Saver<!-- raw HTML omitted -->. View images <!-- raw HTML omitted -->here<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Sep 18, 2003</td>
      <td>Started giving a seminar on Quantum Computation at Purdue. See my new <!-- raw HTML omitted -->Quantum Computing<!-- raw HTML omitted --> page for details.</td>
    </tr>
    
    <tr>
      <td>Sep 08, 2003</td>
      <td>Added a <!-- raw HTML omitted -->new paper<!-- raw HTML omitted -->, proving doing convolution or correlation of quantum states is physically impossible, thereby ending research along those directions. See the math papers section, or <!-- raw HTML omitted --><a href="http://arxiv.org/abs/quant-ph/0309070">http://arxiv.org/abs/quant-ph/0309070</a><!-- raw HTML omitted --></td>
    </tr>
    
    <tr>
      <td>Aug 10, 2003</td>
      <td>New <!-- raw HTML omitted --> KnotSaver<!-- raw HTML omitted --> screen saver posted under <!-- raw HTML omitted -->software<!-- raw HTML omitted --> section, made of animated mathematical knots. See the <!-- raw HTML omitted -->pictures<!-- raw HTML omitted --> !</td>
    </tr>
    
    <tr>
      <td>Jul 13, 2003</td>
      <td>New paper posted: <!-- raw HTML omitted -->Quantum Circuit Identities<!-- raw HTML omitted --> under the <!-- raw HTML omitted -->papers<!-- raw HTML omitted --> section. In it I construct all one qubit identities of length less than four from a set of unitary operations.</td>
    </tr>
    
    <tr>
      <td>May 29, 2003</td>
      <td><!-- raw HTML omitted --></td>
    </tr>
    
    <tr>
      <td>Apr 26, 2003</td>
      <td><!-- raw HTML omitted --></td>
    </tr>
    
    <tr>
      <td>Mar 13, 2003</td>
      <td>Added a new screen saver - <!-- raw HTML omitted -->3D string art<!-- raw HTML omitted -->. See the <!-- raw HTML omitted -->screen savers page<!-- raw HTML omitted -->. It uses a very nice antialiased properly gamma corrected line algorithm from a paper by Nelson, which is the best line algorithm I have seen for doing nice work.</td>
    </tr>
    
    <tr>
      <td>Feb 28, 2003</td>
      <td>Added a <!-- raw HTML omitted -->paper<!-- raw HTML omitted --> under the math section explaining the magic constant <!-- raw HTML omitted -->0x5f3759df <!-- raw HTML omitted -->floating around the net for inverse square root code, and I show that <!-- raw HTML omitted -->0x5f375a86 <!-- raw HTML omitted -->is probably a better choice.</td>
    </tr>
    
    <tr>
      <td>Dec 20, 2002</td>
      <td>Posted a <!-- raw HTML omitted -->paper<!-- raw HTML omitted --> showing how to use fixed point math, polynomial approximation, and forward differencing to speed up numerous computer applications, with an example being a circular gradient fill algorithm.</td>
    </tr>
    
    <tr>
      <td>Nov 30, 2002</td>
      <td>Posted a <!-- raw HTML omitted -->paper<!-- raw HTML omitted --> showing a simple proof that the Utilities Problem is unsolvable. It is equivalent to the graph K3,3 being nonplanar.</td>
    </tr>
    
    <tr>
      <td>Nov 12, 2002</td>
      <td>Added files to the (new) professional section - <!-- raw HTML omitted -->resume<!-- raw HTML omitted -->, CV (removed 2019), and stuff needed for academic applications.</td>
    </tr>
    
    <tr>
      <td>Aug 10, 2002</td>
      <td>Added a program to solve cross sums - see the <!-- raw HTML omitted -->Computer Page<!-- raw HTML omitted --> or the <!-- raw HTML omitted -->direct link<!-- raw HTML omitted -->.</td>
    </tr>
    
    <tr>
      <td>Apr 20, 2002</td>
      <td>Updated a <!-- raw HTML omitted -->paper<!-- raw HTML omitted --> on curves for publication.</td>
    </tr>
    
    <tr>
      <td>Mar 07, 2002</td>
      <td>Expanded my <!-- raw HTML omitted -->LEGO page<!-- raw HTML omitted -->, with <!-- raw HTML omitted -->LEGO Mindstorms<!-- raw HTML omitted --> creations. I added a new <!-- raw HTML omitted -->Clock<!-- raw HTML omitted --> built with LEGO. I also added a <!-- raw HTML omitted -->file format converter<!-- raw HTML omitted --> that converts MLCAD LEGO CAD files into an intermediate text format, with all geometry simplified and normals smoothed, as well as a Real3D plugin that imports/exports the file format to make the process more flexible.</td>
    </tr>
    
    <tr>
  
endpoints.name: http://mail.lomont.org/favicon.ico
endpoints.html_title: Lomont.org
endpoints.supported_versions: HTTP/1.1
endpoints.banner: HTTP/1.1 200 OK
  Date:  <REDACTED>
  Server: Apache
  Strict-Transport-Security: max-age=63072000; includeSubDomains
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  Last-Modified: Mon, 23 Sep 2024 03:41:46 GMT
  Accept-Ranges: bytes
  Vary: Accept-Encoding
  Content-Encoding: gzip
  Cache-Control: max-age=3600, must-revalidate
  Content-Length: 20608
  Content-Type: text/html
  
endpoints.ip: 70.32.23.119
[binary data, 7 values, 175 bytes]