<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Software on Lomont.org</title>
		<link>https://www.lomont.org/tags/software/</link>
		<description>Recent content in Software 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/tags/software/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>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>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>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>
	</channel>
</rss>
