<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Lomont.org</title>
		<link>https://www.lomont.org/</link>
		<description>Recent content on Lomont.org</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Fri, 26 Jul 2024 07:50:18 -0400</lastBuildDate>
		
			<atom:link href="https://www.lomont.org/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>MinimalTicTacToe</title>
				<link>https://www.lomont.org/posts/2024/minimaltictactoe/</link>
				<pubDate>Fri, 26 Jul 2024 07:50:18 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2024/minimaltictactoe/</guid>
				<description>&lt;!--summary--&gt;&#xA;&lt;p&gt;Derivation of a minimal size tree for playing perfect tic tac toe&lt;/p&gt;</description>
			</item>
			<item>
				<title>Correct alpha and gamma for image processing</title>
				<link>https://www.lomont.org/posts/2023/correctalphagammaforimages/</link>
				<pubDate>Mon, 28 Aug 2023 18:40:19 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2023/correctalphagammaforimages/</guid>
				<description>&lt;p&gt;This is a note on the correct usage of alpha blending, pre-multiplied alpha, gamma correction, and linear colors for image processing.&lt;/p&gt;</description>
			</item>
			<item>
				<title>IOS PNG Errors</title>
				<link>https://www.lomont.org/posts/2023/ios-png-errors/</link>
				<pubDate>Sun, 23 Jul 2023 14:44:11 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2023/ios-png-errors/</guid>
				<description>&lt;p&gt;XCode corrupts PNG images for iOS builds. This post details the error.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Problems using SSIM for image quality comparisons</title>
				<link>https://www.lomont.org/posts/2023/ssim/</link>
				<pubDate>Sat, 24 Jun 2023 10:36:07 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2023/ssim/</guid>
				<description>&lt;p&gt;Variation among SSIM implementations make comparing results a mess. This version matches the output of the original, unlike most of those in common use as of 2023.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Accurate color conversions</title>
				<link>https://www.lomont.org/posts/2023/accuratecolorconversions/</link>
				<pubDate>Tue, 06 Jun 2023 07:12:30 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2023/accuratecolorconversions/</guid>
				<description>&lt;p&gt;This is a quick note for converting byte values colors in 0-255 back and forth to floating-point colors in 0-1 which avoids common errors.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Button debouncing and pattern matching</title>
				<link>https://www.lomont.org/posts/2022/buttondebouncing/</link>
				<pubDate>Tue, 22 Nov 2022 18:17:00 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2022/buttondebouncing/</guid>
				<description>&lt;p&gt;A robust, portable, extensible method for handling button presses when interfacing software and hardware.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A better quadratic formula algorithm</title>
				<link>https://www.lomont.org/posts/2022/a-better-quadratic-formula-algorithm/</link>
				<pubDate>Sat, 27 Aug 2022 08:12:01 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2022/a-better-quadratic-formula-algorithm/</guid>
				<description>&lt;p&gt;A robust algorithm for computing roots of quadratic equations, much better than common code.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lomont floating point notes</title>
				<link>https://www.lomont.org/posts/2022/lomont-floating-point-notes/</link>
				<pubDate>Fri, 26 Aug 2022 08:07:00 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2022/lomont-floating-point-notes/</guid>
				<description>&lt;p&gt;Notes on floating point issues, including lists of facts and theorems useful for algorithm development.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rtk Gps Project</title>
				<link>https://www.lomont.org/posts/2020/rtk-gps-project/</link>
				<pubDate>Mon, 07 Dec 2020 20:25:57 -0500</pubDate>
				<guid>https://www.lomont.org/posts/2020/rtk-gps-project/</guid>
				<description>&lt;p&gt;I built a RTK-GPS gadget and wrote enough software to do basic GNS tasks such as finding distances, decoding GPS NMEA and RTCM messages, finding intersections, and doing boundary detection.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s lines of code over time</title>
				<link>https://www.lomont.org/posts/2019/lines-of-code/</link>
				<pubDate>Sun, 23 Jun 2019 12:10:43 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2019/lines-of-code/</guid>
				<description>&lt;p&gt;Over decades I&amp;rsquo;ve written a lot of personal code. I made a bar chart race showing how many lines I&amp;rsquo;ve written in different languages over time.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Excel2007Bug</title>
				<link>https://www.lomont.org/papers/2007/excel-2007-bug/</link>
				<pubDate>Thu, 06 Jun 2019 22:15:58 -0400</pubDate>
				<guid>https://www.lomont.org/papers/2007/excel-2007-bug/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>EvilNumbers</title>
				<link>https://www.lomont.org/papers/2004/evil-numbers/</link>
				<pubDate>Thu, 06 Jun 2019 22:14:37 -0400</pubDate>
				<guid>https://www.lomont.org/papers/2004/evil-numbers/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&amp;#39;s Geometric Algebra page</title>
				<link>https://www.lomont.org/math/geometric-algebra/</link>
				<pubDate>Thu, 06 Jun 2019 22:12:33 -0400</pubDate>
				<guid>https://www.lomont.org/math/geometric-algebra/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Finite Fields page</title>
				<link>https://www.lomont.org/math/finite-fields/</link>
				<pubDate>Thu, 06 Jun 2019 22:11:13 -0400</pubDate>
				<guid>https://www.lomont.org/math/finite-fields/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>FourFours.nb</title>
				<link>https://www.lomont.org/math/four-fours/</link>
				<pubDate>Thu, 06 Jun 2019 22:09:52 -0400</pubDate>
				<guid>https://www.lomont.org/math/four-fours/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Superballs Page</title>
				<link>https://www.lomont.org/gallery/superballs/</link>
				<pubDate>Thu, 06 Jun 2019 22:08:06 -0400</pubDate>
				<guid>https://www.lomont.org/gallery/superballs/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page Videos</title>
				<link>https://www.lomont.org/projects/ledcube/ledvideo3/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:59 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/ledvideo3/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page Part 4</title>
				<link>https://www.lomont.org/projects/ledcube/ledcube4/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:51 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/ledcube4/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page Part 3</title>
				<link>https://www.lomont.org/projects/ledcube/ledcube3/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:49 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/ledcube3/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page Part 2</title>
				<link>https://www.lomont.org/projects/ledcube/ledcube2/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:47 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/ledcube2/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page Part 1</title>
				<link>https://www.lomont.org/projects/ledcube/ledcube1/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:45 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/ledcube1/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s LED Cube Page</title>
				<link>https://www.lomont.org/projects/ledcube/</link>
				<pubDate>Thu, 06 Jun 2019 22:02:43 -0400</pubDate>
				<guid>https://www.lomont.org/projects/ledcube/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s PhotoMosaic Page</title>
				<link>https://www.lomont.org/software/utilities/photomosaic/</link>
				<pubDate>Thu, 06 Jun 2019 22:00:06 -0400</pubDate>
				<guid>https://www.lomont.org/software/utilities/photomosaic/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>MiniCompress</title>
				<link>https://www.lomont.org/software/utilities/minicompress/</link>
				<pubDate>Thu, 06 Jun 2019 21:59:45 -0400</pubDate>
				<guid>https://www.lomont.org/software/utilities/minicompress/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>G15Info</title>
				<link>https://www.lomont.org/software/utilities/g15-info/</link>
				<pubDate>Thu, 06 Jun 2019 21:58:55 -0400</pubDate>
				<guid>https://www.lomont.org/software/utilities/g15-info/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>StockTrader</title>
				<link>https://www.lomont.org/software/stock-trader/</link>
				<pubDate>Thu, 06 Jun 2019 21:57:35 -0400</pubDate>
				<guid>https://www.lomont.org/software/stock-trader/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s SimpleWinApp Page</title>
				<link>https://www.lomont.org/software/misc/simple-win-app/</link>
				<pubDate>Thu, 06 Jun 2019 21:56:13 -0400</pubDate>
				<guid>https://www.lomont.org/software/misc/simple-win-app/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Robotron 2084 Page</title>
				<link>https://www.lomont.org/software/misc/robotron/</link>
				<pubDate>Thu, 06 Jun 2019 21:53:26 -0400</pubDate>
				<guid>https://www.lomont.org/software/misc/robotron/</guid>
				<description>&lt;p&gt;A page for Robotron 2084 hacking&lt;/p&gt;</description>
			</item>
			<item>
				<title>HPCalc</title>
				<link>https://www.lomont.org/software/misc/hpcalc/</link>
				<pubDate>Thu, 06 Jun 2019 21:52:57 -0400</pubDate>
				<guid>https://www.lomont.org/software/misc/hpcalc/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s AES Page</title>
				<link>https://www.lomont.org/software/misc/aes/</link>
				<pubDate>Thu, 06 Jun 2019 21:50:33 -0400</pubDate>
				<guid>https://www.lomont.org/software/misc/aes/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>MoneySaver</title>
				<link>https://www.lomont.org/software/graphics/moneysaver/</link>
				<pubDate>Thu, 06 Jun 2019 21:45:39 -0400</pubDate>
				<guid>https://www.lomont.org/software/graphics/moneysaver/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>MetaBalls</title>
				<link>https://www.lomont.org/software/graphics/metaballs/</link>
				<pubDate>Thu, 06 Jun 2019 21:44:13 -0400</pubDate>
				<guid>https://www.lomont.org/software/graphics/metaballs/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>KnotSaver</title>
				<link>https://www.lomont.org/software/graphics/knotsaver/</link>
				<pubDate>Thu, 06 Jun 2019 21:42:53 -0400</pubDate>
				<guid>https://www.lomont.org/software/graphics/knotsaver/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Knots</title>
				<link>https://www.lomont.org/software/graphics/knots/</link>
				<pubDate>Thu, 06 Jun 2019 21:41:52 -0400</pubDate>
				<guid>https://www.lomont.org/software/graphics/knots/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s MP3 Tag Editor</title>
				<link>https://www.lomont.org/software/utilities/tedit/</link>
				<pubDate>Thu, 06 Jun 2019 21:40:27 -0400</pubDate>
				<guid>https://www.lomont.org/software/utilities/tedit/</guid>
				<description>&lt;pre&gt;&lt;code&gt;&amp;lt;h3&amp;gt;MP3 Tag editor! &amp;lt;/h3&amp;gt;&#xA;&amp;lt;p&amp;gt;Here are some features and screenshots of my beta Tag Editor. &amp;lt;a href=&amp;quot;/contact/&amp;quot;&amp;gt;Let me know&amp;lt;/a&amp;gt; what you think! This requires .NET 1.1 or higher. Click &amp;lt;a href=&amp;quot;tedit.exe&amp;quot;&amp;gt;here to download&amp;lt;/a&amp;gt; it! (908K) &amp;lt;/p&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;boxed&#34;&gt;&#xA;    &lt;h3&gt;Warning!&lt;/h3&gt;&#xA;    &lt;p&gt;This software is BETA. Please do not use it on the only copy of your MP3 files. Edit your files with this, and once you are convinced it made the correct changes, commit them to your music collection. I use it on my files and have no problems, but your mileage may vary.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Sudoku Page</title>
				<link>https://www.lomont.org/software/games/sudoku/</link>
				<pubDate>Thu, 06 Jun 2019 21:37:44 -0400</pubDate>
				<guid>https://www.lomont.org/software/games/sudoku/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lommont&#39;s PacMan Page</title>
				<link>https://www.lomont.org/software/games/pacman/</link>
				<pubDate>Thu, 06 Jun 2019 21:35:56 -0400</pubDate>
				<guid>https://www.lomont.org/software/games/pacman/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Cross Sums page</title>
				<link>https://www.lomont.org/software/games/crosssums/</link>
				<pubDate>Thu, 06 Jun 2019 21:34:26 -0400</pubDate>
				<guid>https://www.lomont.org/software/games/crosssums/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Lemmings Page</title>
				<link>https://www.lomont.org/software/games/crack-lemmings/</link>
				<pubDate>Thu, 06 Jun 2019 21:33:09 -0400</pubDate>
				<guid>https://www.lomont.org/software/games/crack-lemmings/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Riddle Pages</title>
				<link>https://www.lomont.org/riddles/how-many-prisoners/</link>
				<pubDate>Thu, 06 Jun 2019 07:55:47 -0400</pubDate>
				<guid>https://www.lomont.org/riddles/how-many-prisoners/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Riddle Pages</title>
				<link>https://www.lomont.org/riddles/prisoners-in-limbo/</link>
				<pubDate>Thu, 06 Jun 2019 07:55:47 -0400</pubDate>
				<guid>https://www.lomont.org/riddles/prisoners-in-limbo/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Quantum Computing Seminar page</title>
				<link>https://www.lomont.org/quantum-computing/seminar2003/</link>
				<pubDate>Thu, 06 Jun 2019 07:51:50 -0400</pubDate>
				<guid>https://www.lomont.org/quantum-computing/seminar2003/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s 51 Piece Burr Puzzle Solution</title>
				<link>https://www.lomont.org/puzzles/51-burr-soln/</link>
				<pubDate>Thu, 06 Jun 2019 07:49:20 -0400</pubDate>
				<guid>https://www.lomont.org/puzzles/51-burr-soln/</guid>
				<description>&lt;p&gt;A solution to a nice 51 piece burr.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Puzzle Pics</title>
				<link>https://www.lomont.org/puzzles/puzzle-pics/</link>
				<pubDate>Thu, 06 Jun 2019 07:49:20 -0400</pubDate>
				<guid>https://www.lomont.org/puzzles/puzzle-pics/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s a few of my puzzles&lt;/p&gt;&#xA;&lt;p&gt;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;  &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;script src=&#34;https://code.jquery.com/jquery-1.12.4.min.js&#34; integrity=&#34;sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&lt;script src=&#34;https://www.lomont.org/resources/js/load-photoswipe.js&#34;&gt;&lt;/script&gt;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css&#34; integrity=&#34;sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css&#34; integrity=&#34;sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xD;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js&#34; integrity=&#34;sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js&#34; integrity=&#34;sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp&#34; tabindex=&#34;-1&#34; role=&#34;dialog&#34; aria-hidden=&#34;true&#34;&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp__bg&#34;&gt;&lt;/div&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp__scroll-wrap&#34;&gt;&#xD;&#xA;    &#xD;&#xA;    &lt;div class=&#34;pswp__container&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &#xD;&#xA;    &lt;div class=&#34;pswp__ui pswp__ui--hidden&#34;&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__top-bar&#34;&gt;&#xD;&#xA;      &#xD;&#xA;      &lt;div class=&#34;pswp__counter&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--close&#34; title=&#34;Close (Esc)&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--share&#34; title=&#34;Share&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--fs&#34; title=&#34;Toggle fullscreen&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--zoom&#34; title=&#34;Zoom in/out&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &#xD;&#xA;      &#xD;&#xA;      &lt;div class=&#34;pswp__preloader&#34;&gt;&#xD;&#xA;        &lt;div class=&#34;pswp__preloader__icn&#34;&gt;&#xD;&#xA;          &lt;div class=&#34;pswp__preloader__cut&#34;&gt;&#xD;&#xA;            &lt;div class=&#34;pswp__preloader__donut&#34;&gt;&lt;/div&gt;&#xD;&#xA;          &lt;/div&gt;&#xD;&#xA;        &lt;/div&gt;&#xD;&#xA;      &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__share-modal pswp__share-modal--hidden pswp__single-tap&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__share-tooltip&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--left&#34; title=&#34;Previous (arrow left)&#34;&gt;&#xD;&#xA;    &lt;/button&gt;&#xD;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--right&#34; title=&#34;Next (arrow right)&#34;&gt;&#xD;&#xA;    &lt;/button&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__caption&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__caption__center&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;&lt;/div&gt;&#xD;&#xA;&#xA;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://www.lomont.org/resources/css/hugo-easy-gallery.css&#34; /&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;gallery caption-position-bottom caption-effect-slide hover-effect-zoom hover-transition&#34; itemscope itemtype=&#34;http://schema.org/ImageGallery&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Ball1.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Ball1.jpg&#34; alt=&#34;Ball1&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Ball1&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Ball1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Ball2.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Ball2.jpg&#34; alt=&#34;Ball2&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Ball2&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Ball2.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr1.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr1.jpg&#34; alt=&#34;Burr1&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr1&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr2.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr2.jpg&#34; alt=&#34;Burr2&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr2&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr2.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr3.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr3.jpg&#34; alt=&#34;Burr3&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr3&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr3.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr4.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr4.jpg&#34; alt=&#34;Burr4&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr4&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr4.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr5.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr5.jpg&#34; alt=&#34;Burr5&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr5&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr5.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr6.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr6.jpg&#34; alt=&#34;Burr6&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr6&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr6.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr7.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr7.jpg&#34; alt=&#34;Burr7&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr7&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr7.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//puzzles/puzzlepics//Burr8.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//puzzles/puzzlepics//Burr8.jpg&#34; alt=&#34;Burr8&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;Burr8&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Laser Cut Torus Page</title>
				<link>https://www.lomont.org/projects/torusart/</link>
				<pubDate>Thu, 06 Jun 2019 07:47:29 -0400</pubDate>
				<guid>https://www.lomont.org/projects/torusart/</guid>
				<description>&lt;p&gt;A laser cut torus&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Seaham Project Page</title>
				<link>https://www.lomont.org/projects/seaham/</link>
				<pubDate>Thu, 06 Jun 2019 07:46:07 -0400</pubDate>
				<guid>https://www.lomont.org/projects/seaham/</guid>
				<description>&lt;p&gt;An art installation in the UK&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Laser Cut Truncated Icosidodecahedron Page</title>
				<link>https://www.lomont.org/projects/laser-poly/</link>
				<pubDate>Thu, 06 Jun 2019 07:44:34 -0400</pubDate>
				<guid>https://www.lomont.org/projects/laser-poly/</guid>
				<description>&lt;p&gt;A lser cut polyhedron&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Lego Walker Page</title>
				<link>https://www.lomont.org/lego/walker-i/</link>
				<pubDate>Thu, 06 Jun 2019 07:41:09 -0400</pubDate>
				<guid>https://www.lomont.org/lego/walker-i/</guid>
				<description>&lt;p&gt;Summary&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Real3D Plugin Page</title>
				<link>https://www.lomont.org/lego/r3d-plugin/</link>
				<pubDate>Thu, 06 Jun 2019 07:39:26 -0400</pubDate>
				<guid>https://www.lomont.org/lego/r3d-plugin/</guid>
				<description>&lt;h1 &gt;Realsoft3D Lego Plugin&lt;/h1&gt;&#xA;&lt;p &gt;&amp;nbsp;&lt;/p&gt;&#xA;&lt;h3 &gt;THIS IS ALL BETA! Will release when tested better.&lt;/h3&gt;&#xA;&lt;p &gt;&amp;nbsp;&lt;/p&gt;&#xA;&lt;p &gt;Some sample output can be seen on the&#xA;&lt;a href=&#34;../clock-i/&#34;&gt;Clock I&lt;/a&gt; page.&lt;/p&gt;&#xA;&lt;p &gt;&amp;nbsp;&lt;/p&gt;&#xA;&lt;p &gt;An executable that converts a MLCAD file to a textfile is &#xA;found &lt;a href=&#34;Lego2R3D.exe&#34;&gt;here&lt;/a&gt;(200K). It takes a file for input, and outputs a file &amp;quot;name&amp;quot;.txtx in C:\ &#xA;right now. Will make more flexible later. Then place &lt;a href=&#34;Real3DTriset.dll&#34;&gt;&#xA;this &lt;/a&gt;DLL(73K) in the plugins directory of Real3D, and open the file.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Lego Clock page</title>
				<link>https://www.lomont.org/lego/clock-i/</link>
				<pubDate>Thu, 06 Jun 2019 07:36:37 -0400</pubDate>
				<guid>https://www.lomont.org/lego/clock-i/</guid>
				<description>&lt;p&gt;A Lego clock&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Burr Puzzle</title>
				<link>https://www.lomont.org/puzzles/lomont-burr/</link>
				<pubDate>Sun, 02 Jun 2019 19:41:07 -0400</pubDate>
				<guid>https://www.lomont.org/puzzles/lomont-burr/</guid>
				<description>&lt;p&gt;Testing pics&lt;/p&gt;&#xA;&lt;div class=&#34;boxed&#34;&gt;&#xA;    &lt;h3&gt;The Lomont Burr &lt;/h3&gt;&#xA;    &lt;p&gt;Here are the pictures of the Lomont Burr, a 2x3x4 burr which requires 3 moves before any piece can be removed. &lt;/p&gt;&#xA;    &lt;p&gt;Click on any pictures for larger versions. &lt;/p&gt;&#xA;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xA;    &lt;p&gt;Copyright Chris Lomont 2002-2006. All rights reserved. &lt;/p&gt;&#xA;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;boxed&#34;&gt;&#xA;    &lt;h3&gt;The design of the puzzle &lt;/h3&gt;&#xA;    &lt;p&gt;Here are two renderings of the puzzle, and a piece diagram and a solution, all generated by my custom software before I actually built a physical version. &lt;a href=&#34;https://www.lomont.org/puzzles/lomont-burr/LomontBurrAnim.avi&#34;&gt;Here is a link&lt;/a&gt; to a rendered video of the puzzle disassembling. &lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s TRS-80 Color Computer Page</title>
				<link>https://www.lomont.org/software/misc/coco/</link>
				<pubDate>Sun, 02 Jun 2019 18:55:31 -0400</pubDate>
				<guid>https://www.lomont.org/software/misc/coco/</guid>
				<description>&lt;div class=&#34;boxed&#34;&gt;&#xA;    &lt;h3&gt;256 color demo mode &lt;/h3&gt;&#xA;&#x9;&lt;div class=&#34;dates&#34;&gt;Aug 2007 &lt;/div&gt;&#xA;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#xA;    &lt;p&gt;Here is &lt;a href=&#34;color256/Color256.asm&#34;&gt;an assembly file&lt;/a&gt; (with included comments)  explaining a 256 color mode on the CoCo3 that may be suitable for games. It needs some more work to determine how fast one can animate with this method. Here is a &lt;a href=&#34;color256/COL256.dsk&#34;&gt;*.dsk&lt;/a&gt; file with the assembled program. LOAD&amp;quot;A and then EXEC. The program shows the 256 color image, and the assembly file can also do a 240 color mode using a different palette that may be better for gaming. &lt;br /&gt;&#xA;      &lt;br /&gt;&#xA;      Here are two images of the resulting palettes as displayed in Mathematica (where I attempted, unsuccessfully, to determine optimal palette values). The 240 color one is on the left, and the 256 color one is on the right. &lt;br /&gt;&#xA;      &lt;br /&gt;&#xA;      &lt;br /&gt;&#xA;      &lt;img src=&#34;color256/Pal240.png&#34; width=&#34;360&#34; height=&#34;359&#34; alt=&#34;Pal1&#34;/&gt;&lt;img src=&#34;color256/Pal256.png&#34; width=&#34;360&#34; height=&#34;359&#34; alt=&#34;Pal2&#34;/&gt;    &lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Terms of Use Page</title>
				<link>https://www.lomont.org/copyright/</link>
				<pubDate>Sun, 02 Jun 2019 15:56:26 -0400</pubDate>
				<guid>https://www.lomont.org/copyright/</guid>
				<description>&lt;p&gt;All content of this site is copyright Chris Lomont 1995-2020. You may not use material on this site for commercial uses withtout written permission. Anything on this site may be used for personal use, except where otherwise noted.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s About Page</title>
				<link>https://www.lomont.org/about/</link>
				<pubDate>Sun, 02 Jun 2019 15:51:40 -0400</pubDate>
				<guid>https://www.lomont.org/about/</guid>
				<description>&lt;p&gt;&lt;img id=&#34;Lomont&#34; onclick=&#34;NextPic(&#39;Lomont&#39;,imgBase1,imgList1,imgPos1)&#34; height=&#34;176&#34; alt=&#34;Lomont Picture&#34;&#xD;&#xA;src=&#34;https://www.lomont.org/images/lomont/LomontHair.jpg&#34; width=&#34;135&#34; /&gt;&lt;/p&gt;&#xA;&lt;div&gt;&#xD;&#xA;  &lt;p&gt;This is my personal website, where I can&#xD;&#xA;    vent some crazy ideas, give away some &lt;a href=&#34;https://www.lomont.org/software/&#34;&gt;software&lt;/a&gt;, and have my own internet real&#xD;&#xA;    estate.&lt;/p&gt;&#xD;&#xA;  &lt;p&gt;For starters, check out the &lt;a href=&#34;https://www.lomont.org/projects/ledcube/&#34;&gt;3D LED cube project&lt;/a&gt;, one of my current&#xD;&#xA;    playthings.&lt;/p&gt;&#xD;&#xA;  &lt;p&gt;This page has an overview of the things you may find here. Explore, and turn&#xD;&#xA;    out the lights when you leave. &lt;/p&gt;&#xD;&#xA;&lt;/div&gt;&#xD;&#xA;&lt;article class=&#34;info&#34;&gt;&#xD;&#xA;  &lt;h2&gt;Computers&lt;/h2&gt;&#xD;&#xA;  &lt;p&gt;Ever since third grade I have been fascinated with &lt;a href=&#34;https://www.lomont.org/software/&#34;&gt;computers&lt;/a&gt;, electronics,&#xD;&#xA;    and &lt;a href=&#34;https://www.lomont.org/lego/&#34;&gt;robots&lt;/a&gt;. Most of what I do professionally and for hobbies revolve around&#xD;&#xA;    this. My most time consuming hobby is programming things for fun, research,&#xD;&#xA;    and profit. See my computer page for more details.&lt;br /&gt;&#xD;&#xA;  &lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Graphics Page</title>
				<link>https://www.lomont.org/graphics/</link>
				<pubDate>Sun, 02 Jun 2019 15:51:40 -0400</pubDate>
				<guid>https://www.lomont.org/graphics/</guid>
				<description>&lt;div&gt;&#xD;&#xA;Graphics has always been my first love (and then there came&#xD;&#xA;chess, music, math, physics, and computers....)&#xD;&#xA;&lt;p&gt;The programs I use most are &lt;a href=&#34;http://www.realsoft.fi&#34;&gt;Real3D&lt;/a&gt;&#xA;and &lt;a href=&#34;http://www.mathematica.com&#34;&gt;Mathematica&lt;/a&gt;, as well&#xA;as many, many custom pieces of rendering and image processing&#xA;software. Recently I have written some code that renders the&#xA;spline outlines of TrueType fonts to make neat animations. I will&#xA;post the screensaver eventually&amp;hellip;.&lt;/p&gt;&#xA;&lt;p&gt;The background here is from a custom OpenGL polyhedron&#xA;rendering program I wrote for custom animations. Almost every&#xA;other graphic on this website was created by me.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Photos Gallery</title>
				<link>https://www.lomont.org/gallery/</link>
				<pubDate>Sun, 02 Jun 2019 15:51:40 -0400</pubDate>
				<guid>https://www.lomont.org/gallery/</guid>
				<description>&lt;script src=&#34;https://code.jquery.com/jquery-1.12.4.min.js&#34; integrity=&#34;sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&lt;script src=&#34;https://www.lomont.org/resources/js/load-photoswipe.js&#34;&gt;&lt;/script&gt;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css&#34; integrity=&#34;sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css&#34; integrity=&#34;sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=&#34; crossorigin=&#34;anonymous&#34; /&gt;&#xD;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js&#34; integrity=&#34;sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&lt;script src=&#34;https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js&#34; integrity=&#34;sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp&#34; tabindex=&#34;-1&#34; role=&#34;dialog&#34; aria-hidden=&#34;true&#34;&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp__bg&#34;&gt;&lt;/div&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;pswp__scroll-wrap&#34;&gt;&#xD;&#xA;    &#xD;&#xA;    &lt;div class=&#34;pswp__container&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__item&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &#xD;&#xA;    &lt;div class=&#34;pswp__ui pswp__ui--hidden&#34;&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__top-bar&#34;&gt;&#xD;&#xA;      &#xD;&#xA;      &lt;div class=&#34;pswp__counter&#34;&gt;&lt;/div&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--close&#34; title=&#34;Close (Esc)&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--share&#34; title=&#34;Share&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--fs&#34; title=&#34;Toggle fullscreen&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &lt;button class=&#34;pswp__button pswp__button--zoom&#34; title=&#34;Zoom in/out&#34;&gt;&lt;/button&gt;&#xD;&#xA;      &#xD;&#xA;      &#xD;&#xA;      &lt;div class=&#34;pswp__preloader&#34;&gt;&#xD;&#xA;        &lt;div class=&#34;pswp__preloader__icn&#34;&gt;&#xD;&#xA;          &lt;div class=&#34;pswp__preloader__cut&#34;&gt;&#xD;&#xA;            &lt;div class=&#34;pswp__preloader__donut&#34;&gt;&lt;/div&gt;&#xD;&#xA;          &lt;/div&gt;&#xD;&#xA;        &lt;/div&gt;&#xD;&#xA;      &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__share-modal pswp__share-modal--hidden pswp__single-tap&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__share-tooltip&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--left&#34; title=&#34;Previous (arrow left)&#34;&gt;&#xD;&#xA;    &lt;/button&gt;&#xD;&#xA;    &lt;button class=&#34;pswp__button pswp__button--arrow--right&#34; title=&#34;Next (arrow right)&#34;&gt;&#xD;&#xA;    &lt;/button&gt;&#xD;&#xA;    &lt;div class=&#34;pswp__caption&#34;&gt;&#xD;&#xA;      &lt;div class=&#34;pswp__caption__center&#34;&gt;&lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;    &lt;/div&gt;&#xD;&#xA;&lt;/div&gt;&#xD;&#xA;&#xA;&lt;p&gt;Photo galleries - todo - organize and display better, reinstate descriptions&lt;/p&gt;&#xA;&lt;p&gt;todo - only shows one set for now, make able to start many galleries from one page&lt;/p&gt;&#xA;&lt;h2 id=&#34;people&#34;&gt;People&lt;/h2&gt;&#xA;&#xD;&#xA;&lt;link rel=&#34;stylesheet&#34; href=&#34;https://www.lomont.org/resources/css/hugo-easy-gallery.css&#34; /&gt;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;gallery caption-position-bottom caption-effect-slide hover-effect-zoom hover-transition&#34; itemscope itemtype=&#34;http://schema.org/ImageGallery&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//gallery/people/family/AllCamping8.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//gallery/people/family/AllCamping8.jpg&#34; alt=&#34;All camping8&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;All camping8&lt;/p&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;/figcaption&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;a href=&#34;https://www.lomont.org//gallery/people/family/AllCamping8.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;/figure&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;div class=&#34;box&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;  &lt;figure itemprop=&#34;associatedMedia&#34; itemscope itemtype=&#34;http://schema.org/ImageObject&#34;&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;div class=&#34;img&#34; style=&#34;background-image: url(&#39;https://www.lomont.org//gallery/people/family/April_27_2003%20014.jpg&#39;);&#34; &gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://www.lomont.org//gallery/people/family/April_27_2003%20014.jpg&#34; alt=&#34;April 27 2003 014&#34; /&gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;    &lt;/div&gt;&#xD;&#xA;&#x9;&#x9;&#x9;      &lt;figcaption&gt;&#xD;&#xA;&#x9;&#x9;          &lt;p&gt;April 27 2003 014&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Links Page</title>
				<link>https://www.lomont.org/links/</link>
				<pubDate>Sun, 02 Jun 2019 15:48:27 -0400</pubDate>
				<guid>https://www.lomont.org/links/</guid>
				<description>&lt;div&gt;&#xA;&lt;p&gt;Super old links page from the 1990s :)&lt;/p&gt;&#xA;&lt;div class=&#34;center&#34;&gt;&#xA;    &lt;h2&gt;&#xA;        &lt;img src=&#34;https://www.lomont.org/images/spinloop.gif&#34; alt=&#34;&#34; width=&#34;70&#34; height=&#34;70&#34; /&gt;Links&lt;img src=&#34;https://www.lomont.org/images/spinloop.gif&#34; alt=&#34;&#34;&#xA;            width=&#34;70&#34; height=&#34;70&#34; /&gt;&lt;/h2&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;center&#34;&gt;&#xA;    &lt;strong&gt;here you&#39;ll find some things&#xA;        I use to waste time&lt;/strong&gt;&lt;/div&gt;&#xA;&lt;p&gt;I created this page from my Favorites (IE4.0) directory using&#xA;    a small tool I wrote &lt;a href=&#34;https://www.lomont.org/software/utilities/fav2html/Fav2HTML.exe&#34;&gt;Fav2HTML&lt;/a&gt; &lt;a&#xA;        href=&#34;https://www.lomont.org/software/utilities/fav2html/Fav2HTML.cpp&#34;&gt;(C++ source)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Topics: &lt;a href=&#34;#ComputerGamingAndProgramming&#34;&gt;Computer&#xA;        Gaming and Emulation,&lt;/a&gt; &lt;a href=&#34;#Programming&#34;&gt;Programming, &lt;/a&gt; &lt;a&#xA;        href=&#34;#GraphicsResources:&#34;&gt;Graphics,&lt;/a&gt; &lt;a href=&#34;#MathStuff&#34;&gt;Math Stuff,&lt;/a&gt; &lt;a href=&#34;#Music&#34;&gt;Music, &lt;/a&gt;&lt;a&#xA;        href=&#34;#Puzzles&#34;&gt;Puzzles,&lt;/a&gt; &lt;a href=&#34;#Misc&#34;&gt;Misc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;/p&gt;&#xA;&lt;hr /&gt;&#xA;&lt;p&gt;&#xA;    &lt;img src=&#34;https://www.lomont.org/images/spinloop.gif&#34; alt=&#34;&#34; width=&#34;70&#34; height=&#34;70&#34; /&gt;&lt;a id=&#34;ComputerGamingandProgramming&#34;&gt;Computer&#xA;        Gaming&lt;/a&gt;&#xA;    and Emulation&lt;/p&gt;&#xA;&lt;p&gt;Arcade Emulation&lt;/p&gt;&#xA;&lt;p&gt;&#xA;    &lt;a href=&#34;http://www.bethsoft.com/&#34;&gt;BETHESDA - Ars Est Celare&#xA;        Artem&lt;/a&gt;&lt;br /&gt;&#xA;    &lt;a href=&#34;http://www.verrando.com/arcade/&#34;&gt;Eclipse&#39;s Classic&#xA;        Arcade Emulator Page&lt;/a&gt;&lt;br /&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Baldurs&#39; Gate links&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.bgchronicles.com/&#34;&gt;Baldur&#39;s Gate&#xA;        Chronicles&lt;/a&gt;&lt;br /&gt;&#xA;    &lt;a href=&#34;http://forsite.net/soc/gate/&#34;&gt;Baldur&#39;s Gate Dungeon&lt;/a&gt;&lt;br /&gt;&#xA;    &lt;a href=&#34;http://www.geocities.com/TimesSquare/Arena/2460/bgate02.html&#34;&gt;GAMER&#39;S&#xA;        ARENA - Baldur&#39;s Gate Character Editor&lt;/a&gt;&lt;br /&gt;&#xA;    &lt;a href=&#34;http://www.mud-master.com/gatekeeper/&#34;&gt;Mud Master Beta&lt;/a&gt;&lt;br /&gt;&#xA;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Professional Page</title>
				<link>https://www.lomont.org/professional/</link>
				<pubDate>Sun, 02 Jun 2019 09:36:23 -0400</pubDate>
				<guid>https://www.lomont.org/professional/</guid>
				<description>&lt;p&gt;Here are some documents related to me. Happy hunting.&lt;/p&gt;&#xA;&lt;p&gt;Resume (&lt;a href=&#34;https://www.lomont.org/professional/resume.html&#34;&gt;HTML&lt;/a&gt;&#xA;, &lt;a href=&#34;https://www.lomont.org/professional/resume.pdf&#34;&gt;PDF&lt;/a&gt;&#xA;)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Online Password Hasher Page</title>
				<link>https://www.lomont.org/pw/</link>
				<pubDate>Sat, 01 Jun 2019 22:01:43 -0400</pubDate>
				<guid>https://www.lomont.org/pw/</guid>
				<description>&lt;script&gt;&#xA;&lt;!-- BEGIN - CHRIS LOMONT&#39;S ONLINE PASSWORD HASHER&#xA;&#xA;/*&#xA; * A JavaScript implementation of the Whirlpool hash function&#xA; * Version 1.0 Copyright (C) Chris Lomont 2006.&#xA; * See www.lomont.org for more info.&#xA; */&#xA;&#xA;// functions from the definition paper, see &#xA;// http://paginas.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html&#xA;&#xA;// finite field multiplication&#xA;function FieldMult(a, b)&#xA;&#x9;{ // multiply two field elements in GF(2^8) with poly x^8 + x^4 + x^3 + x^2 + 1&#xA;&#x9;  // finite field 2^8 is from poly x^8 + x^4 + x^3 + x^2 + 1, and then x is primitive&#xA;&#x9;var poly = 16+8+4+1; // overflow value&#xA;&#x9;var val = 0;&#xA;&#x9;while (0 != a)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;if (0 != (a&amp;1))&#xA;&#x9;&#x9;&#x9;val ^= b;&#xA;&#x9;&#x9;// divide a by x&#xA;&#x9;&#x9;a &gt;&gt;= 1;     &#xA;&#x9;&#x9;// multiply b by x&#xA;&#x9;&#x9;if (0 != (b&amp;128))&#xA;&#x9;&#x9;&#x9;b = (b&lt;&lt;1)^poly;&#xA;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;b &lt;&lt;= 1;&#xA;&#x9;&#x9;}&#xA;&#x9;return val&amp;255;&#xA;&#x9;} // FieldMult&#xA;&#xA;// returns m1*m2 as matrices&#xA;function MatrixMult(m1, m2)&#xA;&#x9;{&#xA;&#x9;var dest = new Array(64); // in case dest is one of the inputs&#xA;&#x9;// tij = sum m1_ik m2_kj&#xA;&#x9;for (var i = 0; i &lt;= 7; ++i)&#xA;&#x9;&#x9;for (var j = 0; j &lt;= 7; ++j)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;dest[8*i+j] = 0;&#xA;&#x9;&#x9;&#x9;for (var k = 0; k &lt;= 7; ++k)&#xA;&#x9;&#x9;&#x9;&#x9;dest[8*i+j] ^= FieldMult(m1[8*i+k],m2[8*k+j]);&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;return dest;&#xA;&#x9;} // MatrixMult&#xA;&#xA;// the SBox value using the table in the paper&#xA;function SBox(val)&#xA;&#x9;{&#xA;&#x9;var vals = [&#xA;&#x9;&#x9;0x18, 0x23, 0xc6, 0xE8, 0x87, 0xB8, 0x01, 0x4F, 0x36, 0xA6, 0xd2, 0xF5, 0x79, 0x6F, 0x91, 0x52,&#xA;&#x9;&#x9;0x60, 0xBc, 0x9B, 0x8E, 0xA3, 0x0c, 0x7B, 0x35, 0x1d, 0xE0, 0xd7, 0xc2, 0x2E, 0x4B, 0xFE, 0x57,&#xA;&#x9;&#x9;0x15, 0x77, 0x37, 0xE5, 0x9F, 0xF0, 0x4A, 0xdA, 0x58, 0xc9, 0x29, 0x0A, 0xB1, 0xA0, 0x6B, 0x85,&#xA;&#x9;&#x9;0xBd, 0x5d, 0x10, 0xF4, 0xcB, 0x3E, 0x05, 0x67, 0xE4, 0x27, 0x41, 0x8B, 0xA7, 0x7d, 0x95, 0xd8,&#xA;&#x9;&#x9;0xFB, 0xEE, 0x7c, 0x66, 0xdd, 0x17, 0x47, 0x9E, 0xcA, 0x2d, 0xBF, 0x07, 0xAd, 0x5A, 0x83, 0x33,&#xA;&#x9;&#x9;0x63, 0x02, 0xAA, 0x71, 0xc8, 0x19, 0x49, 0xd9, 0xF2, 0xE3, 0x5B, 0x88, 0x9A, 0x26, 0x32, 0xB0,&#xA;&#x9;&#x9;0xE9, 0x0F, 0xd5, 0x80, 0xBE, 0xcd, 0x34, 0x48, 0xFF, 0x7A, 0x90, 0x5F, 0x20, 0x68, 0x1A, 0xAE,&#xA;&#x9;&#x9;0xB4, 0x54, 0x93, 0x22, 0x64, 0xF1, 0x73, 0x12, 0x40, 0x08, 0xc3, 0xEc, 0xdB, 0xA1, 0x8d, 0x3d,&#xA;&#x9;&#x9;0x97, 0x00, 0xcF, 0x2B, 0x76, 0x82, 0xd6, 0x1B, 0xB5, 0xAF, 0x6A, 0x50, 0x45, 0xF3, 0x30, 0xEF,&#xA;&#x9;&#x9;0x3F, 0x55, 0xA2, 0xEA, 0x65, 0xBA, 0x2F, 0xc0, 0xdE, 0x1c, 0xFd, 0x4d, 0x92, 0x75, 0x06, 0x8A,&#xA;&#x9;&#x9;0xB2, 0xE6, 0x0E, 0x1F, 0x62, 0xd4, 0xA8, 0x96, 0xF9, 0xc5, 0x25, 0x59, 0x84, 0x72, 0x39, 0x4c,&#xA;&#x9;&#x9;0x5E, 0x78, 0x38, 0x8c, 0xd1, 0xA5, 0xE2, 0x61, 0xB3, 0x21, 0x9c, 0x1E, 0x43, 0xc7, 0xFc, 0x04,&#xA;&#x9;&#x9;0x51, 0x99, 0x6d, 0x0d, 0xFA, 0xdF, 0x7E, 0x24, 0x3B, 0xAB, 0xcE, 0x11, 0x8F, 0x4E, 0xB7, 0xEB,&#xA;&#x9;&#x9;0x3c, 0x81, 0x94, 0xF7, 0xB9, 0x13, 0x2c, 0xd3, 0xE7, 0x6E, 0xc4, 0x03, 0x56, 0x44, 0x7F, 0xA9,&#xA;&#x9;&#x9;0x2A, 0xBB, 0xc1, 0x53, 0xdc, 0x0B, 0x9d, 0x6c, 0x31, 0x74, 0xF6, 0x46, 0xAc, 0x89, 0x14, 0xE1,&#xA;&#x9;&#x9;0x16, 0x3A, 0x69, 0x09, 0x70, 0xB6, 0xd0, 0xEd, 0xcc, 0x42, 0x98, 0xA4, 0x28, 0x5c, 0xF8, 0x86&#xA;&#x9;&#x9;]; // 256 entries&#xA;&#x9;return vals[val];&#xA;&#x9;} // SBox&#xA;&#xA;// XOR src into dest bytewise, return dest&#xA;function XOR(dest, src)&#xA;&#x9;{&#xA;&#x9;for (var pos = 0; pos &lt; 64; ++pos)&#xA;&#x9;&#x9;dest[pos] ^= src[pos];&#xA;&#x9;} // XOR&#xA;&#xA;// compute the rho function from the paper&#xA;function ApplyRho(value, parameter)&#xA;&#x9;{ // compute rho[parameter](value)&#xA;&#x9;&#xA;&#x9;// apply gamma: applies SBox to each byte in value&#xA;&#x9;for (var pos = 0; pos &lt; 64; ++pos)&#xA;&#x9;&#x9;value[pos] = SBox(value[pos]);&#xA;&#xA;&#x9;// apply pi: cyclical permutation b_i,j = a_(i-j)mod 8, j&#xA;&#x9;var temp = new Array(64);&#xA;&#x9;for (var i = 0; i &lt; 8; ++i)&#xA;&#x9;&#x9;for (var j = 0; j &lt; 8; ++j)&#xA;&#x9;&#x9;&#x9;temp[8*i+j] = value[8*((i-j+8)&amp;7)+j];&#xA;&#x9;for (var i =0; i &lt; 64; ++i)&#xA;&#x9;&#x9;value[i] = temp[i]; // copy back&#xA;&#xA;&#x9;// apply theta: linear diffusion &#xA;&#x9;var C = [ // the constant matrix&#xA;&#x9;&#x9;0x01, 0x01, 0x04, 0x01, 0x08, 0x05, 0x02, 0x09,&#xA;&#x9;&#x9;0x09, 0x01, 0x01, 0x04, 0x01, 0x08, 0x05, 0x02,&#xA;&#x9;&#x9;0x02, 0x09, 0x01, 0x01, 0x04, 0x01, 0x08, 0x05,&#xA;&#x9;&#x9;0x05, 0x02, 0x09, 0x01, 0x01, 0x04, 0x01, 0x08,&#xA;&#x9;&#x9;0x08, 0x05, 0x02, 0x09, 0x01, 0x01, 0x04, 0x01,&#xA;&#x9;&#x9;0x01, 0x08, 0x05, 0x02, 0x09, 0x01, 0x01, 0x04,&#xA;&#x9;&#x9;0x04, 0x01, 0x08, 0x05, 0x02, 0x09, 0x01, 0x01,&#xA;&#x9;&#x9;0x01, 0x04, 0x01, 0x08, 0x05, 0x02, 0x09, 0x01&#xA;&#x9;&#x9;]; // 64 entries&#xA;&#x9;value = MatrixMult(value,C);&#xA;&#xA;&#x9;// apply sigma[parameter]: key addition&#xA;&#x9;XOR(value,parameter);&#xA;&#x9;return value;&#xA;&#x9;} // ApplyRho&#xA;&#xA;// update the round key&#xA;function NextKey(key, c, round)&#xA;&#x9;{ // compute next key and round constant&#xA;&#x9;// next constant&#xA;&#x9;for (var j = 0; j &lt;= 7; ++j)&#xA;&#x9;&#x9;c[j] = SBox(8*(round-1)+j);&#xA;&#xA;&#x9;key = ApplyRho(key,c);&#xA;&#x9;return key;&#xA;&#x9;} // NextKey&#xA;&#xA;// convert val to hex string&#xA;function Hex(val)&#xA;&#x9;{&#xA;&#x9;var txt = [&#xA;&#x9;&#x9;&#34;0&#34;,&#34;1&#34;,&#34;2&#34;,&#34;3&#34;,&#34;4&#34;,&#34;5&#34;,&#34;6&#34;,&#34;7&#34;,&#xA;&#x9;&#x9;&#34;8&#34;,&#34;9&#34;,&#34;A&#34;,&#34;B&#34;,&#34;C&#34;,&#34;D&#34;,&#34;E&#34;,&#34;F&#34;];&#xA;&#x9;var temp = &#34;&#34;;&#xA;&#x9;while (0 != val)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;temp = txt[val&amp;15] + temp;&#xA;&#x9;&#x9;val &gt;&gt;= 4;&#xA;&#x9;&#x9;}&#xA;&#x9;while (temp.length &lt; 2)&#xA;&#x9;&#x9;temp = &#34;0&#34; + temp;&#xA;&#x9;return temp;&#xA;&#x9;}&#xA;&#xA;// compute W[hash](data) function and store in W&#xA;function ComputeW(W, hash, data)&#xA;&#x9;{&#xA;&#x9;var key = new Array(64); // round key&#xA;&#x9;var c   = new Array(64); // round constant&#xA;&#x9;&#xA;&#x9;for (var i = 0; i &lt; 64; ++i)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;c[i]   = 0;       // zero out round constant ci&#xA;&#x9;&#x9;key[i] = hash[i]; // key = K0 = current hash, length 64&#xA;&#x9;&#x9;W[i]   = data[i]; // copy here - this is work space, length 64&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;&#xA;&#x9;XOR(W,key); // sigma[K0](data) = sigma[K0](ni) in paper&#xA;&#xA;&#x9;// do rounds - we need to compose the sigma(K^round) functions&#xA;&#x9;for (var round = 1; round &lt;= 10; ++round)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;key = NextKey(key,c,round); // next round key and constant computed&#xA;&#x9;&#x9;W   = ApplyRho(W,key);      // and applied to work state&#xA;&#x9;&#x9;}&#xA;&#x9;return W;&#xA;&#x9;} // ComputeW&#xA;&#xA;function HashBlock(hash, data)&#xA;&#x9;{&#xA;&#x9;var W = new Array(64); &#xA;&#x9;W = ComputeW(W,hash,data); // compute the W[Hi](ni) = W[hash](data) function and store in W&#xA;&#x9;XOR(hash,W);&#xA;&#x9;XOR(hash,data);&#xA;&#x9;} // HashBlock&#xA;&#xA;// hash a block of data, given the size&#xA;function Whirlpool(data, size)&#xA;&#x9;{&#xA;&#x9;var dataPtr = 0;&#xA;&#x9;var dataBlock = new Array(64); // one block of data to hash&#xA;&#x9;var hash      = new Array(64);&#xA;&#x9;for (var i = 0; i &lt; 64; ++i)&#xA;&#x9;&#x9;hash[i] = 0; // zero hash (IV - Initialization Vector)&#xA;&#xA;&#x9;// do blocks of data until not enough data left&#xA;&#x9;var tempSize = size;&#xA;&#x9;while (tempSize &gt;= 64)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;for (i = 0; i &lt; 64; ++i)&#xA;&#x9;&#x9;&#x9;dataBlock[i] = data[i+dataPtr];&#xA;&#x9;&#x9;HashBlock(hash,dataBlock);&#xA;&#x9;&#x9;dataPtr  += 64;&#xA;&#x9;&#x9;tempSize -= 64;&#xA;&#x9;&#x9;}&#xA;&#xA;&#x9;// append final bit, and length, as required by the spec&#xA;&#x9;var temp = new Array(64*2);&#xA;&#x9;for (var i = 0; i &lt; 64*2; ++i)&#xA;&#x9;&#x9;temp[i] = 0; // zero out - may need a lot of space&#xA;&#x9;&#xA;&#x9;for (var i = 0; i &lt; tempSize; ++i)&#xA;&#x9;&#x9;temp[i] = data[i+dataPtr]; // copy remaining data&#xA;&#x9;&#xA;&#x9;temp[tempSize] = 0x80;         // append final bit, next position&#xA;&#x9;&#xA;&#x9;var bits = size*8;&#xA;&#x9;if (tempSize &gt;= 64/2)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;// need 2 blocks - last one didn&#39;t leave 256 bits space for appending size&#xA;&#x9;&#x9;var tempPtr = 2*64-1; // start at back&#xA;&#x9;&#x9;while (bits &gt; 0)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;temp[tempPtr--] = (bits&amp;255);&#xA;&#x9;&#x9;&#x9;bits &gt;&gt;= 8;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;HashBlock(hash,temp);      // hash this block&#xA;&#x9;&#x9;for (var i = 0; i &lt; 64; ++i)&#xA;&#x9;&#x9;&#x9;dataBlock[i] = temp[i+64];&#x9;&#x9;&#xA;&#x9;&#x9;HashBlock(hash,dataBlock); // and this one&#xA;&#x9;&#x9;}&#xA;&#x9;else&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;// need 1 block - last one did leave 256 bits space for appending size&#xA;&#x9;&#x9;var tempPtr = 64-1; // start at back&#xA;&#x9;&#x9;while (bits &gt; 0)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;temp[tempPtr--] = (bits&amp;255);&#xA;&#x9;&#x9;&#x9;bits &gt;&gt;= 8;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;HashBlock(hash,temp); // hash this block&#xA;&#x9;&#x9;}&#xA;&#x9;return hash;&#xA;&#x9;} // Whirlpool&#xA;&#xA;// Convert a string to an array of bytes&#xA;function StringToBytes(str)&#xA;&#x9;{&#xA;&#x9;var arr = Array(str.length);&#xA;&#x9;for (var i = 0; i &lt; str.length; ++i)&#xA;&#x9;&#x9;arr[i] = str.charCodeAt(i)&amp;255;&#xA;&#x9;return arr;&#xA;&#x9;}&#xA;&#xA;// convert a string to a hexstring with the whirlpool hash&#xA;function HexWhirlpool(str)&#xA;&#x9;{ &#xA;&#x9;var hash;&#xA;&#x9;var temp = &#34;&#34;;&#xA;&#x9;str = StringToBytes(str); // todo unicode?&#xA;&#x9;hash = Whirlpool(str, str.length);&#xA;&#x9;for (var i = 0; i &lt; 64; ++i)&#xA;&#x9;&#x9;temp += Hex(hash[i]);&#xA;&#x9;return temp;&#xA;&#x9;}&#xA;&#xA;// divide array bigVal.val representing number by integer divisor &lt; 256, and &#xA;// return remainder in bigVal.remainder&#xA;// modifies bigVal&#xA;function DivideRemainder(bigVal, divisor)&#xA;&#x9;{&#xA;&#x9;var top = bigVal.val.length-1;&#xA;&#x9;if (top &lt; 0)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;bigVal.remainder = 0;&#xA;&#x9;&#x9;return; // nothing to do?!&#xA;&#x9;&#x9;}&#xA;&#x9;&#xA;&#x9;var answer   = new Array(); // our answer goes here&#xA;&#x9;var dividend = 0; // current dividend&#xA;&#x9;var ansPos   = 0; // current answer digit (reversed)&#xA;&#x9;var digit    = 0; // last digit added&#xA;&#x9;&#xA;&#x9;// standard long division&#xA;&#x9;while (top &gt;= -1)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;digit = Math.floor(dividend/divisor); // next digit&#xA;&#x9;&#x9;answer[ansPos++] = digit; // save digit&#xA;&#x9;&#x9;dividend = dividend-digit*divisor; // remove amount&#xA;&#x9;&#x9;if (top &gt;= 0)&#xA;&#x9;&#x9;&#x9;dividend = 256*dividend + bigVal.val[top]; // bring next digit down&#xA;&#x9;&#x9;--top;&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;&#xA;&#x9;bigVal.remainder = dividend;   // leftover&#xA;&#x9;&#xA;&#x9;// copy back reversed, strip off leading 0&#39;s&#xA;&#x9;bigVal.val = new Array();&#xA;&#x9;var firstNonzero = 0;&#xA;&#x9;while ((firstNonzero &lt; answer.length) &amp;&amp; (0 == answer[firstNonzero]))&#xA;&#x9;&#x9;firstNonzero++;&#xA;&#x9;var j = 0;&#xA;&#x9;for (var i = answer.length-1; i &gt;= firstNonzero; --i)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;bigVal.val[j++] = answer[i];&#xA;&#x9;&#x9;seenNonzero = true;&#xA;&#x9;&#x9;}&#xA;&#x9;} // DivideRemainder&#xA;&#xA;// convert an array of bytes representing a number to a string using only 62 character &#xA;// encoding with the whirlpool hash this is useful for generating password using only &#xA;// the 62 alphanumeric characters a-z, A-Z, 0-9&#xA;function C62Whirlpool(str)&#xA;&#x9;{ &#xA;&#x9;var alnum = &#34;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&#34;;&#xA;&#x9;var hash;&#xA;&#x9;var temp = &#34;&#34;;&#xA;&#x9;var value = 0;&#xA;&#x9;str = StringToBytes(str);&#xA;&#x9;hash = Whirlpool(str, str.length);&#xA;&#x9;&#xA;&#x9;var bigVal = {val:hash, remainder:0};&#xA;&#x9;&#xA;&#x9;var remainder;&#xA;&#x9;while (0 != bigVal.val.length)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;DivideRemainder(bigVal,62);&#x9;&#x9;&#xA;&#x9;&#x9;temp += alnum[bigVal.remainder];&#xA;&#x9;&#x9;} &#x9;&#x9;&#xA;&#x9;&#xA;&#x9;// for fun, we reverse the digits pairwise so if we replace the &#xA;&#x9;// 62 by 16, we get the same output as the HexWhirlpool version&#xA;&#x9;var t2 = &#34;&#34;;&#xA;&#x9;for (var j = 0; j &lt; temp.length; j += 2)&#xA;&#x9;&#x9;t2 += temp[j+1] + temp[j];&#xA;&#x9;temp = t2;&#xA;&#x9;return temp;&#xA;&#x9;}&#xA;&#xA;function WhirlpoolTest()&#xA;&#x9;{&#xA;&#x9;return HexWhirlpool(&#34;abc&#34;) == &#34;4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5&#34;;&#xA;&#x9;}&#xA;&#xA;// This function processes a button press, computing the hash from the input&#xA;function ProcessButton()&#xA;&#x9;{&#xA;&#x9;var password  = document.PasswordForm.PasswordInput.value;&#xA;&#x9;var extra     = document.PasswordForm.DataInput.value;&#xA;&#x9;var outLength = document.PasswordForm.PasswordLength.value;&#xA;&#x9;// put your own salt here for your own personalized version&#xA;&#x9;// NOTE - YOU STILL NEED A PRIVATE, MASTER PASSPHRASE&#xA;&#x9;var salt      = &#34;SaltyDogHoboyYouSt1nky&#34;;&#xA;&#x9;var inText = password+extra;&#xA;&#x9;if ((outLength &lt; 8) || (outLength &gt; 85))&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;alert(&#34;Password length not valid.&#34;);&#xA;&#x9;&#x9;return &#34;&#34;;&#xA;&#x9;&#x9;}&#xA;&#x9;if (password.length &lt; 8)&#xA;&#x9;&#x9;{ // todo- is this length ok?&#xA;&#x9;&#x9;alert(&#34;Your master password is too short. It should be at least 8 characters&#34;);&#x9;&#x9;&#xA;&#x9;&#x9;return &#34;&#34;;&#xA;&#x9;&#x9;}&#xA;&#x9;var outText = C62Whirlpool(inText+salt); // TODO - use HMAC functions?&#xA;&#x9;if (outText.length &gt; outLength)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;outText = outText.substr(0,outLength);&#xA;&#x9;&#x9;}&#xA;&#x9;return outText;&#xA;&#x9;}&#xA;// END - CHRIS LOMONT&#39;S ONLINE PASSWORD HASHER --&gt;&#xA;&lt;/script&gt;&#xA;&lt;div id=&#34;main&#34;&gt;&#xA;  &lt;div class=&#34;boxed&#34;&gt;&#xA;    &lt;h3&gt;Chris Lomont&#39;s Online Password Hasher &lt;/h3&gt;&#xA;    &lt;div class=&#34;date&#34;&gt;&#xA;      &lt;p&gt;August 2006 - Version 0.3&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chris Lomont&#39;s Contact Page</title>
				<link>https://www.lomont.org/contact/</link>
				<pubDate>Sat, 01 Jun 2019 21:12:03 -0400</pubDate>
				<guid>https://www.lomont.org/contact/</guid>
				<description>&lt;p&gt;My email encoded to help fight spam. &lt;img src=&#34;https://www.lomont.org/professional/email.png&#34; alt=&#34;Chris Lomont email image&#34; loading=&#34;lazy&#34; /&gt;&#xA;&lt;/p&gt;</description>
			</item>
			<item>
				<title>New C# syntax and features</title>
				<link>https://www.lomont.org/posts/2019/brief-csharp/</link>
				<pubDate>Sat, 01 Jun 2019 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2019/brief-csharp/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s a brief summary of C# features by version.&lt;/p&gt;</description>
			</item>
			<item>
				<title>30 Algorithms in 60 Minutes</title>
				<link>https://www.lomont.org/talks/2019/thirty-algorithms/</link>
				<pubDate>Wed, 15 May 2019 12:56:57 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2019/thirty-algorithms/</guid>
				<description>&lt;p&gt;This is a 60 minute talk in which I tried to cover 30 algorithms and data structures in a concise manner. It covers all sorts of areas: sorting, string searching and matching, backtracking, randomness, skip lists, hashing, bloom filters, graph algorithms, space partitioning, concurrent and immutable data structures, cache oblivious techniques, compression, boolean satisfiability, and control theory.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Computation: Theory, Methods, Limitations, and the Future</title>
				<link>https://www.lomont.org/talks/2019/quantum-computing/</link>
				<pubDate>Mon, 25 Feb 2019 12:58:12 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2019/quantum-computing/</guid>
				<description>&lt;p&gt;These slides are from a talk I gave on many aspects of computing, starting with classical computing (Hilbert&amp;rsquo;s 10th problem, Church and Turing, Godel, boolean functions, complexity theory, transistors, Moore&amp;rsquo;s law and demise), then going through physics (relativity, quantum mechanics, quantum field theory), and finally into quantum computing basics (qubits, superposition, entanglement, no cloning, basic gates) and quantum algorithms (Deutsch, Simon, Shor, Grover).&lt;/p&gt;&#xA;&lt;p&gt;Then I cover advanced quantum topics, such as quantum machines,quantum complexity theory, the Quantum-Church-Turing-Deutsch principle, graph isomorphism, quantum error correction, and quantum security. A final speculative section covers even weirder computation ideas (closed timelike curves, string computing) and how computing seems intertwined with the nature of reality (It from Bit, Simulation Hypthesis, Free Will Theorem).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Intro to Wireless Communications</title>
				<link>https://www.lomont.org/talks/2018/intro-to-wireless/</link>
				<pubDate>Sat, 21 Jul 2018 12:59:10 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2018/intro-to-wireless/</guid>
				<description>&lt;p&gt;This talk is an intro to wireless communications, starting with the basic physics of EM waves and how they interact with materials, then how antennas work, then on to antenna properties and design. Next  modulation schemes are discussed, showing how data is encoded and transmitted over noisy channels via modulation, spread spectrum, time and frequency division, and other methods. Noise in the form of doppler, intermodulation, and other causes is covered. Information theory (channel capacity, Shannon entropy, error correction) is covered. Finally specific protocols are analyzed under this framework: FM, NTSC, remotes, WiFi, Bluetooth, ZigBee, satellite radio, GPS, and cellular formats.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cryptography Best Practices 2018</title>
				<link>https://www.lomont.org/talks/2018/crypto-practices-2018/</link>
				<pubDate>Mon, 02 Apr 2018 12:58:39 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2018/crypto-practices-2018/</guid>
				<description>&lt;p&gt;This talk covers cryptography best practices as of April, 2018. Background on each area is covered, with each section ending with a best practices slide. Sections are Symmetric Encryption, Asymmetric Encryption, Key Lengths, Hashing/HMAC, Password usage, Key Exchange, Random number generation, Digital Signatures,&lt;/p&gt;</description>
			</item>
			<item>
				<title>Intro to Functional Programming with F#</title>
				<link>https://www.lomont.org/talks/2018/intro-to-functional-programming/</link>
				<pubDate>Wed, 14 Mar 2018 12:58:59 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2018/intro-to-functional-programming/</guid>
				<description>&lt;p&gt;This talk is an introduction to functional programming, with a focus on F#. The first section covers functional programming history, techniques, and benefits. The second part shows how this is used in F#, covering F# syntax and some special features like Type Providers, Units of Measure, and performance compared to C#.&lt;/p&gt;&#xA;&lt;p&gt;The third section goes into mind-bending topics like immutable data structure implementation, currying, the y-combinator, contravariant and covariant functors, and category theory.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Meltdown and Modern CPU Architecture</title>
				<link>https://www.lomont.org/talks/2018/meltdown/</link>
				<pubDate>Wed, 10 Jan 2018 12:56:17 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2018/meltdown/</guid>
				<description>&lt;p&gt;This talk covers CPU architecture from the early days (Intel 4004) through modern designs (2018, Intel i7 and i9), with a view towards how the Meltdown and Spectre exploits were discovered.  It covers virtual memory, process separation, cache issues, RAM details, pipelining and stalls, branch prediction, Moore&amp;rsquo;s law versus physics, and finally how Meltdown and Spectre are the consequence of many of these design decisions.&lt;/p&gt;&#xA;&lt;p&gt;In the end I show the code for Meltdown along with a demo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Cosmic Distance Ladder</title>
				<link>https://www.lomont.org/talks/2017/distance-ladder/</link>
				<pubDate>Sun, 19 Nov 2017 12:58:24 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2017/distance-ladder/</guid>
				<description>&lt;p&gt;The Cosmic Distance Ladder is how mankind has determined the distances to various astronomical objects, basically by deducing closer &amp;ldquo;rungs&amp;rdquo; on the ladder and using them to determine farther distances (higher rungs on the ladder).&lt;/p&gt;&#xA;&lt;p&gt;These notes are from Terry Tao, modified by me to suit my audience and to add other topics.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Walking Ant Probability Problem</title>
				<link>https://www.lomont.org/posts/2017/walking-ant/</link>
				<pubDate>Wed, 01 Nov 2017 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2017/walking-ant/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s a math puzzle.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Overview of Cryptology</title>
				<link>https://www.lomont.org/talks/2017/overview-of-cryptology/</link>
				<pubDate>Mon, 19 Jun 2017 10:49:20 -0400</pubDate>
				<guid>https://www.lomont.org/talks/2017/overview-of-cryptology/</guid>
				<description>&lt;p&gt;Here are slides for a long (3-4 hour) talk covering many aspects of cryptology. Topics include simple ciphers, breaking codes, private and public key crypto, block modes, stream ciphers, key exchange, random number generation, modern crypto design, hashing, password security, breaking (differential, higher order, many more..), out of band attacks (timing, cache, power, hardware, &amp;hellip;), homorphic encryption, quantum protocols, and more&amp;hellip;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A Universal FRACTRAN Interpreter in FRACTRAN</title>
				<link>https://www.lomont.org/posts/2017/fractran/</link>
				<pubDate>Mon, 01 May 2017 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2017/fractran/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s FRACTRAN, a weird fraction based programming language, written in FRACTRAN.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Generating Uniform Random Numbers on [0,1]</title>
				<link>https://www.lomont.org/posts/2017/unit-random/</link>
				<pubDate>Sun, 05 Mar 2017 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2017/unit-random/</guid>
				<description>&lt;p&gt;How does one generate uniform random numbers in [0,1] using IEEE 754 floating point formats? It&amp;rsquo;s tricky.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Efficient divisibility testing</title>
				<link>https://www.lomont.org/posts/2017/divisibility-testing/</link>
				<pubDate>Tue, 21 Feb 2017 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2017/divisibility-testing/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s bit tricks for efficient divisibility testing.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Making Three NOT Gates from Two</title>
				<link>https://www.lomont.org/posts/2017/making-three-not-gates/</link>
				<pubDate>Sat, 17 Sep 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2017/making-three-not-gates/</guid>
				<description>&lt;p&gt;This is a hard puzzle about using two NOT gates to build three.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Compression Notes</title>
				<link>https://www.lomont.org/compression-notes/</link>
				<pubDate>Mon, 29 Aug 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/compression-notes/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s some notes on compression.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LZCL: An embedded compression library</title>
				<link>https://www.lomont.org/posts/2016/embedded-compression/</link>
				<pubDate>Mon, 29 Aug 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2016/embedded-compression/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s an embedded compression format I designed to meet certain requirements. It&amp;rsquo;s small, fast, and efficient.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Average segment length</title>
				<link>https://www.lomont.org/posts/2016/random-segment-length/</link>
				<pubDate>Tue, 23 Aug 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2016/random-segment-length/</guid>
				<description>&lt;p&gt;What&amp;rsquo;s the average length of a segment chosen uniformly by area on a unit square?&lt;/p&gt;</description>
			</item>
			<item>
				<title>How many prisoners?</title>
				<link>https://www.lomont.org/posts/2016/how-many-prisoners/</link>
				<pubDate>Tue, 23 Aug 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2016/how-many-prisoners/</guid>
				<description>&lt;p&gt;This is a nicely hard problem in the common prisoners and warden format.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pick a Number</title>
				<link>https://www.lomont.org/posts/2016/pick-a-number/</link>
				<pubDate>Tue, 23 Aug 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/2016/pick-a-number/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s a result that is completely non-intuitive.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Test site features</title>
				<link>https://www.lomont.org/posts/site-test/</link>
				<pubDate>Fri, 01 Jul 2016 17:08:08 -0400</pubDate>
				<guid>https://www.lomont.org/posts/site-test/</guid>
				<description>&lt;p&gt;A post to test site features such as tables, math, code&amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://www.lomont.org/posts/2023/colorconversions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://www.lomont.org/posts/2023/colorconversions/</guid>
				<description>&lt;h1 id=&#34;color-conversions&#34;&gt;Color Conversions&lt;/h1&gt;&#xA;&lt;p&gt;This is a quick note for converting byte values colors in 0-255 back and forth to floating-point colors in 0-1.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;&#xA;&lt;p&gt;A common (yet incorrect) method (shown in C++) looks like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c++&#34; data-lang=&#34;c++&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;cstdint&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// uint8_t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// byte color in 0-255 to 32-bit float in 0-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;float&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;ColorU8ToF32_BAD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint8_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;colorB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;colorB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;255.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;uint8_t&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;ColorF32ToU8_BAD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;float&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;colorF&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;uint8_t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;colorF&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;255.0f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.5f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;This suffers from significant bias away from the end colors 0 and 255, and the &lt;code&gt;+0.5f&lt;/code&gt; &amp;ldquo;trick&amp;rdquo; to round values does not always work, which can bite you. Some problems with this style of conversion:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
