<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>expenses.github.io</title><link>https://expenses.github.io/</link><description>Recent content on expenses.github.io</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://expenses.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing a lightmapper in 2026</title><link>https://expenses.github.io/posts/lightmapper/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/lightmapper/</guid><description>&lt;h3 id="intro"&gt;Intro&lt;/h3&gt;
&lt;p&gt;For certain kinds of static scenes, baked lightmaps still offer the best lighting quality outside of full path tracing. A few things I&amp;rsquo;ve been playing recently have included gorgeous baked lighting, including the &lt;a href="https://www.youtube.com/watch?v=b0MIbo2aQqs&amp;amp;t=52s"&gt;Quake QBJ3 mod&lt;/a&gt; and Dishonored 2. I&amp;rsquo;ve been toying with a few game engines over the past few months and the one that suits my sensibilities most is Godot. Unfortunately, Godot&amp;rsquo;s lightmapper isn&amp;rsquo;t very good. I don&amp;rsquo;t quite have time to get into the specifics of its issues here, so I&amp;rsquo;ll just quote the &lt;a href="https://godotengine.org/priorities/"&gt;priorities page&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>My Jujutsu workflow, tips &amp; tricks</title><link>https://expenses.github.io/posts/jujutsu-workflow-tips-and-tricks/</link><pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/jujutsu-workflow-tips-and-tricks/</guid><description>&lt;p&gt;_This is sort-of a followup post to &lt;a href="https://expenses.github.io/posts/git-grievences-jujutsu/"&gt;my previous post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been using &lt;a href="https://github.com/jj-vcs/jj"&gt;Jujutsu&lt;/a&gt; exclusively for a month and a bit. While not perfect, I consider it a substantial improvement over git. I&amp;rsquo;m considering removing the &lt;code&gt;git&lt;/code&gt; command from my &lt;code&gt;$PATH&lt;/code&gt; all together.&lt;/p&gt;
&lt;h1 id="operating-on-a-merge"&gt;Operating on a merge&lt;/h1&gt;
&lt;p&gt;I use a workflow that&amp;rsquo;s similar if not identical to &lt;a href="https://v5.chriskrycho.com/journal/jujutsu-megamerges-and-jj-absorb/"&gt;&amp;lsquo;megamerges&amp;rsquo;&lt;/a&gt;. This involves working on a revision that merges in a whole bunch of different changes. Typically it looks something like this in the log:&lt;/p&gt;</description></item><item><title>sRGB Notes</title><link>https://expenses.github.io/posts/srgb-notes/</link><pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/srgb-notes/</guid><description>&lt;p&gt;&lt;em&gt;I wrote these notes in order to have an easy resource to link people involved in graphics work to. For a more in-depth overflow on digital color, read all of &lt;a href="https://hg2dc.com/"&gt;The Hitchhiker&amp;rsquo;s Guide to Digital Color&lt;/a&gt;, starting with question 1.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="notes"&gt;Notes&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;sRGB (standard RGB) is this thing called a &amp;lsquo;color space&amp;rsquo;, but is also a means of compressing image data.&lt;/li&gt;
&lt;li&gt;A way to store color information at 8-bits per color channel (red, green, blue) is desired as 32 or even 16 bits per channel is too high.&lt;/li&gt;
&lt;li&gt;sRGB uses a compromise where brightness values (0.0 to 1.0) are stored non-linearly. 128 != 0.5.&lt;/li&gt;
&lt;li&gt;The function is roughly (but not exactly) x^2.4, so for 128 you have (128/256)^2.4 = 0.189. Half the bit space is dedicated to values less than 0.2. Conversely, there are only 128 values for 0.2 to 1.0.&lt;/li&gt;
&lt;li&gt;This is because it&amp;rsquo;s easier to see the difference in monitor brightness between e.g. 0-0.05 than 0.95-1.&lt;/li&gt;
&lt;li&gt;sRGB is used for all color JPEG, PNG, etc images. For extremely rare non-color purposes (e.g. normal maps for 3d models) linear 8-bit values are stored instead where 128 should be used as 0.5.&lt;/li&gt;
&lt;li&gt;Monitors generally accept sRGB-encoded data.&lt;/li&gt;
&lt;li&gt;using a SRGB GPU texture format means that the linear-to-sRGB and sRGB-to-linear transfer functions are automatically applied when reading and writing. Sometimes you want/need to perform the transfer functions yourself instead and have sRGB-data in a SRGB texture.&lt;/li&gt;
&lt;li&gt;in a shader, there is no loss of data when going from sRGB texture (think of a greyscale 256 by 1 texture consisting of 256 brightness levels) to sRGB texture as the sRGB-to-linear transfer function is applied and then perfectly inverted again. Same with non-sRGB data to non-sRGB data.&lt;/li&gt;
&lt;li&gt;there IS going to be loss of data going from non-sRGB or sRGB or sRGB to non-sRGB as some of the stops will need to be rounded when converting to 8-bit again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="digital-color-pipeline"&gt;Digital Color Pipeline&lt;/h1&gt;
&lt;p&gt;If you take a photo with a digital camera and then display it on a web page, the pipeline goes something like this:&lt;/p&gt;</description></item><item><title>Git grievances and Jujutsu</title><link>https://expenses.github.io/posts/git-grievences-jujutsu/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/git-grievences-jujutsu/</guid><description>&lt;p&gt;_I wrote a followup to this post &lt;a href="https://expenses.github.io/posts/jujutsu-workflow-tips-and-tricks/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been using git for possibly a decade at this point, and I&amp;rsquo;ve developed a certain workflow and habits using it. It&amp;rsquo;s the best program in the world that also sucks a lot. Note that I always use git through the CLI.&lt;/p&gt;
&lt;h1 id="current-workflow"&gt;Current Workflow&lt;/h1&gt;
&lt;p&gt;I frequently use &lt;code&gt;git status&lt;/code&gt; to check the current status of a repository. Sometimes I misspell it and because I have &lt;code&gt;help.autocorrect&lt;/code&gt; set to &lt;code&gt;true&lt;/code&gt; it interprets this as &lt;code&gt;git stash&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Notable Book Quotes</title><link>https://expenses.github.io/posts/book-quotes/</link><pubDate>Sun, 24 Aug 2025 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/book-quotes/</guid><description>&lt;p&gt;I like reading a lot and end up taking phone pics of pages and quotes I like. Here are some:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vavatch lay in space like a god’s bracelet. The fourteen-million-kilometer hoop glittered and sparkled, blue and gold against the jet-black gulf of space beyond. As the Clear Air Turbulence warped in toward the Orbital, most of the Company watched their goal approach on the main screen in the mess. The aquamarine sea, which covered most of the surface of the artifact’s ultradense base material, was spattered with white puffs of cloud, collected in huge storm systems or vast banks, some of which seemed to stretch right across the full thirty-five-thousand-kilometer breadth of the slowly turning Orbital.&lt;/p&gt;</description></item><item><title>Hyperion Glossary</title><link>https://expenses.github.io/posts/hyperion-glossary/</link><pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate><guid>https://expenses.github.io/posts/hyperion-glossary/</guid><description>&lt;p&gt;I&amp;rsquo;ve been reading Hyperion (and now The Fall of Hyperion) by Dan Simmons recently. I was inspired by &lt;a href="https://mechanteanemone.wordpress.com/2013/08/02/lingo-peter-watts-blindsight/"&gt;this post&lt;/a&gt; that served as a useful glossary for when I was reading Blindsight by Peter Watts and got inspired to do something similar for Hyperion. There shouldn&amp;rsquo;t be any spoilers here, but if you really enjoy puzzles then I suggest you avoid this and have a go at figuring out things on your own. &lt;a href="https://freds-ramblings.blogspot.com/2011/11/dan-simmons-hyperion-pt-2-informal.html"&gt;This blog&lt;/a&gt; has also published a glossary, though more focusing on the (many) literary references in the books.&lt;/p&gt;</description></item></channel></rss>