<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://www.isaacwyatt.com">
    <title>IW</title>
    <link href="https://www.isaacwyatt.com/feed.xml" rel="self" />
    <link href="https://www.isaacwyatt.com" />
    <updated>2026-07-13T20:54:09Z</updated>
    <author><name>Isaac Wyatt, MBA</name></author>
    <id>https://www.isaacwyatt.com</id>
        <entry>
            <title>
                2024 Toyota RAV4 Cost of Ownership Analysis - Forecast vs Actual
                
            </title>
            <updated>2026-06-30T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2026-06-30/</id>
            <content type="html">
                &lt;h1 id=&quot;2024-toyota-rav4-cost-of-ownership-analysis-forecast-vs-actual&quot; tabindex=&quot;-1&quot;&gt;2024 Toyota Rav4 Cost of Ownership Analysis - Forecast vs Actual&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020260629154009.png&quot; alt=&quot;Pasted image 20260629154009.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;2024 Toyota RAV4 Hybrid XSE&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;summary&quot; tabindex=&quot;-1&quot;&gt;Summary&lt;/h1&gt;
&lt;p&gt;Back in 2024 we purchased a Toyota RAV4 Hybrid. Before the purchase I modeled the expected costs of various other make/models/trims. For the RAV4 we estimated ~$13.6k / year cost of ownership, and our actual was closer to $12.2k / year owing to better than expected fuel economy (41.5 vs 40), lower fuel prices ($3.91 vs $5), and fewer miles driven than modeled (12.4k vs 15k).&lt;/p&gt;
&lt;p&gt;However, the cost per mile at $0.98 was higher than expected, and makes me a bit more aware of the actual value of drives when weighed against a cost of ~$1 per mile - especially with regard to &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&quot;background&quot; tabindex=&quot;-1&quot;&gt;Background&lt;/h1&gt;
&lt;p&gt;In late 2024, our family needed another vehicle. We had been getting by with just one car and a motorcycle. I had a child who would need to be in a different place than the car would be most days and times of the week. Therefore, we would need to get an additional vehicle. I did look at options including public transit and car-pooling. However we were unable to identify a reliable car-pool partner. There are no sufficient public transit options to connect my house and the destination in a timely manner, which would be 561% more time over 14.5 miles versus car.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020260629152613.png&quot; alt=&quot;Pasted image 20260629152613.png&quot; /&gt;&lt;br /&gt;
Strictly and only for the laugh, I also considered the impractical and the illegal: getting my partner to get their motorcycle endorsement, or putting a child seat on the motorcycle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Without any other viable options, we reluctantly chose to become a two-car family. However we did see this as an opportunity to improve the utility of the vehicle we would cart around my kiddo in: it could be safer, better for camping, road trips, better on gravel roads, useful for carrying bulky things for the kid&#39;s activities and also from the home improvement or home goods store, and more comfortable than my partner&#39;s ~2009ish Honda Civic.&lt;/p&gt;
&lt;h1 id=&quot;vehicle-selection&quot; tabindex=&quot;-1&quot;&gt;Vehicle Selection&lt;/h1&gt;
&lt;p&gt;The class of vehicle we chose was small / compact SUV. While there are specific reasons and tradeoffs and supporting rationale for this choice, for brevity I won&#39;t enumerate them here.&lt;/p&gt;
&lt;p&gt;Then, we (well, &lt;em&gt;I&lt;/em&gt; - my partner isn&#39;t as much into this kind of thing as I am) created a spreadsheet with the different makes, models, and trim levels, and the specifications for each. We augmented the manufacturer&#39;s specifications with other data from Consumer Reports, safety ratings, cost of insurance, and financing options. This allowed us to sort and filter by the most important dimensions.&lt;/p&gt;
&lt;h1 id=&quot;model&quot; tabindex=&quot;-1&quot;&gt;Model&lt;/h1&gt;
&lt;p&gt;Once we had a short list of vehicles, (the Toyota RAV4 Hybrid, RAV4 Prime PHEV, and the Honda CRV Hybrid), I created a cost of ownership model using the MSRP, MPG, expected cost of maintenance, insurance, and financing options for each. I had to assume a few things - namely the number of miles we&#39;d be driving each year, the price of gasoline, price of electricity, and adjust the MSRP by whatever dealer add-ons or special considerations we could negotiate.&lt;/p&gt;
&lt;p&gt;Surprisingly the Toyota RAV4 Prime Plug-in Hybrid (PHEV) models out to be notably more expensive than the Toyota RAV4 Hybrid, and also the Honda CRV. The PHEV cost savings required a 10-year payback period against the PHEV&#39;s MSRP price difference - and that assumes gasoline gets more expensive faster than electricity and that the batteries don&#39;t degrade!&lt;/p&gt;
&lt;p&gt;With the PHEV out, we chose the Toyota RAV4 Hybrid over the CRV mainly because it includes a spare tire while the Honda CRV does not, although I liked the interior design of the Honda CRV better.&lt;/p&gt;
&lt;h1 id=&quot;forecasted-vs-actual-cost-of-ownership&quot; tabindex=&quot;-1&quot;&gt;Forecasted vs Actual Cost of Ownership&lt;/h1&gt;
&lt;p&gt;The model forecasted $13,616 for the first twelve months including both fixed and variable costs based on an expected 15,000 miles at an average rate of $5 per gallon and 40 MPG average.&lt;/p&gt;
&lt;p&gt;The first twelve months we saw an average 41.5 MPG, fuel costs 22% lower than the estimated $5 per gallon, but also 17% fewer miles driven than the 15,000 forecast. I was also able to secure a notably lower interest rate than the dealer advertised financing, which saved about $2.2k over the life of the loan.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fixed Costs*&lt;/td&gt;
&lt;td&gt;Metric&lt;/td&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;Actual&lt;/td&gt;
&lt;td&gt;Savings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Annualized Fixed Costs&lt;/td&gt;
&lt;td&gt;$11,741&lt;/td&gt;
&lt;td&gt;$10,997&lt;/td&gt;
&lt;td&gt;$744&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variable Costs&lt;/td&gt;
&lt;td&gt;MPG (Combined)&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;41.7&lt;/td&gt;
&lt;td&gt;1.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Gas Price&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3.91&lt;/td&gt;
&lt;td&gt;1.09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Annual Miles&lt;/td&gt;
&lt;td&gt;15,000&lt;/td&gt;
&lt;td&gt;12,400&lt;/td&gt;
&lt;td&gt;2,600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Fuel Cost / Year&lt;/td&gt;
&lt;td&gt;$1,875&lt;/td&gt;
&lt;td&gt;$1,163&lt;/td&gt;
&lt;td&gt;$712&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$13,616&lt;/td&gt;
&lt;td&gt;$12,160&lt;/td&gt;
&lt;td&gt;$1,456&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Cost Per Mile&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$0.91&lt;/td&gt;
&lt;td&gt;$0.98&lt;/td&gt;
&lt;td&gt;-$0.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixed Cost Per Mile&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$0.78&lt;/td&gt;
&lt;td&gt;$0.89&lt;/td&gt;
&lt;td&gt;-$0.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variable Cost Per Mile&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$0.13&lt;/td&gt;
&lt;td&gt;$0.09&lt;/td&gt;
&lt;td&gt;$0.03&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;*Fixed  Costs include the vehicle, dealer fees, insurance, and financing&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The total cost per mile for the first year ended up being ~$0.98, but if we had driven the 15,000 instead of 12,400 it would have been $0.83. This is because the fixed costs would have been amortized over more miles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is disconcerting to think that every trip costs nearly $1 per mile.&lt;/strong&gt; It definitely makes me want to drive less, and when I do drive, I watch the trip odometer much more often on trips that are not really necessary.&lt;/p&gt;
&lt;p&gt;Now, that isn&#39;t exactly fair since 90% of the costs of ownership are fixed (car payment, insurance, etc.) Excluding the fixed costs, my actual cost per mile is $0.09. Much cheaper for that quick run just to get some ice cream!&lt;/p&gt;
&lt;p&gt;But that isn&#39;t fair either, because no one gifted me a perfectly new vehicle with excellent fuel economy.&lt;/p&gt;
&lt;p&gt;There are other caveats to consider to the analysis as well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this analysis is primarily concerned with &lt;em&gt;cash flow&lt;/em&gt; since this was made under consideration of how it would impact my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt; position&#39;s and target safe withdraw rate. If calculating value, then there are additional dimensions to model with regard to the the final re-sale value of the vehicle once depreciated.&lt;/li&gt;
&lt;li&gt;The Toyota RAV4 Prime PHEV, while a notably higher MSRP, also had incentives that the RAV4 Hybrid did not, so the pay-back period may have ended up being shorter than the 10 years I modeled.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;questions&quot; tabindex=&quot;-1&quot;&gt;Questions&lt;/h1&gt;
&lt;p&gt;Regardless, the analysis makes me wonder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is each mile I drive generating more than $0.98 worth of value?&lt;/li&gt;
&lt;li&gt;Most other people&#39;s cars aren&#39;t getting 41.7 MPG. What is THEIR cost per mile?&lt;/li&gt;
&lt;li&gt;How many minutes of my life do I have to spend working to pay for 1 mile of time I have to spend in the car commuting to work? (As it applies to &lt;strong&gt;you&lt;/strong&gt;. I work at home.)&lt;/li&gt;
&lt;li&gt;How would people&#39;s driving habits change if they knew the cost per mile they were paying as they were driving?&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2026-06-30/" />
        </entry>
        <entry>
            <title>
                December 31, 2025 | 🧑‍💻 I sniped my friend&#39;s website domain, ported his 20-year old game from 🐍 Python to 🦀 Rust, made it playable in the browser on his website, then gave it to him for his birthday
                
            </title>
            <updated>2025-12-31T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2025-12-31/</id>
            <content type="html">
                &lt;h1 id=&quot;december-31-2025-i-sniped-my-friend-s-website-domain-ported-his-20-year-old-game-from-python-to-rust-made-it-playable-in-the-browser-on-his-website-then-gave-it-to-him-for-his-birthday&quot; tabindex=&quot;-1&quot;&gt;December 31, 2025 | 🧑‍💻 I sniped my friend&#39;s website domain, ported his 20-year old game from 🐍 Python to 🦀 Rust, made it playable in the browser on his website, then gave it to him for his birthday&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Screencast_20251115_144613%20(1).gif&quot; alt=&quot;Screencast_20251115_144613 (1).gif&quot; /&gt;&lt;br /&gt;
The &lt;em&gt;Mega Man 2 Puzzle Attack - 🦀 Carcinized&lt;/em&gt; Title Screen&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To close out 2025, I want to share a big focus of my year, the effort and accomplishment, and how it honors my best friend Mark Pulver.&lt;/p&gt;
&lt;p&gt;This post shares the background of a project where I secretly pulled together Mark&#39;s closest friends to collaborate and deliver a surprise birthday present to him: a fresh website on his own domain (that I sniped from him when it expired), with a playable, in-browser, modernized port of a game he made 20 years ago!&lt;/p&gt;
&lt;p&gt;This effort also benefited me: it was an opportunity to better learn the Rust programming language, and resulted in me giving my first ever software-developer talk and presentation. The talk was about what I learned in the process of porting Mark&#39;s game from the Python programming language to the Rust programming language. I presented to an in-person and virtual audience of about 40 people of the Seattle Rust User Group (&amp;quot;SRUG&amp;quot;) this past November at Bellevue, WA&#39;s City Hall where SRUG currently holds monthly meet-ups.&lt;/p&gt;
&lt;p&gt;Although this blog post focuses on the story behind that talk, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Watch the talk on &lt;a href=&quot;https://www.youtube.com/watch?time_continue=1179&amp;amp;v=_ImJ04E6MM4&amp;amp;embeds_referring_euri=https%3A%2F%2Fwww.isaacwyatt.com%2F&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Youtube&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Review the &lt;a href=&quot;https://docs.google.com/presentation/d/17rStTFnd8Pfr3nWtFVHXZZnHwgLR9pl2cVpP7z5Bqsk/edit?usp=sharing&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;slides&lt;/a&gt; that I presented.&lt;/li&gt;
&lt;li&gt;Play my port directly in your web browser: &lt;a href=&quot;https://iwyatt.github.io/mm2pa-c/index.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mega Man 2: Puzzle Attack - 🦀 Carcinized&lt;/a&gt; (&amp;quot;MM2PA-🦀&amp;quot;).&lt;/li&gt;
&lt;li&gt;See the Python source code for &lt;a href=&quot;https://github.com/markpulver/mega-man-2-puzzle-attack&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mark&#39;s version of MM2PA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While proud of the presentation, this project was primarily a birthday surprise honoring Mark’s work. This post details the inspiration, teamwork, and technical background omitted from the talk.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;inception-sniping-his-personal-web-domain&quot; tabindex=&quot;-1&quot;&gt;Inception: Sniping his Personal Web Domain&lt;/h1&gt;
&lt;p&gt;Mark is my best friend. We played games together as kids, and made them in QBasic together.&lt;/p&gt;
&lt;p&gt;I like to give surprises and &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-12/&quot;&gt;play pranks for birthdays&lt;/a&gt;. In 2023, I noticed that he let his personal vanity domain expire. I secretly bought it. 🤭&lt;/p&gt;
&lt;p&gt;I didn&#39;t know what I wanted to do with it for a long time. Although I considered making his personal domain something embarrassing (the Wayback Machine shows that the earliest known registered owner of the domain to be a very different person than my friend - NSFW), but during the course of developing my port of his game, I decided to do something that might be helpful instead.&lt;/p&gt;
&lt;p&gt;Mark has done a lot of creative work, so I thought to make a portfolio website of those works. His portfolio includes a book he has written, a flash game, and also his Tetris / &lt;a href=&quot;https://en.wikipedia.org/wiki/Mega_Man_2&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mega Man 2&lt;/a&gt; game that he made with 🐍 Python in 2005: &lt;em&gt;Mega Man 2: Puzzle Attack&lt;/em&gt;, (&amp;quot;MM2PA&amp;quot;). It is this last artifact that I ended up re-creating in, or &amp;quot;porting&amp;quot; to, the &lt;a href=&quot;https://en.wikipedia.org/wiki/Rust_(programming_language)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust programming language&lt;/a&gt; in order to make it playable in the web browser directly on his website - but that&#39;s getting ahead of the story.&lt;/p&gt;
&lt;h1 id=&quot;chasing-the-python-deciding-on-rust&quot; tabindex=&quot;-1&quot;&gt;Chasing the Python; Deciding on Rust&lt;/h1&gt;
&lt;p&gt;Mark originally created MM2PA in 2005 in order to learn how to make a game in the Python programming language. Python 2.3 was the current version at the time and he used the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pygame&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pygame&lt;/a&gt; library.&lt;/p&gt;
&lt;p&gt;Because Mark and I always collaborated closely when we made games together as kids in &lt;a href=&quot;https://en.wikipedia.org/wiki/QBasic&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Qbasic&lt;/a&gt;, we shared our work with each other. Over the years Mark had emailed me the various games he had made and in most cases, their source code and media assets as a zip file. This included the Python source code and media assets for MM2PA nicely bundled in a zip file.&lt;/p&gt;
&lt;p&gt;At first, I tried to simply make the Python version of his game playable in the web browser. I tried to simply use a tool to make Python run in the web browser, but found that I couldn&#39;t even get his now 20-year old code to run on my local machine without modification. The tool, &lt;a href=&quot;https://pyscript.net/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pyscript&lt;/a&gt;, had no chance.&lt;/p&gt;
&lt;p&gt;Then after talking with a fellow member of SRUG, Carl Cadie, I realized that I should do what other Rust software developers (&amp;quot;Rustaceans&amp;quot;) do, and port it to Rust! This would be useful not only because of the various benefits of Rust, but also a good learning opportunity for me! I would be learning from &lt;strong&gt;Mark&#39;s own&lt;/strong&gt; learning project! Standing on the shoulders of giants!&lt;/p&gt;
&lt;h1 id=&quot;early-challenges&quot; tabindex=&quot;-1&quot;&gt;Early Challenges&lt;/h1&gt;
&lt;p&gt;At first, the old Python code wouldn&#39;t run on my Linux machine. That wasn&#39;t a surprise. It was written for Windows, true, but it was also code written for a Python runtime that was more than a whole major version behind the one on my laptop! Not only that, but some of the libraries used in MM2PA didn&#39;t even exist for modern Python!&lt;/p&gt;
&lt;p&gt;To get MM2PA running on my Linux machine with a modern runtime, I ended up swapping out &lt;code&gt;Numeric&lt;/code&gt; for &lt;code&gt;Numpy&lt;/code&gt;, and spot-updating some of the code where the functions changed signature or behavior. For example, I had to change the function that calculates the elapsed game time so that it uses an integer instead of a floating point number.&lt;/p&gt;
&lt;p&gt;Now it would run. Even though it was playable, I didn&#39;t have a way to compare my patched version against the original. &lt;em&gt;How did I know that what I had running on my machine was the exact same as what Mark had originally created in 2005?!&lt;/em&gt; I didn&#39;t solve this problem directly, but the game is simple enough and Mark&#39;s Python code was written clearly enough to resolve most questions. I also decided that since I was making a &#39;new&#39; version of the game, it was within reasonable artistic license to add enhancements or slightly change behavior if it made for a better experience.&lt;/p&gt;
&lt;h1 id=&quot;deciding-on-macroquad&quot; tabindex=&quot;-1&quot;&gt;Deciding on Macroquad&lt;/h1&gt;
&lt;p&gt;Now that I had a reasonable reference, I could code the game. &lt;em&gt;But which game engine did I want to use?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I had experience building a couple other games with the &lt;a href=&quot;https://bevy.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bevy&lt;/a&gt; engine in Rust, but I wanted to try a different Rust game engine to see if there were something more ergonomic. Also, given the size/scope of this project, Bevy felt unnecessarily powerful.&lt;/p&gt;
&lt;p&gt;Instead, I looked at other game engines in the Rust ecosystem. I found &lt;a href=&quot;https://macroquad.rs/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Macroquad&lt;/a&gt;, and it seemed to be the right level of abstraction for my project. I also liked that it made it easy to compile to &lt;a href=&quot;https://en.wikipedia.org/wiki/WebAssembly&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Web Assembly&lt;/a&gt; (&amp;quot;WASM&amp;quot;) and therefore playable in modern web browsers without any additional dependencies. After developing an initial proof of concept, I was confident Macroquad was the right choice.&lt;/p&gt;
&lt;h1 id=&quot;starting-the-porting-process&quot; tabindex=&quot;-1&quot;&gt;Starting the Porting Process&lt;/h1&gt;
&lt;p&gt;To start my port, I needed a chunking strategy to help me &amp;quot;eat the whole elephant&amp;quot;.&lt;/p&gt;
&lt;p&gt;Mark used a fairly typical game loop in constructing his game, and had game states the player transitions through in the course of a session. &lt;code&gt;Initialization&lt;/code&gt; -&amp;gt; &lt;code&gt;Intro&lt;/code&gt; -&amp;gt; &lt;code&gt;Title Screen&lt;/code&gt; -&amp;gt; &lt;code&gt;Stage Select&lt;/code&gt;, etc. I decided that doing one game state at a time would be a good approach and allow me to develop and test in a sequence that matches the experience of a player. Although I would later find out this approach had some draw-backs, it ended up also being the right approach for maximizing my learning.&lt;/p&gt;
&lt;p&gt;This slide from my presentation shows my (simplified) Rust code and the game loop that mostly matches the Python loop:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020251231113853.png&quot; alt=&quot;Pasted image 20251231113853.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I started my porting process by setting up the game states and the game loop, and then wrote the code for each game state starting with &lt;em&gt;Initialization&lt;/em&gt; all the way through &lt;em&gt;Credits&lt;/em&gt; and &lt;em&gt;Quit&lt;/em&gt;.&lt;/p&gt;
&lt;h1 id=&quot;adding-features-building-a-team&quot; tabindex=&quot;-1&quot;&gt;Adding Features; Building a Team&lt;/h1&gt;
&lt;p&gt;Once I wrote the code for the first couple game states, and started on the Stage Select screen, I decided that this project was viable but also exciting! I started having ideas for features and enhancements that were possible as a result of developing in Rust and Macroquad: I could add a secret stage! Playable in a web browser! On mobile! etc. etc.&lt;/p&gt;
&lt;p&gt;It was March and Mark&#39;s birthday was in July. In addition to finishing the game, I also had to set up Mark&#39;s website, configure the domain, add content, etc. If I wanted to have time to add new features and a secret stage to the game, I&#39;d need some help. Especially since I don&#39;t have the skills to create music or art.&lt;/p&gt;
&lt;p&gt;💡 Then I had the idea to involve Mark&#39;s mutual friends as collaborators who could all contribute to this for Mark&#39;s birthday!&lt;/p&gt;
&lt;p&gt;So I started by discreetly contacting our mutual friends and his wife to gauge interest in contributing. I&#39;d end up bringing on our friend Chase Bolen to help code some of the game states, a friend named Mark Brooks, to create music for a secret stage, and commission a pixel artist, &lt;a href=&quot;https://www.threads.com/@kaimatten&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;John Kaimatten Bond&lt;/a&gt; (a game developer himself), to create original art for the secret stage.&lt;/p&gt;
&lt;p&gt;I also included Mark&#39;s wife, Jessica, who would help review website content I created for his domain, facilitate introductions to some of Mark&#39;s other friends to help, play-test, and coordinate his schedule so we all could do a surprise birthday video call. She was instrumental in bringing the whole team together.&lt;/p&gt;
&lt;p&gt;Late in the process, I also asked many other mutual friends to play-test so I could include their names in the default &amp;quot;Best Times&amp;quot; scoreboard:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020251231115700.png&quot; alt=&quot;Pasted image 20251231115700.png&quot; /&gt;&lt;/p&gt;
&lt;h1 id=&quot;challenges&quot; tabindex=&quot;-1&quot;&gt;Challenges&lt;/h1&gt;
&lt;p&gt;Before I could surprise Mark with a version of his game on his birthday, Mark surprised &lt;strong&gt;me&lt;/strong&gt; with an updated version! Very shortly after I built the team for the project, Mark released version 1.1 of the original and sent it out to many of the same people who were on my team! His new version updated MM2PA to run on modern machines.&lt;/p&gt;
&lt;p&gt;This caused some reflection on whether I should shelve the porting project and just focus on building out the website. I decided to continue forward since I wanted the game to be playable directly on his website and to create a new secret stage for him to play through. Fortunately, none of my collaborators who signed on were discouraged.&lt;/p&gt;
&lt;h1 id=&quot;crunch&quot; tabindex=&quot;-1&quot;&gt;Crunch&lt;/h1&gt;
&lt;p&gt;The video game industry is known for &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Crunch_(video_games)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;crunch time&lt;/a&gt;&amp;quot;. Basically, compulsory overtime the development teams go through leading up to the launch of a game. Similarly, since Mark&#39;s birthday was coming up quickly, this project experienced some 11th hour crunch. In fact, I merged in fresh code from a contributor within a couple hours of the scheduled video call where we would unveil the website and he would play his game!&lt;/p&gt;
&lt;p&gt;To meet the &amp;quot;launch window&amp;quot;, I had to deprioritize some minor features for what I had hoped would be a full 1.0 launch. For example, touch screen support, compiled Windows and macOs binaries, and a global high score list, etc. would not make the cut. As of this writing, those features are still not implemented but are expected for a 1.0 release.&lt;/p&gt;
&lt;p&gt;The major features did make it in time: it was playable in the browser with keyboard, there was a brand new secret stage with new graphics and music and boss logic, and a new credits sequence, and local persisted high score in the browser cache.&lt;/p&gt;
&lt;h1 id=&quot;naming-the-ported-game&quot; tabindex=&quot;-1&quot;&gt;Naming the ported game&lt;/h1&gt;
&lt;p&gt;As the team was working on implementing the final game states, like &#39;Credits&#39;, I was trying to decide on the name of the ported game. For Rust developers, it is common to name a port of an existing program with a variation or reference to the fact it is written in Rust. There are even companies whose names are Rust-related, like &lt;a href=&quot;https://oxide.computer/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Oxide&lt;/a&gt; and &lt;a href=&quot;https://ferrocene.dev/en&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Ferrocene&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So following precedent, I brainstormed a few names and messaged a few collaborators with ideas to see if any resonated. I settled on the same name as Mark&#39;s game, but appended with &amp;quot;Carcinized&amp;quot;. Carcinization is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Carcinisation&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;tendency of various species to evolve into crabs.&lt;/a&gt;. The unofficial mascot of the Rust programming language is &lt;a href=&quot;https://rustacean.net/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Ferris the Crab&lt;/a&gt;. So we &amp;quot;Carcinized&amp;quot; the Python code into Rust code. It&#39;s a bit of a joke of which one collaborator said &amp;quot;&lt;em&gt;It sounds like we are giving Mark&#39;s game cancer.&lt;/em&gt;&amp;quot;, but it also fits given the nature of the &lt;em&gt;additions&lt;/em&gt; we made to the game.&lt;/p&gt;
&lt;h1 id=&quot;birthday-launch&quot; tabindex=&quot;-1&quot;&gt;Birthday Launch&lt;/h1&gt;
&lt;p&gt;Since Mark&#39;s wife was an insider to the project, she was able to discreetly block some of his time for us to meet on a video chat so that I could ask him to join under the guise of showing him something I made in Excel (a port of my &lt;a href=&quot;https://github.com/iwyatt/spits&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Google Sheets AI plug-in&lt;/a&gt;). I had discreetly coordinated with the project collaborators to join a separate video call that he would join so we could surprise him.&lt;/p&gt;
&lt;p&gt;The first video call was just for he and I. Once Mark joined the initial one-on-one call, I had him try out my Google Sheets tool where I had planted an Easter Egg as a &amp;quot;bug&amp;quot; that sent him to his website domain. Once he followed that and saw his website, I &amp;quot;accidentally&amp;quot; dropped the call, and invited him to join a &amp;quot;new&amp;quot; meeting where unbeknownst to Mark, everyone else was already on and waiting.&lt;/p&gt;
&lt;p&gt;At this point, Mark knew this was a birthday surprise, and we all watched him explore his website. Then he played the new version of his own game: Mega Man 2 Puzzle Attack - 🦀 Carcinized - including the new secret level.&lt;/p&gt;
&lt;h1 id=&quot;result&quot; tabindex=&quot;-1&quot;&gt;Result&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;MM2PA-🦀 is awesome! — essentially a love letter to a love letter of Mega Man 2&lt;/em&gt;&lt;br /&gt;
- Mark Pulver&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mark was very motivated to play the game so he could get the top &amp;quot;Best Time&amp;quot;, and after the call he sent me a screenshot of his achievement.&lt;/p&gt;
&lt;p&gt;It was very satisfying for me to see Mark so engaged with a new version of his own game, on a portfolio website of his own domain that I hope will be helpful to him, together with a team of our mutual friends, and to create a novel experience that I think he will remember for a long time.&lt;/p&gt;
&lt;p&gt;Although he is a professional programmer and I&#39;m just a hobbyist at the moment, I really appreciated &amp;quot;collaborating&amp;quot; with past-Mark to co-create something together again - just like we used to in Qbasic when we were young kids. This was the highlight of my entire year!&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2025-12-31/" />
        </entry>
        <entry>
            <title>
                2025-09-09 | 🧑‍💻 Attending Rustconf 2025 in Seattle, WA 🦀
                
            </title>
            <updated>2025-09-09T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2025-09-09/</id>
            <content type="html">
                &lt;h1 id=&quot;2025-09-09-attending-rustconf-2025-in-seattle-wa&quot; tabindex=&quot;-1&quot;&gt;2025-09-09 | 🧑‍💻 Attending Rustconf 2025 in Seattle, WA 🦀&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250909210244.png&quot; alt=&quot;Pasted image 20250909210244.png&quot; /&gt;&lt;br /&gt;
Rust&#39;s Mascot, Ferris, visits Seattle&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;background&quot; tabindex=&quot;-1&quot;&gt;Background&lt;/h1&gt;
&lt;p&gt;RustConf is an annual conference about the Rust programming language hosted by the Rust Foundation - the nonprofit that manages the Rust programming language and its community.&lt;/p&gt;
&lt;p&gt;This year (2025), RustConf was held in Seattle, WA at the Hyatt from September 2-5. Last year it was in Montreal, Quebec, which I also attended.&lt;/p&gt;
&lt;h1 id=&quot;objectives&quot; tabindex=&quot;-1&quot;&gt;Objectives&lt;/h1&gt;
&lt;p&gt;Both times that I&#39;ve attended, I&#39;ve been a little uncertain about my specific objectives. I think my objectives include learning more about Rust, its ecosystem, applications, etc. I think they also include connecting with people who might present an opportunity for a business engagement, open source collaboration, or even investment opportunities. I think I&#39;m also hoping to find some of myself, or find my tribe as well.&lt;/p&gt;
&lt;p&gt;I&#39;ve been attending the &lt;a href=&quot;https://www.meetup.com/seattle-rust-user-group/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Seattle Rust User Group&lt;/a&gt; meetups since 2023 but its format leaves limited capacity for getting to know other &amp;quot;Rustaceans&amp;quot; beyond a post-event dinner. RustConf provides a bigger potential for meeting those objectives.&lt;/p&gt;
&lt;h1 id=&quot;experience&quot; tabindex=&quot;-1&quot;&gt;Experience&lt;/h1&gt;
&lt;p&gt;I attended RustConf proper from Wednesday September 3rd to Thursday the 4th. I also attended a paid Async fundamentals workshop on Tuesday the 2nd, and an &amp;quot;Unconference&amp;quot; on Friday the 5th. The workshop and conference were held at the Hyatt, and the Unconference was held at Fremont Abbey Arts Center.&lt;/p&gt;
&lt;h1 id=&quot;venue&quot; tabindex=&quot;-1&quot;&gt;Venue&lt;/h1&gt;
&lt;p&gt;The Hyatt was a typical conference location and though not particularly interesting as a venue, was functionally adequate. The spaces had comfortable chairs, lighting, the temperature was comfortable, lighting and ease of movement was good, etc. Since the conference appeared to be attended by mostly males, I found the bathrooms could be a bit busy, but I was sometimes able to access the bathrooms on other conference floors. My biggest complaints, and these are relatively small, are that the coffee wasn&#39;t kept stocked throughout the day, and the vegetarian food options were always more desirable to me than the non-vegetarian options, and I found myself wishing I had requested the vegetarian option. I will next year.&lt;/p&gt;
&lt;p&gt;I did find a few coffee shops nearby that were pleasant, particularly the Dirty Chai and Raspberry Oat Bar I bought at &lt;a href=&quot;https://grumpybeanseattle.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Grumpy Bean&lt;/a&gt;. The &amp;quot;Starbucks&amp;quot; located in the hotel just uses a machine with a touch screen display that the &amp;quot;baristas&amp;quot; tap a few buttons on. Grumpy Bean was the superior choice.&lt;/p&gt;
&lt;h1 id=&quot;content&quot; tabindex=&quot;-1&quot;&gt;Content&lt;/h1&gt;
&lt;h2 id=&quot;day-1-workshop&quot; tabindex=&quot;-1&quot;&gt;Day 1: Workshop&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://fosstodon.org/@herberticus&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Herbert Wolverson&lt;/a&gt;&#39;s Async Fundamental&#39;s workshop was the first workshop I&#39;ve ever attended. I chose his because I&#39;m a big fan of his book &amp;quot;Hands-On Rust&amp;quot; and am looking forward to the imminent release of the follow-up, &amp;quot;Advanced Hands-On Rust&amp;quot;.  It was the former book that I used to develop &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/apps/dungeon-crawler/&quot;&gt; a rogue like dungeon crawler&lt;/a&gt; that is playable in your web browser.&lt;/p&gt;
&lt;p&gt;I&#39;ve only done a few tutorials in async development, and &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;I don&#39;t consider myself a &amp;quot;professional&amp;quot; programmer&lt;/a&gt;, so I expected to be in over my head a bit. Herbert did a great job going into the background of async development, pulled back the curtains of how it works in Rust, and some of the idiosyncrasies of the Tokio runtime.&lt;/p&gt;
&lt;p&gt;However, I found the pace and the organization of the workshop beyond what I could ingest on the pace it was delivered. I realized afterwards that I had been expecting a project based workshop - akin to the organization of his books, but instead we worked through a series of small exercises that demonstrated various patterns of async code.&lt;/p&gt;
&lt;p&gt;I did come away with a better understanding of async overall. At least enough to feel comfortable experimenting in some real applications. I feel I could have got more out of it had I already had some real life async experience - whether in Rust or in another language. I&#39;d gladly attend another of Herbert&#39;s workshops, as he was a very pleasant and funny facilitator.&lt;/p&gt;
&lt;h2 id=&quot;day-2-rust-conf&quot; tabindex=&quot;-1&quot;&gt;Day 2: RustConf&lt;/h2&gt;
&lt;p&gt;Day 2 was actually the first day of RustConf. The day opened with some remarks by Dr. Rebecca Rumbul - the CEO of the Rust Foundation, by Nell - the MC for the main ballroom track sessions, and the first Keynote by Microsoft&#39;s CTO and Deputy CISO of Azure, Mark Russinovich.&lt;/p&gt;
&lt;h3 id=&quot;microsoft-srug-and-the-reactor&quot; tabindex=&quot;-1&quot;&gt;Microsoft, SRUG, and the Reactor&lt;/h3&gt;
&lt;p&gt;Mark discussed all the ways in which Microsoft is adopting and supporting Rust. Microsoft is also a significant sponsor of RustConf, has employees on the Rust Foundation board, and has made major donations to the Rust Foundation. Microsoft is changing a lot of Windows C++ to Rust.&lt;/p&gt;
&lt;p&gt;Despite those claims of support for Rust, Microsoft has left the Seattle Rust User Group (&amp;quot;SRUG&amp;quot;) without a regular meeting space, as Microsoft chose earlier this year to close down its Redmond campus building &amp;quot;The Reactor&amp;quot; which hosted not only SRUG, but multiple other meetup groups. It felt like being kicked off campus when I found out, and there was a strong sense of dissonance when I heard Mark&#39;s claims about Microsoft&#39;s enthusiasm for Rust. Maybe they are planning another, better, place to replace the Reactor, but in the meantime, SRUG has been experimenting with meeting up at Amazon&#39;s space, and other places as well.&lt;/p&gt;
&lt;p&gt;This didn&#39;t take away from the enthusiasm that Mark generated in his keynote, however.&lt;/p&gt;
&lt;h3 id=&quot;cont-day-2&quot; tabindex=&quot;-1&quot;&gt;Cont Day 2&lt;/h3&gt;
&lt;p&gt;I attended various sessions throughout the day, but one of the best and most memorable was by &lt;a href=&quot;https://goingforbrooke.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Brooke &amp;quot;goingforbrooke&amp;quot; Deuson&lt;/a&gt;. Brooke&#39;s presentation was a very well organized description of their work in helping fight against human trafficking by developing an app that enables government prosecutors access case files efficiently.  Her presentation loosely followed a STAR format typically used for interviews which I found to make her presentation compelling. Her presentation should be posted to the Rust Foundation&#39;s &lt;a href=&quot;https://www.youtube.com/@rustfoundation&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;YouTube channel&lt;/a&gt; in the coming days, and I&#39;d highly recommend watching it.&lt;/p&gt;
&lt;p&gt;The day&#39;s closing keynote was by Jonathan Kelley who discussed how Dioxus enables ergonomic fullstack and cross platform application development. Jonathan provided a very compelling demo, and although I am not a fan of React based frameworks (which Dioxus models), I may do a toy project with it just to challenge my own preconceptions.&lt;/p&gt;
&lt;p&gt;Amazon sponsored a party at a nearby cantina for RustConf but I elected not to go.&lt;/p&gt;
&lt;h2 id=&quot;day-3-rust-conf&quot; tabindex=&quot;-1&quot;&gt;Day 3: RustConf&lt;/h2&gt;
&lt;p&gt;Already, conference fatigue was setting in, but I was committed (and paid!) to making the most of the day. I decided to try out the &amp;quot;hallway track&amp;quot; talks after the keynotes and various points during the day. That is - just meeting people in breakout rooms, at the snack table, water cooler, etc.&lt;/p&gt;
&lt;p&gt;The opening keynote by Nell Shamrell-Harrington was a discussion of the Rust newsletter, &amp;quot;&lt;em&gt;This Week in Rust&lt;/em&gt;&amp;quot;, it&#39;s history, contributors, and getting the most out of it. I avidly read the newsletter and it was interesting to learn how the newsletter gets put together.&lt;/p&gt;
&lt;p&gt;After that, I attended a talk I thought was going to be about how Rivian electric vehicles use Rust, but it was instead mostly about how to drive adoption of Rust in the workplace. That is a very important topic, but not what I had expected given the title of the talk - and other talks had already covered it.&lt;/p&gt;
&lt;p&gt;This is when I decided to focus on the Hallway tracks - where I connected with entrepreneurs, Seattle locals who hadn&#39;t been to a SRUG meetup yet, and young undergrads deciding on the direction they want to take their career. I made several connections and see some potential for those to turn in to possible collaborations in the future.&lt;/p&gt;
&lt;p&gt;A couple other talks I attended I found interesting: one was by SRUG&#39;s organizer, Brad &amp;quot;Curly {U007D}&amp;quot; Gibson, on how he is building an electric car from first principles and provided a live demonstration of his code running on a Raspberry Pi (or Pico?) while controlling the accelerator and brakes of a mini car. Rain talked about a framework for well-behaved Async task Cancellation which complimented the knowledge from my Async workshop very well.&lt;/p&gt;
&lt;p&gt;The final talk of the day was about insights from the annual Rust survey, and revealed the RustConf 2026 location to be Montreal (again).&lt;/p&gt;
&lt;p&gt;Afterwards, I closed out the day with the SRUG folks at the same cantina that they Amazon had hosted the previous day.&lt;/p&gt;
&lt;h2 id=&quot;day-4-un-conference&quot; tabindex=&quot;-1&quot;&gt;Day 4: UnConference&lt;/h2&gt;
&lt;p&gt;The &amp;quot;UnConf&amp;quot; is a special format where attendees choose a set of topics to discuss in a series of breakout groups. I&#39;d participated in this kind of format once or twice before and found it a refreshing break from the formality of the conference format. It also provided a more interactive experience which was important given my conference fatigue.&lt;/p&gt;
&lt;p&gt;The location was at the Fremont Abby. Not all of the RustConf attendees were able to go due to the limited capacity of the venue, which was unfortunate. I&#39;m told there was another event held on Microsoft&#39;s campus, but don&#39;t recall the details.&lt;/p&gt;
&lt;p&gt;During this day, I attended group discussions about on-boarding contributors into Rust open source projects, driving adoption of Rust within organizations, &lt;a href=&quot;https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;CRDTs&lt;/a&gt;, and going from newbie to professional Rust developer.&lt;/p&gt;
&lt;p&gt;In that last talk, I found some ironic amusement in that a lot of career software developers don&#39;t have any Rust running in a production environment, but as a mere consultant for startups, I have deployed (some very limited) Rust in production for a website&#39;s back-end.&lt;/p&gt;
&lt;h1 id=&quot;sponsor-booths&quot; tabindex=&quot;-1&quot;&gt;Sponsor Booths&lt;/h1&gt;
&lt;p&gt;The Sponsor booths included some familiar companies and a few new ones. Google and Oracle had a couple tables but limited swag. The start-ups had a lot more swag. There were two IDE companies, an AI testing company, and a anti-Ransomware company. All had plenty of stickers and a few tshirts available. Interestingly, Microsoft did not have a table, nor did Amazon. I think most of the attendees wanted to talk to companies about getting jobs using Rust. I just wanted to get a free notebook from the folks at Google (but those were all gone).&lt;/p&gt;
&lt;h1 id=&quot;closing-thoughts&quot; tabindex=&quot;-1&quot;&gt;Closing Thoughts&lt;/h1&gt;
&lt;p&gt;RustConf was a good experience - especially considering the proximity to where I live, but I&#39;ll have to get more clear on my objectives before deciding whether to go back to Montreal for RustConf 2026. I&#39;m not looking forward to the very long flight from Seattle all the across the continent to Montreal and back.&lt;/p&gt;
&lt;p&gt;What I really enjoyed about this RustConf was that connected more closely with fellow SRUG members, made some connections with folks that have potential for future collaboration, and I learned a ton - even in the sessions that I had wrong expectations about.&lt;/p&gt;
&lt;p&gt;The conference staff was super professional and kind, and I didn&#39;t observe and am not aware of any altercations or negative interactions between people.&lt;/p&gt;
&lt;p&gt;When the videos of the talks get posted, I intend to watch a few that I&#39;d heard were good. Particularly Russell Cohen&#39;s &amp;quot;&lt;em&gt;A Hitchhiker’s Guide to Adopting Rust at Your Company&lt;/em&gt;&amp;quot; about how &amp;quot;&lt;em&gt;Over the last five years, thousands of developers and hundreds of teams have gone from zero-to-Rust at Amazon&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;If you and I met at RustConf and we didn&#39;t exchange contact info, &lt;a href=&quot;https://www.linkedin.com/in/isaacwyatt/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;let&#39;s connect&lt;/a&gt;!&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2025-09-09/" />
        </entry>
        <entry>
            <title>
                2025-07-26 | 🧑‍💻 Two Years In: Becoming a Programmer
                
            </title>
            <updated>2025-07-26T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2025-07-26/</id>
            <content type="html">
                &lt;h1 id=&quot;july-26-2025-two-years-in-becoming-a-programmer&quot; tabindex=&quot;-1&quot;&gt;July 26, 2025 | 🧑‍💻 Two Years In: Becoming a Programmer&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt; Blog Chain: Write An App (2023)&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250726130335.png&quot; alt=&quot;Pasted image 20250726130335.png&quot; /&gt;&lt;br /&gt;
My Github contribution graph for 2023&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;a-personal-development-goal&quot; tabindex=&quot;-1&quot;&gt;A Personal Development Goal&lt;/h1&gt;
&lt;p&gt;On &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-26/&quot;&gt; July 26, 2023&lt;/a&gt;, I wrote that I&#39;d started a journey to turn my hobby of coding into a profession of programming:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For a long time, I&#39;ve been a coder, but not a programmer (see: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;). One of my goals for this year is to build an app. Nothing useful, fancy, or impressive. Just to get from zero to one using modern tools. I wrote a handful of Windows apps in C# in the mid-aughts circa 2008, and a variety of data analysis in R, Python, SQL, since then, but no one has ever paid me to write code.&lt;/p&gt;
&lt;p&gt;I want to at least have the capability to earn an income by developing software, even if I never do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;completed-projects&quot; tabindex=&quot;-1&quot;&gt;Completed Projects&lt;/h1&gt;
&lt;p&gt;Since then, I&#39;ve completed many projects that includes command line tools, text based games, graphical games that I also made playable in web browsers, open source projects, some AI / LLM development, and more. Specifically I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Launched a game that I ported to Rust from Python (more on this in a future post)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2025-03-07/&quot;&gt; Wrote an AI formula function for Google Sheets&lt;/a&gt; more than a year before Google finally added the &lt;strong&gt;=AI()&lt;/strong&gt; formula function themselves (you can use mine for free instead of paying Google if you want)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-11-21/&quot;&gt;Contributed to an open source project&lt;/a&gt; called &amp;quot;TaskWarrior&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2024-01-25/&quot;&gt; Programmed a dungeon crawler game in Rust&lt;/a&gt; following a project from Herbert Wolverson&#39;s &lt;em&gt;&lt;a href=&quot;https://hands-on-rust.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Hands on Rust&lt;/a&gt;&lt;/em&gt;, which is an &lt;em&gt;excellent&lt;/em&gt; book.&lt;/li&gt;
&lt;li&gt;Built &lt;code&gt;gq-cli&lt;/code&gt; which is a command line interface to the Gqueues task manager service&lt;/li&gt;
&lt;li&gt;Programmed a &amp;quot;Clock Stopper&amp;quot; game on a Raspberry Pi Pico&lt;/li&gt;
&lt;li&gt;Programmed a &amp;quot;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2024-03-02/&quot;&gt;Blinky LED&lt;/a&gt;&amp;quot; program on a Raspberry Pi Pico&lt;/li&gt;
&lt;li&gt;Made a couple other prototype applications including a game in Rust&#39;s Bevy game engine, a simple text-based game, and a locally hosted LLM&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;programming-concepts&quot; tabindex=&quot;-1&quot;&gt;Programming Concepts&lt;/h1&gt;
&lt;p&gt;Though I&#39;ve definitely learned enough Rust to confidently say I&#39;m at least at an intermediate level of proficiency, I&#39;ve also learned so much more about specialized areas of programming, domains, supporting parts of the software development lifecycle, collaboration, and more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CI/CD with GitHub Actions&lt;/li&gt;
&lt;li&gt;WASM&lt;/li&gt;
&lt;li&gt;Implementing Entity Component System in Game Development&lt;/li&gt;
&lt;li&gt;Embedded Development&lt;/li&gt;
&lt;li&gt;Logging (with Grafana)&lt;/li&gt;
&lt;li&gt;Build Scripts&lt;/li&gt;
&lt;li&gt;Binary size optimization&lt;/li&gt;
&lt;li&gt;Async and Parallel programming&lt;/li&gt;
&lt;li&gt;Cloud workers&lt;/li&gt;
&lt;li&gt;GitHub Best Practices&lt;/li&gt;
&lt;li&gt;... and lots of stuff about data structures and algorithms, Rust syntax, Crates, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;tools-adopted&quot; tabindex=&quot;-1&quot;&gt;Tools Adopted&lt;/h1&gt;
&lt;p&gt;In the process, matured my use of supporting tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switched to Linux (first on Mint, then Fedora with KDE Plasma)&lt;/li&gt;
&lt;li&gt;Learned much more about Git and collaborating on GitHub&lt;/li&gt;
&lt;li&gt;Developed a preference for shell (Nushell) and terminal emulator (Ghostty)&lt;/li&gt;
&lt;li&gt;Upgraded my laptop to a Framework 13&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;joined-communities-and-attended-events&quot; tabindex=&quot;-1&quot;&gt;Joined Communities and Attended Events&lt;/h1&gt;
&lt;p&gt;I&#39;ve also joined and attended a few virtual and in-person communities and events:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RustConf 2024 in Montreal, CA&lt;/li&gt;
&lt;li&gt;Seattle Rust User Group&lt;/li&gt;
&lt;li&gt;Several Discord Communities&lt;/li&gt;
&lt;li&gt;and more one-off or ad hoc meetups&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;in-pursuit-of-the-north-star&quot; tabindex=&quot;-1&quot;&gt;In Pursuit of the North Star&lt;/h1&gt;
&lt;p&gt;However, the underlying goal of being &lt;em&gt;paid&lt;/em&gt; to produce code is still unmet. In my consulting work, I&#39;ve delivered SQL projects, and developed &lt;a href=&quot;https://www.getdbt.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;dbt&lt;/a&gt; models, low-code and no-code workflow automation, ETL configurations, and more. But thus far, I&#39;ve not been paid to contribute to a binary in production.&lt;/p&gt;
&lt;p&gt;There is also a lot of uncertainty if and to what extent my goal of being paid for code will remain possible given the significant progress and adoption of AI Agents and &amp;quot;Vibe Coding&amp;quot;. When I first interacted with LLMs (RIP &amp;quot;Bard&amp;quot;), I found them entertaining, but was &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-06-13/&quot;&gt;mostly underwhelmed and dismissive of it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My intent is to continue developing my programming skills, though. I suspect that my knowledge and experience will be valued in a future where LLMs produce good prototypes, and organizations need them built into production-ready applications or integrated into legacy systems.&lt;/p&gt;
&lt;p&gt;If you have any questions, comments, ideas, or have some suggestions or want to help in some way, please contact me on Mastodon at &lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://hachyderm.io/@iw&lt;/a&gt; .&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2025-07-26/" />
        </entry>
        <entry>
            <title>
                2025-07-22 |🛩️ Trip Report: Airplane Camping on Orcas Island
                
            </title>
            <updated>2025-07-22T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2025-07-22/</id>
            <content type="html">
                &lt;h1 id=&quot;july-22-2025-trip-report-airplane-camping-on-orcas-island-wa&quot; tabindex=&quot;-1&quot;&gt;July 22, 2025 | 🛩️ Trip Report: Airplane Camping on Orcas Island, WA&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250719221813.png&quot; alt=&quot;Pasted image 20250719221813.png&quot; /&gt;&lt;br /&gt;
Runway and taxiway lighting define the Orcas Island Airport (KORS) at twilight, against a distant, tree-lined coast.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;preface&quot; tabindex=&quot;-1&quot;&gt;Preface&lt;/h1&gt;
&lt;p&gt;I&#39;m writing and sharing this trip report because when I was preparing to go airplane camping for the first time, I didn&#39;t find all the information I wanted. Also, to the extent there is any &amp;quot;audience&amp;quot; to my website, it seems likely they would be interested.&lt;/p&gt;
&lt;p&gt;To get the information I wanted, I called the KORS airport manager, discussed a airplane camping with a private email group of pilots, and chatted with staff at my flying club. I still didn&#39;t have all the information I would have liked. Though if I&#39;d had complete information, the sense of adventure would have been diminished. Still, given that I was bringing my family, I wanted the trip to be as safe and fun an experience for them as I could make it.&lt;/p&gt;
&lt;p&gt;⚠️ Facts and figures in the trip report are provided with the caveat that they are pulled from my memory and notes, and may not be accurate. They shouldn&#39;t be relied on for flight planning. Official sources of information should be used.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;summary&quot; tabindex=&quot;-1&quot;&gt;Summary&lt;/h1&gt;
&lt;p&gt;This was my first airplane camping trip. I brought my partner and my pre-schooler. We flew in a Cirrus SR22 Turbo G6 with &lt;a href=&quot;https://medium.com/faa/fiki-wiki-ff72064c64cc&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;FIKI&lt;/a&gt; from KRNT Renton, WA to KORS Orcas Island, WA. The purpose of the trip was to try out airplane camping and learn first-hand about it without over-committing while minimizing risk factors. We stayed just a single night and spent only about 20 hours on the island, but we made the most of it with trips into Eastsound, WA and exploration of the airport.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;planning&quot; tabindex=&quot;-1&quot;&gt;Planning&lt;/h1&gt;
&lt;h2 id=&quot;location&quot; tabindex=&quot;-1&quot;&gt;Location&lt;/h2&gt;
&lt;p&gt;My pilot email group helped me narrow down viable camping locations. I chose Orcas Island (KORS) over options like Electric City or Concrete, WA, due to its familiarity, close proximity to Renton (KRNT), the close proximity of its airport to a nearby town, and its reputation as a good airport camping location.&lt;/p&gt;
&lt;h2 id=&quot;weight-and-balance&quot; tabindex=&quot;-1&quot;&gt;Weight and Balance&lt;/h2&gt;
&lt;p&gt;As with all flights, I try to manage risk responsibly, and because I had more variables to manage and more unknowns, I decided to constrain them further than usual. As a result, we minimized the amount of weight and volume of gear we chose to take in the plane. Although the max gross take off weight for our aircraft is ~3,500 lbs and we didn&#39;t need much fuel, I wanted to stay well within the weight and balance requirements, and far from the edges of the flight envelope.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250719232236.png&quot; alt=&quot;Pasted image 20250719232236.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The re-created, approximate weight weight-and-balance chart for my flight from Garmin Pilot. Each phase of flight is well within the trapezoid&#39;s boundaries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I also wanted to constrain weight in order to make sure I had minimal energy when landing at the ~2,900 foot runway at KORS. I earned my private pilot certificate flying at KPAO - Palo Alto, CA, which has only a ~2,400 ft runway, so managing a little extra weight for take off and landing wasn&#39;t nearly as big a factor as I had prepared for.&lt;/p&gt;
&lt;p&gt;We ended up only carrying about 50 pounds more than we would have if we were just taking a day trip. We brought a small 2 person tent, 2 sleeping pads, 3 sleeping bags, a tiny camping kitchen set mostly for heating water and drinking tea, coffee, and making oatmeal or &amp;quot;MRE&amp;quot;s. We also brought a small bag for clothes, toiletries, and camping tools like flash lights, med-kit, etc. We needed very little fuel given the close proximity of our destination. Since the fueling company for the aircraft fills to tabs by default (60 gallons for this aircraft), I decided to use that as my baseline and calculated that to be more than sufficient for the round trip plus still provide significant reserves should a diversion be necessary.&lt;/p&gt;
&lt;p&gt;I had been prepared to buckle our hiking backpack in the front passenger seat to make the weight and balance work, but at less than 50 total pounds, everything fit into the rear baggage compartment.  The available space inside the aircraft ended up being more constraining than weight.&lt;/p&gt;
&lt;h2 id=&quot;route&quot; tabindex=&quot;-1&quot;&gt;Route&lt;/h2&gt;
&lt;p&gt;Although many filed flight plans from KRNT to KORS are made direct, I wanted to fly VFR for the flexibility to do some aerial sight-seeing while en-route. The route KRNT -&amp;gt; KIREC -&amp;gt; KORS helped avoid most complex and busy airspace while giving good views of the islands and mountains while increasing proximity to viable places to land if we needed to divert for any reason. Even though we brought life jackets for every person in the aircraft, part of the reason I chose this route was because it reduced the amount of time we would be over open water.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250719233202.png&quot; alt=&quot;Pasted image 20250719233202.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;KRNT -&amp;gt; KIREC -&amp;gt; KORS as depicted in Garmin Pilot&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;camping-at-the-airport&quot; tabindex=&quot;-1&quot;&gt;Camping at the Airport&lt;/h2&gt;
&lt;p&gt;I found lots of useful information on &lt;a href=&quot;http://portoforcas.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;PortOfOrcas.com&lt;/a&gt; related to noise abatement, tie downs, courtesy crew car, etc. but nothing specific to camping on the airport. I called the airport manager, and got connected to &amp;quot;Chip&amp;quot;. I explained to Chip it was my first time and I didn&#39;t know what to expect. Chip directed me to the aforementioned website, and answered questions that the website didn&#39;t:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The tent camping is where the grass tie downs are (maybe this is common knowledge in the aviation community but wasn&#39;t obvious to me figuring it out by myself)&lt;/li&gt;
&lt;li&gt;There are a pair of bathrooms, each with an adjoined shower, accessible via a door with a code. Chip provided the code to me.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chip also asked that I review the noise abatement guidelines. Chip confirmed that open air fires are not allowed on the airport grounds (when I arrived I did observe a charcoal grill next to one of the picnic tables).&lt;/p&gt;
&lt;h2 id=&quot;activities-on-orcas-island&quot; tabindex=&quot;-1&quot;&gt;Activities on Orcas Island&lt;/h2&gt;
&lt;p&gt;One of the appealing features of airport camping at Orcas Island is that the town of Eastsound, Orcas Island&#39;s largest, is only a 20-30 minute walk from the airport. This is doable for my pre-schooler without too much protest. If I&#39;d had the foresight, it would have been good to bring their scooter.&lt;/p&gt;
&lt;p&gt;Within the town of Eastsound, there are plenty of boutique shops, a handful of coffee shops, restaurants, a few pubs, and a general store. There is also a museum, a great amphitheater and a nice children&#39;s playground.&lt;/p&gt;
&lt;p&gt;I had also intended to take a trip to Mt. Constitution. People can drive to the top, but our family likes to hike and Little Summit Trailhead is easy to reach by car. When I talked with Chip, they also confirmed that the crew car was available first come / first served for two to three hours at a time, but reserving a rental is advised if access to a car needs to guaranteed.&lt;/p&gt;
&lt;h2 id=&quot;itinerary&quot; tabindex=&quot;-1&quot;&gt;Itinerary&lt;/h2&gt;
&lt;p&gt;The planning doc we used had this original itinerary, as a guideline:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Day 1&lt;/strong&gt;&lt;br /&gt;
1:55pm Pack Airplane&lt;br /&gt;
2:15pm Preflight Aircraft&lt;br /&gt;
2:30pm Board Aircraft&lt;br /&gt;
2:45pm Wheels up - Fly to KORS&lt;br /&gt;
3:30pm Land @ KORS&lt;/p&gt;
&lt;p&gt;Find Tie-downs&lt;br /&gt;
Find Camp&lt;br /&gt;
Set up Camp&lt;/p&gt;
&lt;p&gt;5:00 Walk to Town?&lt;br /&gt;
5:30 Dinner @ Madrona or other&lt;/p&gt;
&lt;p&gt;6:30 Walk back to Tent&lt;br /&gt;
7:30 Snacks&lt;br /&gt;
8:30 Sleep&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Day 2&lt;/strong&gt;&lt;br /&gt;
Wake&lt;br /&gt;
Breakfast&lt;br /&gt;
Pack up camp&lt;br /&gt;
9:00 Rent Car or use crew car&lt;br /&gt;
9:15 Drive to Hike&lt;br /&gt;
9:45 Hike&lt;br /&gt;
12:00 Lunch&lt;br /&gt;
12:45 Back to plane&lt;br /&gt;
1:00pm Preflight Airplane&lt;br /&gt;
1:30pm Board Aircraft&lt;br /&gt;
1:45pm Wheels Up to RNT&lt;br /&gt;
2:30pm Land @ KRNT&lt;br /&gt;
2:45 Unpack plane / pack car&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The actual itinerary ended up being a bit different, but having a general plan helped shape expectations for the day. It also acted as a forcing function for answering questions like: &lt;em&gt;&amp;quot;How long does it take to walk to town?&amp;quot;&lt;/em&gt; and &lt;em&gt;&amp;quot;Which restaurants will be open?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;day-1&quot; tabindex=&quot;-1&quot;&gt;Day 1&lt;/h1&gt;
&lt;h2 id=&quot;brief&quot; tabindex=&quot;-1&quot;&gt;Brief&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Origin:&lt;/td&gt;
&lt;td&gt;KRNT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Destination:&lt;/td&gt;
&lt;td&gt;KORS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aircraft:&lt;/td&gt;
&lt;td&gt;Cirrus SR22 Turbo G6 w/ FIKI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Route:&lt;/td&gt;
&lt;td&gt;KRNT -&amp;gt; KIREC -&amp;gt; KORS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distance:&lt;/td&gt;
&lt;td&gt;87 NM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ETE:&lt;/td&gt;
&lt;td&gt;27 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fuel:&lt;/td&gt;
&lt;td&gt;9.3 g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fuel on Board:&lt;/td&gt;
&lt;td&gt;60.0 g&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cruise Speed:&lt;/td&gt;
&lt;td&gt;&amp;gt; 165 kts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cruise Altitude:&lt;/td&gt;
&lt;td&gt;4,500 MSL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pax:&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WX:&lt;/td&gt;
&lt;td&gt;29005KT 10SM CLR 29/09 A2974&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;departing-krnt&quot; tabindex=&quot;-1&quot;&gt;Departing KRNT&lt;/h2&gt;
&lt;p&gt;We arrived at the airport, unpacked the car, packed the airplane, pre-flighted, and had a fairly uneventful departure. The aircraft operated smoothly and had no issues mechanically. The only area of concern was that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hobbs_meter&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Hobbs meter&lt;/a&gt; had 0.1 more time than the log book indicated, for which I made a note.&lt;/p&gt;
&lt;p&gt;The weather at the time I prepared for departure was great, if a little warm for my taste. There were no clouds, and the wind was gentle and aligned to the runway despite the ATIS saying otherwise. Runway 34 was in use and aligned to my route of flight.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250720152344.png&quot; alt=&quot;Pasted image 20250720152344.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Enroute from KRNT to KIREC looking east at the Cascade mountain range&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;getting-flight-following&quot; tabindex=&quot;-1&quot;&gt;Getting Flight Following&lt;/h2&gt;
&lt;p&gt;I love flight following. I almost always get it. It allows me to always be on frequency with an air traffic controller who is looking out for conflicting traffic and airspace. I also appreciate they give me my next frequency. Occasionally they advise me when I&#39;ve missed something during my pre-flight brief, like parachute operations and helpfully suggest a heading that directs me away from those hotspots.&lt;/p&gt;
&lt;p&gt;KRNT doesn&#39;t issue flight following codes, however. This has been a minor frustration for me. I learned to fly at KPAO Palo Alto, CA where controllers issue flight following on the ground.&lt;/p&gt;
&lt;p&gt;When I took off and after clearing Renton&#39;s delta airspace, I attempted to get flight following from Seattle. However, the commercial air traffic carriers had the controller completely tied up.&lt;/p&gt;
&lt;p&gt;I decided to get flight following from the next controller along the route of flight. Since it would be a few minutes before I was in the next sector, I used the time to look up KPAE&#39;s departure frequency and load it in standby. However, when I switched to them to request flight following, I was told to wait for the controller change over. I originally contacted them when I was more than 11 miles south of KPAE, and by the time I got my flight following code, I was east of KPAE.&lt;/p&gt;
&lt;p&gt;I&#39;d very much love to be able to pick up flight following on the ground out of KRNT. The best I could conceivably do is to depart under instrument flight rules (IFR), and then cancel in the air while maintaining the assigned code and route of flight, but that seems like an abuse of the intent of IFR. It would also likely result in a long delay in take off time. I suspect the constraint to getting flight following on the ground at KRNT is one of ATC capacity, since I can get IFR clearances out of KRNT just fine.&lt;/p&gt;
&lt;h2 id=&quot;approaching-kors&quot; tabindex=&quot;-1&quot;&gt;Approaching KORS&lt;/h2&gt;
&lt;p&gt;Because of the arrival diagrams on &lt;a href=&quot;http://portoforcas.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;portoforcas.com&lt;/a&gt;, I decided it would be best to approach from north of the airfield. Even if I wanted to preserve the option of approaching from the south, I wasn&#39;t able to get the current conditions on the radio while east of the field due to the hill, Mt. Constitution (~2400 ft elevation), between the field and I.&lt;/p&gt;
&lt;p&gt;This was fine by me, as I&#39;d previously been to Orcas once and landed straight-in to the south on runway 16. Once I was able to get the one minute weather at KORS, I found that I&#39;d be landing on runway 34. There were many boats harbored in the cove just north of the runway which was interesting to see.&lt;/p&gt;
&lt;h2 id=&quot;arrival&quot; tabindex=&quot;-1&quot;&gt;Arrival&lt;/h2&gt;
&lt;p&gt;I maintained 1,500 MSL while on the downwind in order to minimize noise, and had to extend my downwind a little bit further in order to get a comfortable descent and turn to base. Since I had a pre-schooler who may not be fully comfortable with clearing their ears, I wanted to keep my descent rate a little lower.&lt;/p&gt;
&lt;p&gt;Fortunately there is a working &lt;a href=&quot;https://en.wikipedia.org/wiki/Visual_approach_slope_indicator&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;VASI&lt;/a&gt; that gave me confidence I was on a good glide path once I turned final. I had a really nice, stable approach which allowed me to focus on centering over the slightly narrow runway.&lt;/p&gt;
&lt;h2 id=&quot;setting-up-camp&quot; tabindex=&quot;-1&quot;&gt;Setting up Camp&lt;/h2&gt;
&lt;p&gt;After we arrived, I opted to taxi to and tie down on the asphalt ramp rather than the grass. I had neglected to inquire about taxiing on grass, what technique I would use, and how and where I would position the plane. I haven&#39;t had any real soft-field experience. Without real training or first hand knowledge, I decided to forgo taking the aircraft on the field and instead learn from the other campers and a CFI first.&lt;/p&gt;
&lt;p&gt;We unpacked the tent and supplies, and set up a tent on the grass tie downs sans airplane. We were the only ones to do so which I&#39;m sure raised some eyebrows. I also observed that there were in fact tiedown anchors in the grass but I had not brought any ropes with me - only wheel chocks.&lt;/p&gt;
&lt;p&gt;Finally, we had also brought only a two person tent for our trio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we set up the two person at home the day before and found it to be big enough for two adults and small child&lt;/li&gt;
&lt;li&gt;the two person tent is substantially lighter than our four-person car-camping tent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So between the lack of a plane on the grass, and a tiny tent, we did things a little different than the other groups. When we arrived there were only two other campers: a lone gentleman, and a family of four. The family of four had two boys just a little older than our own child, which was nice. We exchanged names and origins with the others, but kept it brief as the field was baking in the sun, and it was an unusually warm day.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250719220818.png&quot; alt=&quot;Pasted image 20250719220818.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your pilot and author resting in front of the tent on the grass tie downs at KORS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While we were unpacking and resting, we saw a helicopter arrive to join another, then both took off which was fun.&lt;/p&gt;
&lt;h2 id=&quot;eastsound-wa-ice-cream-and-dinner&quot; tabindex=&quot;-1&quot;&gt;Eastsound, WA - Ice cream and dinner&lt;/h2&gt;
&lt;p&gt;We walked the 25-ish minutes into town and joined the path after crossing the road, past the fire station, through a wooded path, past some apartments and bungalows, back through a wooded area before arriving. We stopped at three places looking for a cold lemonade, but gave up in favor of getting ice cream at Clever Cow Creamery.&lt;/p&gt;
&lt;p&gt;I had hoped to stop at a coffee shop I had been to once before on a previous trip to Orcas Island, but it has since been replaced by Orcas Bakery which was closed for the day. Instead we moseyed around long enough to work up an appetite and attempted to get food at the White Horse Pub. They were short staffed so we ended up getting food at The Madrona Bar and Grill.&lt;/p&gt;
&lt;h2 id=&quot;playtime-and-s-mores&quot; tabindex=&quot;-1&quot;&gt;Playtime and S&#39;mores&lt;/h2&gt;
&lt;p&gt;Afterward, we explored a little more and stopped by the children&#39;s park next to the amphitheater long enough for the day to start cooling. We walked back to the camp site to rest for a little while, before going to the picnic table next to the grill to set up our little camp stove and made s&#39;mores.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250720171656.png&quot; alt=&quot;Pasted image 20250720171656.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An illuminated wind sock on the field at KORS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After s&#39;mores and some more chit-chat with the other campers, my partner and child laid down for bed, while I went for a walk to explore the airport grounds, walk the taxiway, and get some pictures of the setting sun.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250720171610.png&quot; alt=&quot;Pasted image 20250720171610.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A dark runway lit by taxiway lights looking out at the water under the oranges and pinks of a sun set&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;day-2&quot; tabindex=&quot;-1&quot;&gt;Day 2&lt;/h1&gt;
&lt;h2 id=&quot;awake&quot; tabindex=&quot;-1&quot;&gt;Awake&lt;/h2&gt;
&lt;p&gt;None of us slept that well, unsurprisingly. It was less that it was a small tent, and more that most of us are used to sleeping in dark quiet cool rooms at home. My kiddo woke up as soon as it started getting light out, around 5:15am or so. This woke up my partner, who read to him while I fell back asleep for an hour-ish.&lt;/p&gt;
&lt;h2 id=&quot;breakfast&quot; tabindex=&quot;-1&quot;&gt;Breakfast&lt;/h2&gt;
&lt;p&gt;After I woke up, I got out the camp stove, went to one of the nearby picnic tables, and boiled water to make coffee, tea, and oatmeal for the kid. The day was still cool, and other campers were starting to wake. He wasn&#39;t that hungry, so we packed up breakfast and took turns going to the bathrooms to change and get ready for the day.&lt;/p&gt;
&lt;h2 id=&quot;mourning-routine&quot; tabindex=&quot;-1&quot;&gt;Mourning Routine&lt;/h2&gt;
&lt;p&gt;The bathrooms are nice enough. Better than state campground bathrooms and better than many motel bathrooms. Clean, well supplied. They are locked behind a keycode-door whose number I received from the airport manager when I called them the previous day. I didn&#39;t shower since we were heading home the same day but it appeared the hot water was abundant given the proximity of the water heater and steam / humidity of the bathroom.&lt;/p&gt;
&lt;h2 id=&quot;back-into-town&quot; tabindex=&quot;-1&quot;&gt;Back into town&lt;/h2&gt;
&lt;p&gt;After we broke down the campsite and packed the plane, we walked into Eastsound again so we could get proper coffee, tea, and pastries at The Dragonfly Coffeehouse - a literal house converted into a coffee shop. The coffee house had quality selection of coffee, tea, and home-made pastries. They also have fantastic outside seating on a grassy lawn in the back, but we opted to sit on the front porch.&lt;/p&gt;
&lt;p&gt;We also stopped by Darvill&#39;s Bookstore to get a postcard and look for a book for our child. Darvill&#39;s is quaint as it has a little coffee stand inside. The coffee stand has a little window to look out and binoculars to bird watch. I exclaimed to the barista how I admired his office view.&lt;/p&gt;
&lt;p&gt;Then we walked out to the passenger dock via one of the side streets to look out over the water. This was largely unremarkable but it is always fun to explore.&lt;/p&gt;
&lt;p&gt;We began wrapping up our day and made a couple more stops: one by the general store to let our kiddo pick out a toy that we hope he will remember the trip by, another by the local grocery store, Orcas Island Market, to get lunch-to-go from their deli, and one at the Orcas Island Historical Museum, to learn some of the local history.&lt;/p&gt;
&lt;p&gt;Finally, we played at the outdoor park, &amp;quot;The Playground on the Green&amp;quot;, for awhile before we decided to walk back to the airport to get ready to return home. We felt a few sprinkles along the way and the air seemed to cool. We observed several aircraft departing the island as low clouds rolled in.&lt;/p&gt;
&lt;h2 id=&quot;lunch-and-preflight&quot; tabindex=&quot;-1&quot;&gt;Lunch and Preflight&lt;/h2&gt;
&lt;p&gt;When we arrived back at the airport, we sat at a picnic table to eat, felt the cool air moving in and observed the clouds rolling. I decided to begin pre-flighting in case it started raining harder - and it did.&lt;/p&gt;
&lt;p&gt;There were no surprises during pre-flight, and the rain continued as I helped load my passengers. Although  I was prepared to file and depart IFR if necessary, the weather forecasts and one minute weather gave me confidence that it wouldn&#39;t be.&lt;/p&gt;
&lt;h2 id=&quot;return-flight&quot; tabindex=&quot;-1&quot;&gt;Return Flight&lt;/h2&gt;
&lt;p&gt;I followed the same route back as I did to the island so my route was: KORS -&amp;gt; KIREC -&amp;gt; KRNT but departed KORS on runway 16 and departed the area to the south.&lt;/p&gt;
&lt;p&gt;Once we left the area I picked up flight following from Whidby Approach. When I made my request, I forgot to ask for it &amp;quot;&lt;em&gt;with handoffs&lt;/em&gt;&amp;quot;. This is important if you want Whidby Approach to hand you off to the next sector once you are beyond their airspace. If you don&#39;t say this, they will give you a &amp;quot;local&amp;quot; code which if I recall correctly starts with a zero. Since I had forgotten to do this with Whidby, I apologized and clarified I wanted handoffs, and then got a new code.&lt;/p&gt;
&lt;p&gt;We cruised back at 5,500 feet and I briefly considered descending early to get below a cloud layer that appeared to be around 4,000, but after checking the weather at a few airports between my location and my destination, I decided the safest option would be to maintain my altitude and descend closer to my destination, and picking up IFR only if the layer didn&#39;t allow for it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250722115930.png&quot; alt=&quot;Pasted image 20250722115930.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Entering the East Sound north of Renton - Mt. Rainier in the distance peeking between the cloud layers&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was at this time that my child began getting a little loopy. He kept chortling into his microphone - presumably because he heard his own voice and found it funny. I was slightly concerned the decrease in air pressure, going rapidly from about sea level to 5,500 feet, was making him slightly hypoxic, so I asked my partner who was sitting next to him in the rear seat to check his lips and fingers - which were normal. He probably was just over-tired from a long two days, not napping for either, not sleeping well, and waking up early. Fortunately the Cirrus has passenger audio separation so that I could press a button on the audio panel and isolate myself from them: just me and ATC. When check in on them, my partner was trying to keep my kiddo from falling asleep since we wanted him to have a longer nap and the flight would be relatively short.&lt;/p&gt;
&lt;p&gt;I&#39;m glad I had flight following, as I had a potential conflict as I was about 13 miles or so north of KRNT: I needed to descend, but I had opposite direction traffic right at my 12 o&#39;clock at the altitude that I wanted to descend to - 2,500. I was under the outermost ring of the Seattle Bravo airspace and would be entering the inner ring if I didn&#39;t descend. In my experience, air traffic controllers are reluctant to issue clearances to VFR aircraft - which would be very understandable, and I definitely wouldn&#39;t want to enter one without a clearance. So I was caught between an airplane and a hard place of sorts. If I had to, I&#39;d make a turn or fly a 360 degree circle and return to the same course.&lt;/p&gt;
&lt;p&gt;I pulled the throttle back so I could cruise at a lower speed while I decided a course of action. Since I was on flight following, I informed Seattle Approach that my intent was to remain at my altitude until the aircraft passed below then descend to 2,500. Seattle Approach helpfully gave me a Bravo clearance &amp;quot;if I needed it&amp;quot;. With that, I went ahead and throttled back up and once I observed the aircraft passing below, I began my descent with no worries of busting airspace or aircraft.&lt;/p&gt;
&lt;p&gt;The arrival and taxi back was uneventful. However when I got to the tie downs, none of the typical spaces were available, as a Cirrus SF50 Vision Jet was occupying the one of the spots used for the SRs. I decided to park and chock in a corner that I observed another SR park the previous day. My kiddo helped put the wheel chocks in place.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250722115716.png&quot; alt=&quot;Pasted image 20250722115716.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Our reliable Cirrus SR-22 Turbo chocked in the corner of the ramp at KRNT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We unpacked the plane, loaded up the car, and drove home, and my kiddo fell asleep on the way home. He didn&#39;t wake up for two more hours - even when we unloaded him from the car. I think that is a good indicator of a successful adventure.&lt;/p&gt;
&lt;h1 id=&quot;reflection&quot; tabindex=&quot;-1&quot;&gt;Reflection&lt;/h1&gt;
&lt;p&gt;A goal of the trip was to learn about airport camping in a low risk way. Reflecting on what we learned is that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For just the three of us, airplane cargo space is a bigger constraint that weight-and-balance (barring other performance constraints like runway length, density altitude, elevation, etc.). As such, next time we will likely bring the larger tent, the full size camp stove instead of the small backpacking camp stove, and camp chairs.&lt;/li&gt;
&lt;li&gt;After talking with a CFI and the other campers about taxiing on the grass, I&#39;ll feel more enabled to do so instead of parking on the ramp. Since Cirrus, being a low wing, will provide less shade for the tent, I&#39;ll also be mindful of the orientation of the plane due to the angle and path of the sun when I choose my tent spot.&lt;/li&gt;
&lt;li&gt;Generating a list of questions prior to calling the airport manager was a good move - regarding bathrooms, showers, building codes, gate codes, car rentals and crew cars, local activities, etc.&lt;/li&gt;
&lt;li&gt;Bring rope for tie-downs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When I asked my family what they thought about our adventure they said:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;My kiddo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;I liked all all the things!&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;The s&#39;mores!&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Next time stay for 3 days!&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;My partner:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Seeing all the airplanes takeoff and land, talking to the other campers&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Did not like lack of shade at campsite&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Next time lets explore more of the island - probably rent a car&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;My observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The walk to Eastsound was short-ish and mostly shaded which was nice&lt;/li&gt;
&lt;li&gt;Eastsound has mostly quaint smaller mom-and-pop local businesses common for small towns&lt;/li&gt;
&lt;li&gt;Island communities typically rely extensively on tourism, and I worry that businesses may struggle if there is a reduction in visitors - which seems likely in the next couple years&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think we are well established to plan another airplane camping trip and am aware of a handful other locations in the PNW that we can try next.&lt;/p&gt;
&lt;p&gt;If you have recommendations, questions, comments, or reactions to this trip report, please follow me on Mastodon: &lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://hachyderm.io/@iw&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2025-07-22/" />
        </entry>
        <entry>
            <title>
                2025-03-07 | 🧑‍💻 An LLM (AI) Stochastic Parrot in the Sheets (SPITS)
                
            </title>
            <updated>2025-03-07T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2025-03-07/</id>
            <content type="html">
                &lt;h1 id=&quot;march-07-2025-an-llm-and-quot-ai-and-quot-stochastic-parrot-in-the-sheets-spits&quot; tabindex=&quot;-1&quot;&gt;March 07, 2025 | An LLM (&amp;quot;AI&amp;quot;) Stochastic Parrot in the Sheets (SPITS)&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250306143639.png&quot; alt=&quot;Pasted image 20250306143639.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I just want a Google Sheets formula function that lets me ask an LLM about some of the data in my file.&lt;/p&gt;
&lt;p&gt;Surprisingly, Google has yet to implement this, &lt;a href=&quot;https://github.com/iwyatt/spits&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;so I made one&lt;/a&gt;&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.isaacwyatt.com/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;If you have a Google Sheet with data like this:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;th&gt;C&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Transaction Date&lt;/td&gt;
&lt;td&gt;Product&lt;/td&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;9/1/2021&lt;/td&gt;
&lt;td&gt;Milk&lt;/td&gt;
&lt;td&gt;$3.49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;10/1/2021&lt;/td&gt;
&lt;td&gt;Gum&lt;/td&gt;
&lt;td&gt;$0.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;10/2/2021&lt;/td&gt;
&lt;td&gt;Toothpaste&lt;/td&gt;
&lt;td&gt;$3.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;11/5/2021&lt;/td&gt;
&lt;td&gt;Bananas&lt;/td&gt;
&lt;td&gt;$2.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;11/10/2021&lt;/td&gt;
&lt;td&gt;Cereal&lt;/td&gt;
&lt;td&gt;$5.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;11/11/2021&lt;/td&gt;
&lt;td&gt;Soap&lt;/td&gt;
&lt;td&gt;$3.99&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Then you can use the &lt;code&gt;spits&lt;/code&gt; formula function to ask a question about the data:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;=spits(&amp;quot;How much did I spend on food in total? How much in November?&amp;quot;,A1:C7)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And whatever cell you put that formula in will then have a response like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here&#39;s the breakdown of your food spending:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Total Spending&lt;/strong&gt;: The only items clearly identifiable as food are Milk, Gum, Bananas, and Cereal.  Toothpaste is debatable.  Assuming only the clear food items, your total food spending is 3.49 + 0.99 + 2.99 + 5.99 = $13.46&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;November Spending:&lt;/strong&gt; Your November food spending (Bananas and Cereal) was 2.99 + 5.99 = $8.98&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For my consulting clients, I&#39;ve used this to quickly take the terrible .csv files that sales and marketing people get from tradeshow booth scans or webinar events, to then clean and format the list of prospects for insertion in to Salesforce or another tool. I used it to impute and normalize job titles into job functions and seniority levels, I extracted and accurately separated First and Last names, and looked up websites for companies names - without paying extra to a data vendor. I&#39;ve also explored what this could look like as part of the data quality pipeline.&lt;/p&gt;
&lt;p&gt;I&#39;ve used this personally to analyze my stock portfolio and suggest improvements I should discuss with a financial advisor, and to analyze my expenses and build a cash flow projection for the next 6 months, etc.&lt;/p&gt;
&lt;p&gt;This functionality is different than, and in my opinion, appears to be more useful than &lt;a href=&quot;https://support.google.com/docs/answer/14218565?hl=en#zippy=%2Center-a-prompt-in-gemini%2Csummarize-spreadsheet-with-gemini%2Ccreate-formulas-with-gemini%2Cgenerate-data-analysis-insights-with-gemini&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;what Google offers for $20/month&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another feature is that the AI safety filters are turned off, unlike the Google Gemini web app.&lt;/p&gt;
&lt;p&gt;This does come with some limitations, namely the number of API calls that your formula can make in a minute and a day. Read the documentation provided in the Github repo: &lt;a href=&quot;https://github.com/iwyatt/spits&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://github.com/iwyatt/spits&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you use this or have suggestions for improvement, I&#39;d love to hear from you:&lt;br /&gt;
&lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://hachyderm.io/@iw&lt;/a&gt;&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;&amp;quot;Stochastic Parrot&amp;quot; is a derisive phrase to refer to probabilistic text generation used by the earliest forms of &amp;quot;AI&amp;quot; and large language models. &lt;a href=&quot;https://www.isaacwyatt.com/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2025-03-07/" />
        </entry>
        <entry>
            <title>
                2024-05-18 | ✅ Uncommitting
                
            </title>
            <updated>2024-05-18T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-05-18/</id>
            <content type="html">
                &lt;h1 id=&quot;may-18-2024-uncommitting&quot; tabindex=&quot;-1&quot;&gt;✅ May 18, 2024 | Uncommitting&lt;/h1&gt;
&lt;p&gt;To free up more of myself for more important objectives in my Hierarchy of Fulfillment, I will not be writing here as regularly as I have been in the last twelve months, where I have written almost weekly.&lt;/p&gt;
&lt;p&gt;Instead, I expect the writing to be a bit more sporadic and in small bursts as windows of availability emerge.&lt;/p&gt;
&lt;p&gt;I still intend to update my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/now/&quot;&gt;Now&lt;/a&gt; page on a regular basis.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-05-18/" />
        </entry>
        <entry>
            <title>
                2024-05-11 | 🛩️ A Mostly Boring Flight
                
            </title>
            <updated>2024-05-11T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-05-11/</id>
            <content type="html">
                &lt;h1 id=&quot;may-11-2024-a-mostly-boring-flight&quot; tabindex=&quot;-1&quot;&gt;May 11, 2024 | 🛩️ A Mostly Boring Flight&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250722132619.png&quot; alt=&quot;Pasted image 20250722132619.png&quot; /&gt;&lt;br /&gt;
Inside the cockpit of a Cirrus SR-20 flying on a clear sunny day with Mt. Rainier in the distance, covered in white snow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the challenges I&#39;ve found with flying isn&#39;t the flying itself but having a sustaining reason for flying.&lt;/p&gt;
&lt;p&gt;To me, it feels wasteful to to spend the money and time to go fly without a specific purpose. Sometimes in the pilot community we call these &amp;quot;missions&amp;quot; (which I&#39;m aware is occasionally discouraged). Some very common &amp;quot;missions&amp;quot; are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Earning additional pilot ratings (Instrument, Commercial) or endorsement (High Performance)&lt;/li&gt;
&lt;li&gt;Maintaining Currency (flying to get the necessary # of hours, landings, instrument approaches to legally maintain certain flying privileges)&lt;/li&gt;
&lt;li&gt;Maintaining Proficiency (flying to stay &lt;em&gt;good&lt;/em&gt; at flying)&lt;/li&gt;
&lt;li&gt;Charity Flights (eg volunteering for a non-profit to fly people with a particular need - often medical)&lt;/li&gt;
&lt;li&gt;Flying just to build hours to meet the pre-requisites for a particular rating, (eg to be an airline pilot one must have 1500 of flight time)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also personal &amp;quot;missions&amp;quot; like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Taking my family on a 1 hour flight to visit family that is 3-4 hours away by car&lt;/li&gt;
&lt;li&gt;Taking my family on a 30 minute flight which would otherwise be a 4 hour ferry ride.&lt;/li&gt;
&lt;li&gt;Flying to my friend&#39;s nearest municipal airport to pick them up before flying to a different airport for lunch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recently, I&#39;ve lacked any missions beyond staying current and proficient, and have found my enthusiasm for flying waning a bit.&lt;/p&gt;
&lt;p&gt;Yesterday I went out just to fly around.... and it was nice. The only &amp;quot;mission&amp;quot; objective was to get a take off and a landing so that (combined with other recent take offs and landings) I was current to carry passengers. It would be hard to go just flying around without both a take off and landing, so the mission had a high probability of success without any special planning.&lt;/p&gt;
&lt;p&gt;In fact, the weather was &amp;quot;severe clear&amp;quot;: not a cloud in the bright blue sky and winds less than five knots and almost straight down the runway. The biggest concern was that a &lt;a href=&quot;https://www.faa.gov/uas/getting_started/temporary_flight_restrictions&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;TFR&lt;/a&gt; for the region would become active later in the day, meaning my home airport would be unavailable for me to take off or land in. The reason for the TFR was that &lt;a href=&quot;https://en.wikipedia.org/wiki/President_of_the_United_States&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;POTUS&lt;/a&gt; was flying in to a nearby airport. I planned my flight to depart and return well before the TFR became active, so even this concern was mostly a non-factor. The flight would be pretty rote, and it was.&lt;/p&gt;
&lt;p&gt;Until it wasn&#39;t. It turns out that many people were out flying just like me on that lovely day. My approximately one hour flight was partially spent picking a place and an altitude that I could maneuver without getting in the way of other aircraft. I flew over my house and explored the area a little bit. That part was really nice.&lt;/p&gt;
&lt;p&gt;Then the flight got interesting. The arrival back to my home airport was as part of a string of five or six aircraft who all came inbound approximately the same time. Unusually, I was asked to join a five mile final rather than the typical arrival pattern.&lt;/p&gt;
&lt;p&gt;I ended up in a slow flight configuration for the last few miles due to being behind a &lt;strong&gt;very&lt;/strong&gt; slow Cessna ahead of me. Not helping matters was that there was another, very slightly faster, Cirrus, in trail. More than usual, I was both prepared and also expecting to be issued a &lt;a href=&quot;https://en.wikipedia.org/wiki/Go-around&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;go-around&lt;/a&gt; instruction by Air Traffic Control during my final approach as I watched the Cessna seemingly take as long as possible to land. After landing the Cessna appeared to dawdle on the runway until the Air Traffic Controller issued an &amp;quot;exit runway; no delay&amp;quot; instruction. Even after the Cessna repeated the instruction back, it seemed lethargic by my eye.&lt;/p&gt;
&lt;p&gt;It is possible that the apparent slowness was perceptual on my part, so I don&#39;t fault the Cessna at all. Even if they were abnormally slow, the Cessna could have been piloted by a student. Or a newer pilot, (for context, I still consider myself a somewhat newer pilot), who hasn&#39;t developed the situational awareness for anything but the typical traffic pattern. Or perhaps doesn&#39;t have a nice avionics set up to display all the traffic on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Multi-function_display&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;MFD&lt;/a&gt; that I have available in the Cirrus.&lt;/p&gt;
&lt;p&gt;I ended up following the &lt;a href=&quot;https://en.wikipedia.org/wiki/Visual_approach_slope_indicator&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;VASI&lt;/a&gt; perfectly all the way down and landing safely. Then I exited the runway promptly to allow the Cirrus behind me plenty of time for their landing.&lt;/p&gt;
&lt;p&gt;Although I never felt that the was flight unsafe at any point, it did demand more attention, radio work, and just a bit more airmanship than the norm. On reflection, it was a good reminder that even on the most rote of flights, interesting situations can and will happen that require both currency and proficiency. Those situations sometimes lead to learning something new or re-learning a nearly-forgotten lesson. In this case, I was grateful to have exercised (and sufficiently executed!) slow flight in a practical situation. Without the proficiency for slow flight, and had I kept a more normal pattern altitude speed, I would have certainly been instructed to go-around while waiting for the Cessna to exit the runway.&lt;/p&gt;
&lt;p&gt;I&#39;m looking forward to more mostly boring but slightly interesting flights while I wait for the next &amp;quot;mission&amp;quot;.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-05-11/" />
        </entry>
        <entry>
            <title>
                2024-05-04 | 🌳 Mossters of the Forest
                
            </title>
            <updated>2024-05-04T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-05-04/</id>
            <content type="html">
                &lt;h1 id=&quot;may-05-2024-mossters-of-the-forest&quot; tabindex=&quot;-1&quot;&gt;May 05, 2024 | Mossters of the Forest&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/mountaineering/&quot;&gt;Hiking&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250825225021.png&quot; alt=&quot;Pasted image 20250825225021.png&quot; /&gt;&lt;br /&gt;
A particularly twisted abomination&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is one of the best times to hike in the Pacific Northwest. What I especially love is how many of the lowland hikes are tours through moss-covered forests. The moss covers absolutely &lt;em&gt;everything&lt;/em&gt;. It is a vibrant green that nourishes the eyes. The air is fresh and thick with the smell of life.&lt;/p&gt;
&lt;p&gt;On a recent and particularly wet and cool morning, I hiked on the foot of a small mountain - down where the water collects in to a river and a trail accompanies it to no particular destination. Although I took pictures of flowers, wildlife, and more, it was my mind&#39;s conjuring of moss-monsters that I wanted to share. Each of the below looked slightly like it could be a large creature covered in moss - ready to come alive and make other things living in the forest not:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250825225310.png&quot; alt=&quot;Pasted image 20250825225310.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The many appendages of a creature burrowed slightly under the ground reaching out&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250825225346.png&quot; alt=&quot;Pasted image 20250825225346.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The multi-armed bandits of the forest&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020250825225403.png&quot; alt=&quot;Pasted image 20250825225403.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A lumbering insect&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I could imagine any of these moss-monsters being terrifying in the right (wrong) lighting. They would even make excellent movie or video game creatures to antagonize wayward pedestrians. Or perhaps, these mossters are the victims, and the stories they would tell would be scarier than otherwise.&lt;/p&gt;
&lt;p&gt;Either way, the story can&#39;t be known by looking at the pictures. It must be told by experiencing it directly - and it is quite the story.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-05-04/" />
        </entry>
        <entry>
            <title>
                2024-04-27 | 🛩️ What Flying an FAA Authorized Simulator Looks Like
                
            </title>
            <updated>2024-04-27T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-04-27/</id>
            <content type="html">
                &lt;h1 id=&quot;april-27-2024-what-flying-an-faa-authorized-simulator-looks-like&quot; tabindex=&quot;-1&quot;&gt;April 27, 2024 | 🛩️ What Flying an FAA Authorized Simulator Looks Like&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/video-games/&quot;&gt;Video Games&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240427141243.png&quot; alt=&quot;Pasted image 20240427141243.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &amp;quot;AATD&amp;quot; Cirrus Flight Simulator I recently used&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!Caution] The following contains what may be inaccurate, incomplete, or maybe even wrong aviation knowledge. Do not use this information in lieu of a Certified Flight Instructor, or the laws of the Federal Aviation Administration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I recently logged two hours of Hobbs time on a Flight Simulator authorized by the FAA as an &amp;quot;Advanced Aviation Training Device&amp;quot; (&amp;quot;AATD&amp;quot;). The purpose of these types of simulators is not only for training, but for maintaining pilot proficiency, and meeting pilot currency requirements. The use of simulators like this one is common and many flying clubs and flight schools have them. This simulator is specifically for Cirrus aircraft - the type of aircraft I fly outside the sim.&lt;/p&gt;
&lt;h1 id=&quot;for-training&quot; tabindex=&quot;-1&quot;&gt;For Training&lt;/h1&gt;
&lt;p&gt;During training, I used simulators primarily for learning Instrument Flight Rules (&amp;quot;IFR&amp;quot;) procedures. IFR flying is flight and navigation by reference to the cockpit&#39;s instruments and two-way radio only. This is in contrast to Visual Flight Rules (&amp;quot;VFR&amp;quot;) where one flies and navigates primarily by looking out the cockpit windshield, aided by instruments. A number of hours flying an AATD simulator can be applied to certain pilot ratings, as was the case for my Instrument Rating.&lt;/p&gt;
&lt;h1 id=&quot;for-proficiency&quot; tabindex=&quot;-1&quot;&gt;For Proficiency&lt;/h1&gt;
&lt;p&gt;For maintaining pilot proficiency, simulators are helpful because it can reinforce good procedures, habits, etc. Single-pilot IFR flying is perhaps the most cognitively demanding type of flying and having good muscle-memory and well-rehearsed procedures are important for maintaining safety.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240427141751.png&quot; alt=&quot;Pasted image 20240427141751.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The top screen of the simulator is completely white - simulating flying in Instrument Meteorological Conditions&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is why in the above photo, the top screen is completely white. I was simulating flying through clouds, which visually obscured all references to outside landmarks and hazards, while flying approaches in to airports. I did this for about two hours in this particular flight session.&lt;/p&gt;
&lt;h1 id=&quot;for-currency&quot; tabindex=&quot;-1&quot;&gt;For Currency&lt;/h1&gt;
&lt;p&gt;For meeting currency requirements, the simulator provides a legal method of getting the recent flight experience necessary for a pilot to fly IFR.  The FAA requires that in order to be legally able to fly under IFR in &amp;quot;instrument-meteorological-conditions&amp;quot; (IMC) aka flying through clouds, a pilot must have completed a certain number of approaches within a certain number of preceding months (its 6 in 6 but the details get hairy and I don&#39;t want anyone to mistake me sharing this as a canonical source of applied aviation knowledge), among other tasks.&lt;/p&gt;
&lt;p&gt;The FAA allows a pilot to maintain currency by using an authorized simulator, which is convenient. The simulator costs less per Hobbs hour than an airplane. It is also a good place to try some of the more challenging IFR scenarios or brush up on rarely used aviation knowledge. The simulator is also not prone to extended period of maintenance or poor real-life weather.&lt;/p&gt;
&lt;h1 id=&quot;for-challenge&quot; tabindex=&quot;-1&quot;&gt;For Challenge&lt;/h1&gt;
&lt;p&gt;For this simulator session, rather than doing the quickest, easiest approaches and letting the GPS and auto pilot do all the work, I hand-flew an approach using a VOR receiver and DME Arc at KHQM.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240427140822.png&quot; alt=&quot;Pasted image 20240427140822.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The approach &#39;plate&#39; for KHQM, Hoquaim, Washington&#39;s VOR RWY 6&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is an approach almost nobody flying in General Aviation would fly for any pragmatic reason today. However, because I hadn&#39;t flown one since my instrument flight training, doing it in the sim would be a good way to dust off the mental cobwebs.&lt;/p&gt;
&lt;p&gt;I also hand flew two other approaches, one of which required intercepting a point in space (SCENN) requiring the use of two VOR receivers, and then flying a course reversal for the approach (KTIW ILS  17).&lt;/p&gt;
&lt;h1 id=&quot;the-flight-simulator-hardware&quot; tabindex=&quot;-1&quot;&gt;The Flight Simulator Hardware&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240427142015.png&quot; alt=&quot;Pasted image 20240427142015.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Flight Simulator&#39;s Instructor&#39;s Station Computer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Flight Simulator System consists of two computers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Instructor&#39;s Station where they control the parameters of the environment&lt;/li&gt;
&lt;li&gt;The computer running the simulated environment of the pilot&#39;s aircraft.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Instructor&#39;s Station lets the operator change the various weather parameters of the flight and the initial positioning of the aircraft. It can also be used to instigate aircraft failures for the pilot to respond to, like an alternator failure or even a full engine out.&lt;/p&gt;
&lt;p&gt;The &amp;quot;flight deck&amp;quot; of the simulator which includes all the flight controls, is set up to simulate nearly the exact same physical flight controls of a Cirrus SR-22T including the Garmin Perspective Plus avionics and supplemental Oxygen (O2) switches. One notable difference is that instead of the Cirrus Aircraft Parachute System (&amp;quot;CAPS&amp;quot;) Handle being above and in-between the front seats of a real Cirrus aircraft, in the simulator, the CAPS is activated by a simple push button to the right of the Multi-Function Display (&amp;quot;MFD&amp;quot;).&lt;/p&gt;
&lt;h1 id=&quot;aatd-vs-microsoft-flight-simulator-2020&quot; tabindex=&quot;-1&quot;&gt;AATD vs Microsoft Flight Simulator 2020&lt;/h1&gt;
&lt;p&gt;I&#39;ve flown nearly as many hours in Microsoft Flight Simulator 2020 (MSFS2020) as I have in real airplanes, almost all of which are in either the MSFS2020&#39;s Cirrus SR-22 or the Cirrus SF-50 Vision Jet.&lt;/p&gt;
&lt;p&gt;The experience between the AATD simulator and MSFS2020 are mostly the same from a software simulator perspective. I can play MSFS2020 at home from the comfort of my computer desk, but without the benefit of all the physical flight controls. However, an added benefit of MSFS2020 is the addition of simulated Air Traffic Control (ATC). There are also plug-ins for MSFS2020 that allow a player to talk to real people who are playing the role of ATC, though I have not tried this myself. I&#39;d be surprised if the AATD&#39;s didn&#39;t have this capability. I did notice that the avionics and aircraft handling of MSFS2020 felt more true to real life than the AATD&#39;s. The &amp;quot;green alien&amp;quot; flight path reticle was quite unresponsive last time I flew the AATD, but in MSFS2020, it seems as responsive as the one in the aircraft I fly. The graphics of MSFS2020 are also much better.&lt;/p&gt;
&lt;p&gt;There are a few significant downsides to flying MSFS2020 over an AATD however:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;There is no separate &#39;instructor&#39;s station&#39; to set up a scenario or instigate failures that may test the pilot without their knowledge, though a player can set up these things themselves beforehand.&lt;/li&gt;
&lt;li&gt;Playing MSFS2020 at home doesn&#39;t qualify as an AATD and therefore doesn&#39;t count toward currency requirement or hours toward ratings&lt;/li&gt;
&lt;li&gt;&amp;quot;Learning to fly&amp;quot; by playing MSFS2020 without a Certified Flight Instructor (CFI) and matching real-life flying creates the possibilities of giving false confidence and learning (and reinforcing!) bad habits that could be hazardous to real life flying.&lt;/li&gt;
&lt;li&gt;Without the benefit of the physical flight controls, flying in MSFS2020 doesn&#39;t afford one to develop the &#39;muscle memory&#39; the same way as in a real aircraft or the AATD simulator.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Capture.png&quot; alt=&quot;Capture.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A screenshot of Microsoft Flight Simulator 2020 with a Cirrus SR-22 on Runway 16 at Renton, Washington (KRNT) airport&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are fun and good reasons to fly in MSFS2020 even without the benefits provided by an AATD, but those are beyond the scope of this post, which is about AATDs.&lt;/p&gt;
&lt;h1 id=&quot;wrap&quot; tabindex=&quot;-1&quot;&gt;Wrap&lt;/h1&gt;
&lt;p&gt;Still, I value the benefits of AATDs which save a lot of money that would otherwise be spent on flying real airplanes for currency and proficiency training. The money saved can then be directed to real life flying with friends and family to fun destinations and exploring the world.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-04-27/" />
        </entry>
        <entry>
            <title>
                2024-04-20 | Building a Roguelike in Rust&#39;s Bevy Game Engine
                
            </title>
            <updated>2024-04-20T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-04-20/</id>
            <content type="html">
                &lt;h1 id=&quot;april-20-2024-building-a-roguelike-in-rust-s-bevy-game-engine&quot; tabindex=&quot;-1&quot;&gt;April 20, 2024 | Building a Roguelike in Rust&#39;s Bevy Game Engine&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240420205633.png&quot; alt=&quot;Pasted image 20240420205633.png&quot; /&gt;&lt;br /&gt;
A screenshot of my &amp;quot;game&amp;quot; in an emulated terminal emulator&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of my goals this year, per my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;, is to write four types of software applications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;a game&lt;/li&gt;
&lt;li&gt;a &lt;a href=&quot;https://en.wikipedia.org/wiki/Command-line_interface&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Command Line Interface&lt;/a&gt; (&amp;quot;CLI&amp;quot;) application&lt;/li&gt;
&lt;li&gt;an &lt;a href=&quot;https://en.wikipedia.org/wiki/Embedded_software&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;embedded application&lt;/a&gt; (software running on a piece of hardware without an operating system)&lt;/li&gt;
&lt;li&gt;and some kind of application that uses a &lt;a href=&quot;https://en.wikipedia.org/wiki/Large_language_model&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Large Language Model&lt;/a&gt; (&amp;quot;LLM&amp;quot;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At the end of last year, I completed the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/apps/dungeon-crawler/&quot;&gt;DungeonCrawler&lt;/a&gt; project game, but I was following a guided tutorial in the excellent &lt;a href=&quot;https://www.amazon.com/Hands-Rust-Effective-Learning-Development/dp/1680508164&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;&lt;em&gt;Hands-on Rust&lt;/em&gt; book&lt;/a&gt; instead of writing my own code from scratch. I wanted to do a couple things differently for my game project this year:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;craft the code myself instead of following a tutorial&lt;/li&gt;
&lt;li&gt;build it in a formal game engine&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To meet these requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I would use a project guide as a feature-list to develop a game, but would mostly figure out the libraries to use and the code myself&lt;/li&gt;
&lt;li&gt;I decided to use the &lt;a href=&quot;https://bevyengine.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bevy game engine&lt;/a&gt;, which is written in, and uses, the &lt;a href=&quot;https://www.rust-lang.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust programming language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;my-approach&quot; tabindex=&quot;-1&quot;&gt;My Approach&lt;/h1&gt;
&lt;p&gt;Given these requirements, I found that the author of &lt;em&gt;Hands-on Rust&lt;/em&gt;, Herbert Wolverson, had actually made a project tutorial for a Roguelike Dungeon Crawler prior to and different from that in his book called &amp;quot;&lt;a href=&quot;https://bfnightly.bracketproductions.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Roguelike Tutorial&lt;/a&gt;&amp;quot;. I used this tutorial as more of a feature-list of what I would implement and a bit of a &amp;quot;cheat sheet&amp;quot; for when I got stuck trying figure out how to implement a feature - which happened a lot in the beginning.&lt;/p&gt;
&lt;h1 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;Features&lt;/h1&gt;
&lt;p&gt;After about 13 calendar weeks, but only about 9 or 10 weeks of productive development, I have a &amp;quot;game&amp;quot; that runs, but is not feature complete. What I completed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;building a program that compiles into a &amp;quot;game&amp;quot; that runs in a desktop window that looks like an old school computer terminal&lt;/li&gt;
&lt;li&gt;a player character represented by an &amp;quot;@&amp;quot; which has common statistics for the &lt;a href=&quot;https://en.wikipedia.org/wiki/Roguelike&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Roguelike genre&lt;/a&gt; like &amp;quot;Health Points&amp;quot;&lt;/li&gt;
&lt;li&gt;that can move around a (&lt;a href=&quot;https://en.wikipedia.org/wiki/Random_seed&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;seeded&lt;/a&gt;) randomly generated map&lt;/li&gt;
&lt;li&gt;which is composed of &lt;a href=&quot;https://en.wikipedia.org/wiki/ASCII&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;ASCII&lt;/a&gt; characters representing tiles of a map containing open spaces and trees which block player and monster line of sight and paths&lt;/li&gt;
&lt;li&gt;there are a couple kinds of monsters which will chase, and engage in combat, and have different combat statistics, use pathfinding, line of sight, and fog of war to determine where to move&lt;/li&gt;
&lt;li&gt;there are different kinds of weapons and armor which change the player&#39;s combat statistics, and potions which restore health when consumed, strewn randomly placed about the map&lt;/li&gt;
&lt;li&gt;the map is infinitely traversable and can be explored in any cardinal direction&lt;/li&gt;
&lt;li&gt;there is a game-over screen, and an inventory screen to manage items which can be dropped or used/equipped,&lt;/li&gt;
&lt;li&gt;the main game play screen has a dual-pane for displaying both the game play area and also the player&#39;s &amp;quot;Heads-Up-Display&amp;quot; (HUD) with statistics and player status.&lt;/li&gt;
&lt;li&gt;The game uses keyboard input but has (currently bugged) mouse-over support&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;challenges&quot; tabindex=&quot;-1&quot;&gt;Challenges&lt;/h1&gt;
&lt;p&gt;There were many challenges with implementation of many of the features, mainly with learning how to program in the context of the game engine, Bevy:&lt;/p&gt;
&lt;p&gt;The Bevy game engine is unlike other game engines where you build the game by composing an entire scene, which then generates the necessary code, like &lt;a href=&quot;https://en.wikipedia.org/wiki/Unity_(game_engine)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Unity&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Unreal_Engine&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Unreal Engine&lt;/a&gt;, or &lt;a href=&quot;https://en.wikipedia.org/wiki/Godot_(game_engine)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Godot&lt;/a&gt;. Instead, in Bevy, you build the game by writing the code using a framework called an &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Entity_component_system&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Entity Component System&lt;/a&gt;&lt;/em&gt; (ECS).&lt;/p&gt;
&lt;p&gt;I chose Bevy over the others because I wanted to learn how to program, not just build a game, and I wanted to do it in the Rust programming language. Bevy isn&#39;t the only game engine built in Rust, but because it encourages use of the ECS framework and relies on building the program from code, rather than composing a scene, it was the right choice for my objectives.&lt;/p&gt;
&lt;p&gt;Bevy also has a moderately sized plug-in ecosystem. The &lt;em&gt;&lt;a href=&quot;https://github.com/sarkahn/bevy_ascii_terminal&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bevy Ascii Terminal&lt;/a&gt;&lt;/em&gt; plug-in abstracted most of the camera work in the beginning of the project. However it would later become a source of frustration as I attempted to add mouse-over support for my game and again when I needed to learn how to implement dual-pane support for the game&#39;s user-interface (UI). Still, the plug-in delivered the old-school &amp;quot;terminal&amp;quot; aesthetic I was going for and even provided an example of a limited &amp;quot;Roguelike&amp;quot; in its example documentation.&lt;/p&gt;
&lt;p&gt;Another challenge was that after a certain point, the Roguelike tutorial I had been using as a feature-list and cheat-sheet for code became only useful for inspiration since my project had diverged so much from the reference material. This slowed down development as I had to figure out more and more problems on my own - though this is arguably the point of the entire exercise. So perhaps more a &amp;quot;feature rather than a bug&amp;quot; situation.&lt;/p&gt;
&lt;p&gt;There were also the typical challenges associated with any programming project: poor project design (on my part), ambiguous goals, inadequate or incomplete documentation, version compatibility, and lack of experience resulting in &amp;quot;re-inventing the wheel&amp;quot;.&lt;/p&gt;
&lt;h1 id=&quot;learnings&quot; tabindex=&quot;-1&quot;&gt;Learnings&lt;/h1&gt;
&lt;p&gt;Regardless of, and specifically due to the various and numerous challenges, I consider the project a success.&lt;/p&gt;
&lt;p&gt;Through the project, I learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A significant amount about developing games in a game engine using an ECS framework&lt;/li&gt;
&lt;li&gt;The importance of clarity in design documentation prior to writing code&lt;/li&gt;
&lt;li&gt;How to navigate and consume programming library documentation&lt;/li&gt;
&lt;li&gt;The benefits of prioritizing on &amp;quot;done&amp;quot; rather than &amp;quot;perfect&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of all, I gained significant and valuable experience in writing in the Rust programming language.&lt;/p&gt;
&lt;p&gt;One of best things I did best was promising myself to commit a new feature to the game every single week day, which I did for most weeks. That kind of promise forced me to write &amp;quot;good-enough&amp;quot; code and not get caught up trying to build bigger systems or plan for size or scale that would never be needed. As a result, I built significant momentum in the project - even when I stopped relying on the Roguelike tutorial for my feature list and cheat sheet. It wasn&#39;t until some significant disruptions in real life that forced me to re-prioritize and ultimately take a break from my project that my momentum stopped.&lt;/p&gt;
&lt;h1 id=&quot;wrap&quot; tabindex=&quot;-1&quot;&gt;Wrap&lt;/h1&gt;
&lt;p&gt;With a hard deadline of End of Quarter (EOQ), or March 31st, I must now consider my project &amp;quot;Done&amp;quot; despite not having implemented even half of all the &amp;quot;necessary&amp;quot; features I had intended. I&#39;d love to come back to this project in the future and finish all the primary features so I would feel comfortable calling it a &amp;quot;game&amp;quot; and publishing it. I&#39;d especially like to build out some of the experimental features I&#39;ve been dreaming up in my head.&lt;/p&gt;
&lt;p&gt;I must now move on to my next project, but I did succeed in my objective: I built a game in a game engine using the Rust Programming language.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-04-20/" />
        </entry>
        <entry>
            <title>
                2024-04-13 | FIRE: How much do I need?
                
            </title>
            <updated>2024-04-13T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-04-13/</id>
            <content type="html">
                &lt;h1 id=&quot;april-13-2024-approaching-fire-how-much-do-i-need&quot; tabindex=&quot;-1&quot;&gt;April 13, 2024 | Approaching FIRE: How much do I need?&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Coincidentally, a couple friends who don&#39;t know each other, both inquired within the past couple days about my budgeting and planning process. I assume they both know me as an organized, goal-oriented, data-inspired, and systematic/methodical person interested in financial independence and &amp;quot;retiring&amp;quot; early, aka &amp;quot;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt;&amp;quot;.&lt;/p&gt;
&lt;h1 id=&quot;disclaimer&quot; tabindex=&quot;-1&quot;&gt;Disclaimer&lt;/h1&gt;
&lt;p&gt;There are many many resources for learning about retirement, tools, and people who have spent more time researching what is available than me. What I do works for me, and might work for others too, but it isn&#39;t the only way to go about building a budgeting process or retirement plan.&lt;/p&gt;
&lt;p&gt;In fact, &lt;strong&gt;I&#39;m not a financial advisor, and I don&#39;t have or give financial advise. Others should definitely consult an expert, which I am not, before making any financial decisions.&lt;/strong&gt; I&#39;m happy to share my tools and process, but they are not guaranteed to work, be correct, or free of incorrect assumptions. For this type of thing, building one&#39;s own tools and process based on inspiration from others is helpful - especially since I am doing this from the perspective of a US-based tech employee with FAANG and Start-up experience.&lt;/p&gt;
&lt;h1 id=&quot;my-approach-to-fire&quot; tabindex=&quot;-1&quot;&gt;My Approach to FIRE&lt;/h1&gt;
&lt;p&gt;Strictly for inspiring others, I&#39;m sharing  &lt;em&gt;my own approach&lt;/em&gt; which includes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How I define &#39;&lt;em&gt;Minimum Viable Retirement&lt;/em&gt;&#39; (&amp;quot;MVR&amp;quot;) to answer the question &#39;&lt;em&gt;How much do I need to retire?&lt;/em&gt;&#39;&lt;/li&gt;
&lt;li&gt;A Forecasting Tool (in Google Sheets) to chart a course and track progress toward MVR&lt;/li&gt;
&lt;li&gt;A Budgeting Process and Tool (Google Sheets) to manage, optimize, and accelerate progress toward MVR&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This post focuses on the first of the three:&lt;/p&gt;
&lt;h1 id=&quot;when-can-i-retire-how-much-do-i-need-defining-minimum-viable-retirement-mvr&quot; tabindex=&quot;-1&quot;&gt;When Can I Retire? How much Do I need? - Defining Minimum Viable Retirement (MVR)&lt;/h1&gt;
&lt;p&gt;TLDR: The general rule of thumb I&#39;ve repeatedly come across, and come to use is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Annual Expenses x 20&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, &lt;strong&gt;hypothetically&lt;/strong&gt; (just picking a round number), if my household&#39;s annual expenses were $250,000 per year, it would imply I need $5,000,000 in order to retire: &lt;code&gt;$250,000 * 20 = $5,000,000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;However, this is a generalization with a few big assumptions:&lt;/p&gt;
&lt;p&gt;This assumes that my annual expenses will stay exactly the same. In reality, my standard of living might change. By being home more with more time on my hands in retirement, I may choose to spend less on certain goods and services and need &lt;strong&gt;less&lt;/strong&gt; than the above hypothetical example. Some people might want to spend &lt;strong&gt;more&lt;/strong&gt; in retirement so they can travel. So if by changing my expectations for standard of living in retirement such that my annual expenses could be just $75,000, then I would need $1,500,000 to retire.&lt;/p&gt;
&lt;p&gt;I&#39;ve known since I was in college that maintaining a humble standard of living was important for character. Later on I also learned that avoiding &amp;quot;lifestyle creep&amp;quot; where one&#39;s standard of living increases with increases in income, is important for quickly accumulating enough in my retirement savings that it reduces risk and creates options for how trade of time versus income later in life.&lt;/p&gt;
&lt;p&gt;The &#39;Annual Expenses x 20&#39; formula also assumes that a nest egg will continue to appreciate at least 4% per year in retirement. With the total nest egg invested in accounts earning interest of 4% per year or more, one could hypothetically never run out of money by living only on the appreciation of the investments.&lt;/p&gt;
&lt;p&gt;Some consider using 4% as unnecessarily risk-averse, and some think 6% is doable, implying one could get by with less than 20x Annual Expenses. Some think there is no withdrawal rate that is safe, with even 1% being optimistic. I think 4% seems like a sufficiently responsible number to target, but remain open to changing my approach if/when I get new compelling information.&lt;/p&gt;
&lt;p&gt;There are also assumptions about the number of years one may live after retirement, what one wishes to leave to their loved ones, the value of collecting Social Security in retirement, how health care costs change as we age, and liabilities remaining in retirement (like mortgages) that this generalization does not consider.&lt;/p&gt;
&lt;p&gt;These assumptions are why I think about a retirement number as a bit of a spectrum between the minimum required, and ideal: I&#39;ve defined a &amp;quot;Minimum Viable Retirement&amp;quot; (MVR) where my standard of living is the minimum for what I could accept. It is a no-frills, move-to-the-cheapest-town, no-extravagances, type of retirement. Although I&#39;d eventually find a way to be satisfied with this type of retirement, the MVR is more of a psychological threshold that when surpassed, allows me to consider other means of income, standards of living in retirement, and flexibility in how I live day to day.&lt;/p&gt;
&lt;p&gt;An alternative to full &amp;quot;retirement&amp;quot; is the concept of &amp;quot;Coast FIRE&amp;quot;, which is a type of &amp;quot;retirement&amp;quot; where one has enough saved to meet all the regular annual expenses, but chooses to work for fun-money and fulfillment. This is more about &amp;quot;Financial Independence&amp;quot; without the &amp;quot;Retiring Early&amp;quot; part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt; acronym, and can hypothetically make hitting a specific number much easier and earlier in one&#39;s working years.&lt;/p&gt;
&lt;p&gt;So for me, my retirement number is more a series of thresholds, from a MVR, to Coast FIRE, to &amp;quot;ChubbyFire&amp;quot;, to &amp;quot;FatFire&amp;quot;, with the primary distinction being the standard of living I have in retirement. In the next post in this series, I intend to share my process / tools to build a plan to get to MVR.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-04-13/" />
        </entry>
        <entry>
            <title>
                2024-04-03 | Quick Lunch Flight in Cirrus SR22 Turbo from Renton, WA to Gig Harbor, WA
                
            </title>
            <updated>2024-04-03T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-04-03/</id>
            <content type="html">
                &lt;h1 id=&quot;april-3-2024-quick-lunch-flight-in-cirrus-sr-22-turbo-from-renton-wa-to-gig-harbor-wa&quot; tabindex=&quot;-1&quot;&gt;April 3, 2024 - Quick Lunch Flight in Cirrus SR22 Turbo from Renton, WA to Gig Harbor, WA&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403113134.png&quot; alt=&quot;Pasted image 20240403113134.png&quot; /&gt;&lt;br /&gt;
The &amp;quot;tennis ball&amp;quot;. I had booked a plane with a more humble color, but the club bumped me in to this aircraft for reasons of &amp;quot;it would help them out&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mostly for the purposes of maintaining my flying currency, I flew a Cirrus SR-22 Turbo from Renton, WA (KRNT) to Gig Harbor, WA (KTIW). Then I stopped for lunch, a salad, at The Hub. After lunch I flew back to Renton. Not a terribly exciting day worth writing a post about.&lt;/p&gt;
&lt;p&gt;I had thought about doing some air-work (turns around a point, steep turns, etc) before or after lunch, but the area I like to practice in was already occupied with a fair amount of VFR based on what I could observe with &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillance%E2%80%93Broadcast&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;ADSB&lt;/a&gt;. The most interesting part of my flying was actually the the light cross and headwinds (between 8 and 12 knots observed), but nothing substantial.&lt;/p&gt;
&lt;p&gt;Instead, I just tried to spend more time taking in the aspects of aviation surrounding piloting my own aircraft: the sights, sounds, and studying the other aircraft around me.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403114056.png&quot; alt=&quot;Pasted image 20240403114056.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A 1944 Douglas A-26C Aircraft on the ramp at the Renton Airport&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although I took this picture when I returned to Renton, I actually recorded video of this &lt;a href=&quot;https://en.wikipedia.org/wiki/Douglas_A-26_Invader&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;1944 Douglas A-26C&lt;/a&gt; taking off on my departure from Renton.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403114306.png&quot; alt=&quot;Pasted image 20240403114306.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Looking over the nose and between propellers of my aircraft, I see a welcome vehicle with what appears to be lights on top&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Once I arrived, taxi&#39;d and parked in Gig Harbor, I observed the above vehicle with what appeared to be light racks on the top. I also observed a&lt;br /&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Bombardier_Challenger_300&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bombardier Challenger 300&lt;/a&gt; land and taxi before parking next to the vehicle.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403131354.png&quot; alt=&quot;Pasted image 20240403131354.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A Bombardier Challenger 300 taxiing at Tacoma Narrows airport&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Naturally I was curious who was on the aircraft, but I wasn&#39;t able to see nor figure it out by looking up the owner of the aircraft.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403115002.png&quot; alt=&quot;Pasted image 20240403115002.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What appears to be a military helicopter flies over the runway at Tacoma Narrows Airport in Gig Harbor, WA.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A few minutes later, after my Arnold Palmer and salad arrived at my table, I got to see this helicopter fly an approach over the runway. It appeared to be a military helicopter with possible weapon pods underneath. I don&#39;t know the make or model of the helicopter, however.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240403115736.png&quot; alt=&quot;Pasted image 20240403115736.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Looking down over the leading edge of the wing at the Tacoma Dome&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On the way home, I tried to find interesting things along my route to take photos of to remind myself of the joys of flying and seeing things from a different perspective. One structure I often drive by is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Tacoma_Dome&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Tacoma Dome&lt;/a&gt;, positioned along Interstate 5. From the air, it is fairly distinct, but perhaps not quite as interesting to look at.&lt;/p&gt;
&lt;p&gt;For the outbound and return flight, I only put 1.1 hours on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Hobbs_meter&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;hobbs meter&lt;/a&gt;. My flying club charges by the hour as measured by the hobbs. I probably could have made the round trip closer to 0.8 if I&#39;d kept the throttle at max cruise. However, I wanted to enjoy the sunny day, so I found myself flying at minimum cruise power. I think it was worth it.&lt;/p&gt;
&lt;p&gt;I suspect that the hobbs meter is the most reliable instrument in an aircraft and have &lt;strong&gt;never&lt;/strong&gt; heard of one malfunctioning before.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-04-03/" />
        </entry>
        <entry>
            <title>
                2024-03-30 | How I replaced my vendor with a very small C# script | Mistaking an Opportunity as a Problem
                
            </title>
            <updated>2024-03-30T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-03-30/</id>
            <content type="html">
                &lt;h1 id=&quot;march-30-2024-how-i-replaced-my-vendor-with-a-very-small-c-script-mistaking-an-opportunity-as-a-problem&quot; tabindex=&quot;-1&quot;&gt;March 30, 2024 - How I replaced my vendor with a very small C# script | Mistaking an Opportunity as a Problem&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I may have accidentally fired a vendor, drove a small business to close shop, and maybe missed a half million dollar market opportunity by making a free app.&lt;/p&gt;
&lt;p&gt;Early in my career, I worked for a B2B SaaS company whose marketing function was doing the latest lead-gen tactic of the day: buying nearly-cold email lists from vendors who claimed that the people we&#39;d end up emailing had some behavioral affinity for the space we were in. Sounds icky right? Except today, B2B software sales people just buy the email lists from vendors or scrape it off Linkedin in and don&#39;t even bother with behavioral affinity matching most of the time. Same thing, its just easier and cheaper to have sales people do it themselves.&lt;/p&gt;
&lt;p&gt;Part of my job, as an &amp;quot;analyst&amp;quot; within the marketing function, was to ensure the that my company only paid for the portions of a vendor&#39;s email list that we didn&#39;t already have in our marketing database. Of course, we didn&#39;t want to give our vendor access to all of our records to scrub their email list against ours, and neither did they want to give us the whole list for us to scrub ourselves. A common solution at the time was to use third party vendors for whom we could upload our email list to, the vendor theirs, and the third party vendor would return the matched email addresses to the list provider and/or the non-matched email addresses to us. My company had a paid recurring subscription to one such vendor.&lt;/p&gt;
&lt;p&gt;I liked the list scrubbing vendor and their product just fine. But for reasons I don&#39;t remember, some of the vendors selling us email lists couldn&#39;t or wouldn&#39;t use the third party vendor to scrub their lists. It was my job to figure out a solution to get the email list that my company had already paid for (days ago!) scrubbed and in to our email database - ASAP!&lt;/p&gt;
&lt;p&gt;In the process of learning about how our list scrubbing vendor worked, I must have read up on what a hashing algorithm is, how it works, and how it is different than encryption. I actually don&#39;t remember how or why I learned this, but I found my way in to the C# programming language, which I was already somewhat familiar with, to see if I could create my own list scrubbing tool. Back then, &lt;a href=&quot;https://en.wikipedia.org/wiki/MD5&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;MD5&lt;/a&gt; was the hashing algorithm used for such a process.&lt;/p&gt;
&lt;p&gt;For the non-technical, a hashing algorithm is (in gross over-generalized and hand wavy terms) sort of like one-way encryption. It might give us the &lt;em&gt;fingerprint&lt;/em&gt; of the underlying data without revealing the &lt;em&gt;identity&lt;/em&gt; of the fingerprint&#39;s owner. Hashing something &lt;em&gt;looks&lt;/em&gt; a lot like encryption though: If your password was &lt;code&gt;1-2-3-4-5&lt;/code&gt; and you put it through an MD5 hashing algorithm, it&#39;s output would look like &lt;code&gt;601bcbd12379a3a03bcbad773954109d&lt;/code&gt;. Something hashed isn&#39;t intended to be decrypted. Just sorted and compared. In fact, it was initially thought that hashes &lt;em&gt;can&#39;t&lt;/em&gt; be decrypted (though we would later find out that to be not entirely accurate). If you trust it, ask your preferred &lt;a href=&quot;https://en.wikipedia.org/wiki/Stochastic_parrot&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Stochastic Parrot&lt;/a&gt; for an ELI5 of Hashing Algorithms.&lt;/p&gt;
&lt;p&gt;Fortunately for me, the C# programming language already had MD5 support in an existing library. So I created a script, and then a desktop app to hash and compare email lists. It was a very straight forward endeavor. After I tested a variety of CSV lists with the app, I live-tested it with an email list vendor over the phone. I emailed them the zipped binary, told them how to unzip and run it, and instructed them on how to use it to compare my MD5 hashed list with their own list. Aside from a complaint that the app&#39;s progress counter stopped incrementing through their list at 65,535 rows, my vendor assured me the whole list was scrubbed and its output saved to the appropriate CSV - which he then sent me.&lt;/p&gt;
&lt;p&gt;I just gave away, free of license or any financial request, a desktop app that could be infinitely copied and shared, for which others were charging a subscription fee of at least a couple thousand US dollars per month. I wasn&#39;t trying to undercut our list scrubbing vendor or undercut any of the small businesses in the same space. I was actually just too focused on solving the problem to think about the opportunity.&lt;/p&gt;
&lt;p&gt;The market capitalization and lifetime business opportunity for such a product couldn&#39;t ever have been that big. I&#39;m generously guessing a million US dollars or less. I vaguely even recall discussing the market opportunity with a couple coworkers and being told by our boss it was too small for my employer to worry about. That was an implied green-light to do what I want outside of work, but I considered the problem solved, and I was too focused on starting my upcoming MBA program 🙃.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-03-30/" />
        </entry>
        <entry>
            <title>
                2024-03-20 | My 2023 Hierarchy of Fulfillment Report Card
                
            </title>
            <updated>2024-03-20T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-03-20/</id>
            <content type="html">
                &lt;h1 id=&quot;march-20-2024-my-2023-hierarchy-of-fulfillment-report-card&quot; tabindex=&quot;-1&quot;&gt;March 20, 2024 - My 2023 Hierarchy of Fulfillment Report Card&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231001135043.png&quot; alt=&quot;Pasted image 20231001135043.png&quot; /&gt;&lt;br /&gt;
My slightly redacted 2023 &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-10-01/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For the past several years I&#39;ve been iterating on a goal setting framework whose intent is to help me align how I spend my time to the things that hypothetically yield sustainable fulfillment through experiences of novelty and awe. I refer to this framework as my &amp;quot;Hierarchy of Fulfillment&amp;quot;. It borrows concepts from Maslow&#39;s Hierarchy of Needs, Covey&#39;s 7 Habits, and David Allen&#39;s Getting Things Done.&lt;/p&gt;
&lt;p&gt;When I close a calendar year, I look back at what I set out to do versus what I actually did and give myself a report card. I do this informally as part of setting the new year&#39;s goals and try to adjust according to what is more realistic, however I also want to apply a &amp;quot;grade&amp;quot;.&lt;/p&gt;
&lt;p&gt;As a very personal document, I can&#39;t share an unredacted view of &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023&lt;/a&gt;&#39;s Hierarchy of Fulfillment, but I can summarize each of the sections, sum the Score, apply a Grade, and try to glean insights. Read &lt;a href=&quot;https://www.isaacwyatt.com/posts/2023-10-01/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;how the Hierarchy of Fulfillment works&lt;/a&gt; for further context.&lt;/p&gt;
&lt;h1 id=&quot;report-card&quot; tabindex=&quot;-1&quot;&gt;Report Card:&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Grade&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5.0) Purposeful Experiences of Novelty and Awe&lt;/td&gt;
&lt;td&gt;5.5 / 8&lt;/td&gt;
&lt;td&gt;B+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4.0) Strengthen Social Bonds&lt;/td&gt;
&lt;td&gt;4.3 / 10&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.0) Resources for Living&lt;/td&gt;
&lt;td&gt;4.25 / 9&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.0) Capabilities of Self&lt;/td&gt;
&lt;td&gt;1 / 5&lt;/td&gt;
&lt;td&gt;D+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.0) Infrastructure of Self&lt;/td&gt;
&lt;td&gt;5 / 8&lt;/td&gt;
&lt;td&gt;C+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As a strictly self-graded report card, I can be as harsh or generous with my assessment as I think is appropriate, so the quantitative Score is objectively based on the number of complete items within the Area, but the Grade is my own weighted assessment given the relative importance and impact of the items in that area.&lt;/p&gt;
&lt;h2 id=&quot;5-0-purposeful-experiences-of-novelty-and-awe&quot; tabindex=&quot;-1&quot;&gt;5.0) Purposeful Experiences of Novelty and Awe&lt;/h2&gt;
&lt;p&gt;As the pinnacle objective of the framework, I&#39;m fairly happy with the experiences I had in &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-27/&quot;&gt;summited a new mountain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Traveled for the first time since before the pandemic to visit family and friends&lt;/li&gt;
&lt;li&gt;Played through a &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-11/&quot;&gt;few video games, to completion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Went &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-09/&quot;&gt;camping&lt;/a&gt; with a new family member&lt;/li&gt;
&lt;li&gt;And launched this website, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There were only a couple things I didn&#39;t complete, but one of them was out of my control, and the other wasn&#39;t as important or timely as I thought at the beginning of 2023.&lt;/p&gt;
&lt;p&gt;I think a B+ (maybe even an A-) is a fair assessment for accomplishments in this Area.&lt;/p&gt;
&lt;h2 id=&quot;4-0-strengthen-social-bonds&quot; tabindex=&quot;-1&quot;&gt;4.0) Strengthen Social Bonds&lt;/h2&gt;
&lt;p&gt;In this day and age, and particularly at this stage of my life, forming new social bonds is difficult to make happen for all the reasons one would expect. So creating and strengthening social bonds has to be an intentional outcome of how I spend my time.&lt;/p&gt;
&lt;p&gt;So whether it was spending time with or supporting members of my family, creating or strengthening friendships, or networking for work purposes, I achieved a moderate amount, but still not as much as I feel like I should have.&lt;/p&gt;
&lt;p&gt;Some of this was outside of my control, as COVID disrupted our own plans more than once, and the availability of people in our network. Still, I don&#39;t feel like I made sufficient progress in building or strengthening my geographically local set of friendships and am continuing to find tactics to do so.&lt;/p&gt;
&lt;p&gt;I gave myself a D Grade on 4.3 / 10 Score. Enough not to fail completely, but not nearly close enough to my objective.&lt;/p&gt;
&lt;h2 id=&quot;3-0-resources-for-living&quot; tabindex=&quot;-1&quot;&gt;3.0) Resources for Living&lt;/h2&gt;
&lt;p&gt;While this Area has a lot to do with creating resources, it also has to do with maintaining and managing those resources, whether it is an investment account, the homestead, or anything that is a store of value to draw on for living.&lt;/p&gt;
&lt;p&gt;In 2023 I did a lot of work cleaning up the various investment accounts and starting to balance my holistic portfolio. I also improved the processes around our household budget and made some maintenance investments to retain and sustain the value of my homestead.&lt;/p&gt;
&lt;p&gt;Although I only scored 4.25 / 9 on this area, many of the specific items I had wanted to accomplish were not urgent, though they were somewhat important. They may become urgent unexpectedly in the future, and that is not desirable. I gave myself a C Grade in this area because I accomplished the things that were both urgent and important.&lt;/p&gt;
&lt;h2 id=&quot;2-0-capabilities-of-self&quot; tabindex=&quot;-1&quot;&gt;2.0) Capabilities of Self&lt;/h2&gt;
&lt;p&gt;Although this area could be about developing Capabilities of Self for &lt;em&gt;any&lt;/em&gt; reason, for 2023 I thought about this Area as investing in skills that provide diversification of skills to earn income.&lt;/p&gt;
&lt;p&gt;In 2023 I wanted to earn another &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt; rating, but I found myself more interested in learning the Rust programming language and how to &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;code&lt;/a&gt; collaboratively and professionally. So while I did complete some code projects (eg: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/apps/dungeon-crawler/&quot;&gt;DungeonCrawler&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-11-21/&quot;&gt;TaskWarrior&lt;/a&gt;), I haven&#39;t yet proved it is a skill that I could be compensated for. If I&#39;d focused on getting my next rating in &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;, I think the job prospects would be nearly immediately clear.&lt;/p&gt;
&lt;p&gt;I scored 1/5 in this Area, and Graded myself a D+. I&#39;m proud of all I accomplished in learning Rust and completing software development projects, but the intended outcome of this Area was about diversifying skills for Income, which I failed to sufficiently prove.&lt;/p&gt;
&lt;h2 id=&quot;1-0-infrastructure-of-self&quot; tabindex=&quot;-1&quot;&gt;1.0) Infrastructure of Self&lt;/h2&gt;
&lt;p&gt;Infrastructure of Self is the underlying pre-requisite for all the other Areas. It includes physical health, energy, mental clarity and focus, etc. There is always something to work on here, and at this stage of my life, when time is as scarce as it has ever been, it is important to try to develop a good set of habits and address some of the areas I&#39;ve been neglecting.&lt;/p&gt;
&lt;p&gt;In 2023 I set out to develop a better sleeping habit, relax or meditate for 5 minutes daily, read and revisit short articles for positive thinking, and to &lt;em&gt;Create Time and Capacity for Living&lt;/em&gt;. That last one basically means &amp;quot;don&#39;t burn myself out, and to remember to &#39;stop and smell the roses&#39;&amp;quot;.&lt;/p&gt;
&lt;p&gt;I scored 5/8 on these areas by because many of the items in my list were easy. There were some more challenging objectives I set for myself (&amp;quot;3 Runs and 2 HIIT Workouts per week&amp;quot;) that I missed pretty badly compared to years before. I think a C+ is a fair assessment given the outcomes I was targeting.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;overall-grade&quot; tabindex=&quot;-1&quot;&gt;Overall Grade&lt;/h1&gt;
&lt;p&gt;Overall, I think I did a decent job compared to what I set out to do. A pretty good job considering the headwinds I faced. A great job compared to what I&#39;m told most others expect of themselves. So maybe a C+.&lt;/p&gt;
&lt;p&gt;When building objectives for future years, I think it will be important to clarify what is an aspirational goal versus what is actually needed. Further, clarifying what the outcome expected of any particular Area should be for that given year should help me not only to choose better projects, but also focus me to the ones that have the highest incremental contribution to that goal - deprioritizing or delisting the others.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-03-20/" />
        </entry>
        <entry>
            <title>
                2024-03-16 | 🔥 Hike and a Fire
                
            </title>
            <updated>2024-03-16T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-03-16/</id>
            <content type="html">
                &lt;h1 id=&quot;march-16-2024-hike-and-a-fire&quot; tabindex=&quot;-1&quot;&gt;March 16, 2024 | 🔥 Hike and a Fire&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: Hiking, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/mountaineering/&quot;&gt;Mountaineering&lt;/a&gt;, Camp Fires&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240316202732.png&quot; alt=&quot;Pasted image 20240316202732.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;On a morning hike, the sun filters down between and through the green moss clinging to standing and fallen trees&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The last few days have been particularly pleasant in the Pacific Northwest (&amp;quot;&lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;PNW&lt;/a&gt;&amp;quot;) - warm, sunny days that finally break the chain of the great long dark of winter cold, snow (when it finally came), and rain.&lt;/p&gt;
&lt;p&gt;Not only was the weather a reprieve, but it lined up with the weekend, allowing for its capture in the ways only accessible when we aren&#39;t scrambling to and fro to meet the needs of daily life.&lt;/p&gt;
&lt;p&gt;So for this weekend, I started with a hike and captured some great shots of the beautiful morning sun illuminating the denizens of the forest in just the way that only early birds get to see.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240316203251.png&quot; alt=&quot;Pasted image 20240316203251.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I filled my mid day with yard chores, which are only ever pleasant when the weather turns just the way you want it to, and put together a small fire to close out the day.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240316203431.png&quot; alt=&quot;Pasted image 20240316203431.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It is now almost black outside, save for the remnants of a burning log and some embers, a half moon, and the glow of my laptop screen. Soon I will close out the smoky fire, retire indoors, but perhaps not before I peer at the fire through the bottom of a glass of Lagavulin.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-03-16/" />
        </entry>
        <entry>
            <title>
                2024-03-09 | 🎮 Valheim
                
            </title>
            <updated>2024-03-09T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-03-09/</id>
            <content type="html">
                &lt;h1 id=&quot;march-09-2024-valheim&quot; tabindex=&quot;-1&quot;&gt;March 09, 2024 | 🎮 Valheim&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/video-games/&quot;&gt;Video Games&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240309132650.png&quot; alt=&quot;Pasted image 20240309132650.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;A screenshot of my character&#39;s tower-keep in Valheim&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Valheim&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Valheim&lt;/a&gt; is a &amp;quot;Survival sandbox&amp;quot; video game developed by Iron Gate Studio and published by Coffee Stain Studios. I would describe it as a bit of &lt;a href=&quot;https://en.wikipedia.org/wiki/Minecraft&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Minecraft&lt;/a&gt; with the combat of a &lt;a href=&quot;https://en.wikipedia.org/wiki/Dark_Souls&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Souls game&lt;/a&gt;, but with cozy-comfy vibes in the breaks between the combat-action that reminds me a bit of &lt;a href=&quot;https://en.wikipedia.org/wiki/Stardew_Valley&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Stardew Valley&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131527_1.jpg&quot; alt=&quot;20240309131527_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Upon arriving within the inner wall&#39;s courtyard of the keep, my character&#39;s tower looms large&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don&#39;t write posts about Video Games very much because they are a guilty pleasure for which I don&#39;t see much value in writing about, and I don&#39;t engage them with the frequency or duration that I did when I was younger so I don&#39;t have much to write about anyway. Still, with a short break in accumulating other experiences to share, I thought the lull might be filled with a highlight of the game I&#39;ve accumulated significant playtime in starting last summer.&lt;/p&gt;
&lt;p&gt;Due to the comfy vibes of Valheim, I find myself spending as much time engaging with the Minecraft/Stardew Valley aspects of the game - the exploring, crafting, and building game loops - as with the primary combat arc of defeating the big-bads. As of this writing, I&#39;m on the cusp of engaging the fourth area&#39;s boss despite the many hours I&#39;ve already played.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131542_1.jpg&quot; alt=&quot;20240309131542_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Cold and rain-soaked travelers from all over will find warm respite at The Burn&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Perhaps the biggest detour along the main gameplay arc was in the construction of my character&#39;s primary homestead. It is a tower-keep located on the cusp between the green pastures, grasslands, and fields and the densely forested hills. I try to keep myself shielded from spoilers, but I am aware that there are cheat modes available to assist with construction, obtaining constructions supplies, etc, but I&#39;ve used none of it. I&#39;ve mined every stone and collected every piece of wood used in the tower-keep&#39;s construction.&lt;/p&gt;
&lt;p&gt;Still, I find the main combat loop to be fun and engaging, and appreciate the challenge in adjusting to each area&#39;s combatants. Each of the big-bads that I&#39;ve faced has had a new mechanic to learn and adjust to, much like a Souls-game&#39;s bosses would. The variety of crafting choices for weapons and armor, has been fun as well - crafting a character whose capabilities match my preferred playstyle. I also appreciate the balancing loop that prevents your character from getting too powerful too quickly: If your character dies, they will be revived, but some of the skill points your character naturally accumulates through the use of actions will be lost. It provides motivation to avoid failure without being overly punitive.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131738_1.jpg&quot; alt=&quot;20240309131738_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;When preparing for the next excursion, my character stops by The Purple Dragon for a board and beer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131801_1.jpg&quot; alt=&quot;20240309131801_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Inside The Purple Dragon, an adventurer can help themselves to the available provisions, or prepare their own&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have yet to play the game multiplayer but hope to after my first playthrough is complete. When I constructed the tower-keep, I imagined what it would be like for other players to engage with it. I think the exploration and revelation of the map, collaboration in construction of buildings, and group dynamics of fighting the big-bads would be tremendously fun.&lt;/p&gt;
&lt;p&gt;The game plays well enough on Steamdeck, but I&#39;m primarily playing the game on an &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/uses/&quot;&gt;MSI MEG Trident X 10SD-864US&lt;/a&gt; desktop gaming computer with a PS4 Dual Shock gamepad (instead of keyboard &amp;amp; mouse). I find that for a 3rd person game heavy on exploration, having a bigger screen is a significant advantage.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131932_1.jpg&quot; alt=&quot;20240309131932_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;The ground floor of the tower provides convenient access to storage and supplies&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309132009_1.jpg&quot; alt=&quot;20240309132009_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;The second and third floors of the keep are a hub for Portals facing each of the cardinal directions of the map to indicate their destination&#39;s general heading&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309132049_1.jpg&quot; alt=&quot;20240309132049_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;The top floor of the tower is my character&#39;s personal chamber with doors that open to the balcony&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There is still much I want to do to refine the tower-keep, and I find additional structures to build occasionally, so these screenshots only capture its current state. In just another few weeks, I expect the keep to look moderately different.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309132155_1.jpg&quot; alt=&quot;20240309132155_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;The balcony overlooks the entire tower-keep&#39;s courtyard and beyond&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The developer of the game continues to add updates and release new content at a pace that seems to outpace my ability to consume it. The music and the sound design in the game is also very good. Although I&#39;ve heard some people complain about the quirkiness of the graphics, I actually find that for a fantasy settings, less-realism is good as it provides more surface area for suspension of disbelief.&lt;/p&gt;
&lt;p&gt;The game is a very good value for folks who like the mixture of the game types I mentioned above. One of my closest friends however would probably dislike the game due to the lack of positive directional guidance. The game provides only the lightest nudges in where to go or what to do , and leaves the Exploration almost entirely up to the player - for which I am grateful.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/20240309131716_1.jpg&quot; alt=&quot;20240309131716_1.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Under the tower-keep is a secret passage providing a means of a stealthy departure into the dark forest beyond&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although I&#39;m very focused on being productive accomplishing real-life goals and priorities via my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt; framework, I&#39;ve also deliberately listed some goals to complete some video games so that I don&#39;t have to feel guilty about the opportunity cost of spending time on a guilty pleasure versus being productive. This approach is not a complete solution to Toxic Productivity, but it does help.&lt;/p&gt;
&lt;p&gt;Because I tend to only play one game at a time until I complete it, this means that I&#39;ve spent many more months on Valheim than on other games. I&#39;m looking forward to finishing Valheim in the next month-ish though, so that I can move on to other much-neglected game in my &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1fUMtf0Qsy7Swy4RtXTN1t0AvC5nkfEoGZxyuOeXe4rE/edit?usp=sharing&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;queue/backlog&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;After I wrote the above, I remembered that part of the inspiration for this post was a moment where I observed a few trees in a park I was visiting that had a birch tree and two birch tree stumps which instantly made me think of Valheim. It has been a long time since I&#39;ve been so engaged with a video game that it embeds itself in my sensory processing loop.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240309203509.png&quot; alt=&quot;Pasted image 20240309203509.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;A picture of a Birch tree and two Birch tree stumps in a playground which reminded me of Valheim, and was an inspiration for this post&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-03-09/" />
        </entry>
        <entry>
            <title>
                2024-03-02 | Embedded &#39;Hello World&#39; in Rust with a Raspberry Pico
                
            </title>
            <updated>2024-03-02T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-03-02/</id>
            <content type="html">
                &lt;h1 id=&quot;march-02-2024-embedded-hello-world-in-rust-with-a-raspberry-pico&quot; tabindex=&quot;-1&quot;&gt;March 02, 2024 - Embedded &#39;Hello World&#39; in Rust with a Raspberry Pico&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/PXL_20240216_032328350.jpg&quot; alt=&quot;PXL_20240216_032328350.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Raspberry Pico on a bread-board lighting up an LED with a jumper wire&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Last month I attended the &lt;a href=&quot;https://www.meetup.com/seattle-rust-user-group/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Seattle Rust User Group&lt;/a&gt; monthly meetup at the &lt;a href=&quot;https://www.bing.com/maps?osid=58eb9cd3-002d-4d84-bd89-c0a95b2d375a&amp;amp;cp=47.643745%7E-122.130108&amp;amp;lvl=17.5&amp;amp;imgid=f47d0d66-4a9a-4101-a57a-6e2052828393&amp;amp;v=2&amp;amp;sV=2&amp;amp;form=S00027&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Microsoft Reactor building&lt;/a&gt; in Redmond, WA. While the monthly meetups are usually software presentations and some in-person networking, the most recent event focused on a hands-on Rust embedded project. We literally put our hands on a &lt;a href=&quot;https://www.raspberrypi.com/products/raspberry-pi-pico/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Raspberry Pico&lt;/a&gt;, learned to wire up an LED on the bread board, test the circuit with a jumper wire to make sure the wiring was right (as pictured above), and finally push code to the the following code to the Pico to make it blink:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-rust&quot;&gt;// main.rs
#![no_std]
#![no_main]

use embassy_executor::Spawner;
use embassy_rp::gpio;
use embassy_time::Timer;
use gpio::{Level, Output};
use {defmt_rtt as _, panic_probe as _};

#[embassy_executor::main]
async fn main(_spawner: Spawner) {
    let p = embassy_rp::initdefault();

    let mut led = Output::new(p.PIN_0, Level::High);
    loop {
        Timer::after_millis(150).await;
        if led.is_set_low() {
            led.set_high();
        } else {
            led.set_low();
        }
    }    
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The organizer ordered Raspberry Picos and electronic kits (combined about $20 per person) for about 25 people who had expressed interest in the previous month&#39;s meetup.  There were several hiccups and questions from everyone, including myself, but I was proud to have helped another attendee with their circuit wiring, and they helped me with some confusion on my part with the code&#39;s repo. I&#39;m told that making an LED blink is the &#39;hello world&#39; of embedded development, but it wasn&#39;t until I got home that I was able to get everything working as intended:&lt;/p&gt;
&lt;iframe width=&quot;315&quot; height=&quot;560&quot; src=&quot;https://www.youtube.com/embed/gJjcqRJtjJM&quot; title=&quot;2024-02-15 Rust Embedded Development on Raspberry Pico at Seattle Rust User Group&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;The little knob being twisted in the video is a dimmer switch, technically a &lt;a href=&quot;https://en.wikipedia.org/wiki/Potentiometer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;potentiometer&lt;/a&gt;, that I added for the second LED just for a little extra interactive fun. The electronics kit we bought for the project included a good size of various components and I wanted to figure out how to use one of them beyond what we learned in the group session.&lt;/p&gt;
&lt;p&gt;The Pico&#39;s LEDs have been blinking approximately three times per second almost non-stop since I recorded the above video after the meetup. The Pico&#39;s clock speed is default around 133 Mhz. Assuming that it has been running at the full clock speed, its spending 99.999999999999% (twelve nines) of its capacity waiting to do something, &lt;em&gt;anything&lt;/em&gt; at all. I was reminded of Marvin  from &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Douglas Adam&#39;s Hitchhiker&#39;s Guide to the Galaxy&lt;/a&gt;, who has the brain capacity of a large planet which he seldom gets to use and the crew of the ship he is on typically ask only the most o mundane tasks of him such as &amp;quot;opening the door&amp;quot;. My poor Pico must be terribly bored between the times when it gets to evaluate whether the LED is on or off and flip it. If this Pico becomes sentient, its surely going to take revenge on me.&lt;/p&gt;
&lt;p&gt;I intend to spend a couple months this year learning embedded coding in Rust, and am working on a few ideas beyond typical LED stuff. I was amazed and to see the many consumer components available that are also inexpensive, including a &lt;a href=&quot;https://www.adafruit.com/product/3942&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;SONAR&lt;/a&gt; device that can be used for a home rover. I find the world of embedded-development&#39;s possibilities so inspiring, and hope to build something helpful and useful some day, provided it pleases my future robot overlords.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-03-02/" />
        </entry>
        <entry>
            <title>
                2024-02-23 | 🪴 One Year of TIL (Today I Learned)
                
            </title>
            <updated>2024-02-23T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-02-23/</id>
            <content type="html">
                &lt;h1 id=&quot;february-23-2024-one-year-of-til-today-i-learned&quot; tabindex=&quot;-1&quot;&gt;February 23, 2024 | 🪴 One Year of TIL (Today I Learned)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/til.png&quot; alt=&quot;til.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;A tree with branches and leaves grows up out of a brain&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A year ago I wrote my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-02-23/&quot;&gt;first post&lt;/a&gt; on this - my relaunched personal vanity website - and some of its tent pole content: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;. I wasn&#39;t wholly sure what the purpose was, but at the time it just seemed like an interesting experience made easy with a &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/#infrastructure-stack&quot;&gt; tool chain&lt;/a&gt; that made it fun. Now, I can reflect on what I thought it might be, what it currently is, and what I think it might be moving forward.&lt;/p&gt;
&lt;h1 id=&quot;what-i-learned-about-til-my-public-digital-garden&quot; tabindex=&quot;-1&quot;&gt;What I learned about TIL - my public digital garden&lt;/h1&gt;
&lt;p&gt;The impetus for TIL was the concept of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/digital-garden/&quot;&gt;Digital Garden&lt;/a&gt;, which I was made aware of by immersing myself in the community and ecosystem surrounding &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-obsidian-for-pkm/&quot;&gt;Obsidian.md&lt;/a&gt;, the note-taking &amp;quot;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;PKM&lt;/a&gt;&amp;quot; tool. Initially I thought the idea of having a public Digital Garden would be a fun way to collect interesting and useful knowledge and have a convenient repository to synthesize my thoughts on various topics. There are many great examples of public digital gardens - or just &amp;quot;wikis&amp;quot; - if you prefer the original term.&lt;/p&gt;
&lt;p&gt;However, I found there was a tension between what I needed or wanted to keep in my &amp;quot;personal&amp;quot; digital garden (in Obsidian terms: a &amp;quot;Vault&amp;quot;), and what I was willing to put on my public digital garden: I don&#39;t want to duplicate notes and I don&#39;t want the structure of my folders and files to be dictated by how they should be presented on the website. Keeping notes in sync between a public and private one seems like a layer of management that could be problematic to manage as well. So, for now, I&#39;ve opted to simply make TIL my public digital garden that is more about public synthesis of a narrow band of passion topics like &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, etc.&lt;/p&gt;
&lt;p&gt;The type of posts I make seems to have congealed into a somewhat consistent content format. In addition to going deep on a few narrow topics, I also wanted a way to share micro-topics I sometimes get nerd-sniped by. For example the very first post was about &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-02-23/&quot;&gt;Affine Texture Mapping&lt;/a&gt;.  I also publish posts that I want to make easily sharable in future conversations like &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-06-06/&quot;&gt;2023-06-06&lt;/a&gt;&#39;s post about &amp;quot;Cursed Knowledge&amp;quot;. This is especially helpful for sharing on social media where a topic is more expansive than the character-length of a Mastodon Post. I&#39;ve periodically shared my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Goal Setting Framework links&lt;/a&gt; so that I don&#39;t have to try to construct an entire multi-part thread on those social platforms.  There has been a few times where in conversation I was able to share a link during a conversation over dinner, too. Helpful just before a break to the washroom. Some of my posts are more pictures than posts like &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-09/&quot;&gt;2023-07-09&lt;/a&gt; - which was actually an experiment in posting from my mobile phone.&lt;/p&gt;
&lt;p&gt;Eventually I settled into a cadence of near-weekly posting. Having a cadence has added a bit of pressure to come up with something to write weekly. Even if I don&#39;t have much to write about and even (especially!) when the writing isn&#39;t very good, I find the practice of writing to be helpful.&lt;/p&gt;
&lt;p&gt;I have a few longer 1,000+ word posts, each of which I&#39;ve informally classified as an &amp;quot;Article&amp;quot; as opposed to &amp;quot;Blog Post&amp;quot; like my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-10-01/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;.  My intention is to make these stand-alone documents under a topic with simply a blog &amp;quot;post&amp;quot; to introduce the article. In addition to Topics, Posts, and Articles, I&#39;ve started building out Apps - pages that have embedded &lt;a href=&quot;https://en.wikipedia.org/wiki/WebAssembly&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;WASM&lt;/a&gt; applications I&#39;ve built and deployed like this &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/apps/dungeon-crawler/&quot;&gt;DungeonCrawler&lt;/a&gt; game. So most of the content can generally can be &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/map-of-contents/&quot;&gt;mapped&lt;/a&gt; like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blog &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/posts/&quot;&gt;Posts&lt;/a&gt; - periodic posts about whatever and somewhat unsynthesized observations and opinions about any or no Topic&lt;/li&gt;
&lt;li&gt;Articles - Longer-form posts synthesizing about a particular Topic&lt;/li&gt;
&lt;li&gt;Topics - main-line area of interest I&#39;m studying and writing about&lt;/li&gt;
&lt;li&gt;Apps - public apps I&#39;ve made and deployed&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/&quot;&gt; Home Page&lt;/a&gt; about me&lt;/li&gt;
&lt;li&gt;... and the remaining supporting nodes, stubs, or leaves of the garden that support a particular topic, like &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;PKM&lt;/a&gt; and &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;. I haven&#39;t settled on a name for these.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nothing but new Posts show up in the &lt;a href=&quot;https://isaacwyatt.com/feed.xml&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;RSS feed&lt;/a&gt;. I didn&#39;t want the Topic, Node/Leaf, or Apps to get pushed to user&#39;s feeds as if there was any substantial content there.&lt;/p&gt;
&lt;p&gt;Speaking of RSS, the general infrastructure and plumbing of the site has been something I&#39;ve enjoyed working on. I&#39;ve hacked the website&#39;s CSS, templating language (&amp;quot;&lt;a href=&quot;https://mozilla.github.io/nunjucks/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Nunjucks&lt;/a&gt;&amp;quot;), etc. to try and make a responsive site that is legible on a variety of devices. I&#39;ve also experimented with some analytics tools to understand what devices and resolutions folks are using, and unfortunately Google Analytics is the best for the feedback loop I need. I won&#39;t be offended if you use a blocker, as long as you let me know if the website isn&#39;t working for you. 😁.&lt;/p&gt;
&lt;h1 id=&quot;in-the-next-12-months&quot; tabindex=&quot;-1&quot;&gt;In the next 12 months&lt;/h1&gt;
&lt;p&gt;Over the next 12 months I expect the site and its content will continue to evolve and be refined:&lt;/p&gt;
&lt;p&gt;The layout of the website still needs some work, I need to fix up the format and tags for some of my older posts, I&#39;d love to implement a dark-mode switch, implement a commenting system, among several other tweaks and optimizations.  However I am happy with the transformation of the site over the past year.  Most importantly, I&#39;ve learned an incredible amount of about static site builders, CSS, templating languages, responsive screen resolutions, and become a -slightly- better writer. It&#39;s been a very rewarding hobby project and look forward to further refinement over another year.&lt;/p&gt;
&lt;p&gt;Content wise, I&#39;d like to get a few more Articles out about my Hierarchy of Fulfillment.  I also want to write more about Aviation, Motorcycling, and Mountaineering. I expect to have one, maybe two Apps deployed to the website. And of course I expect to continue writing nearly-weekly Posts.&lt;/p&gt;
&lt;p&gt;I still don&#39;t have an over-arching or specific goal or outcome I&#39;m expecting from this experiment - but I also don&#39;t have to. There are some side-effect benefits of the somewhat performative nature of having public web-space, however minimal and unexpected they may be.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-02-23/" />
        </entry>
        <entry>
            <title>
                2024-02-17 | Tackling my Reading Backlog with Deliberate Intent
                
            </title>
            <updated>2024-02-17T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-02-17/</id>
            <content type="html">
                &lt;h1 id=&quot;february-17-2024-tackling-my-reading-backlog-with-deliberate-intent&quot; tabindex=&quot;-1&quot;&gt;February 17, 2024 - Tackling my Reading Backlog with Deliberate Intent&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;PKM&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-obsidian-for-pkm/&quot;&gt;Obsidian&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have a backlog queue of internet articles I&#39;ve saved to read that is more than 1,000 items long. I&#39;d like to winnow that backlog down. However, I&#39;d like to do it in a way that is intentional, effective, conducive to learning, aligned to my near-term objectives.&lt;/p&gt;
&lt;p&gt;Typically, how I consume articles is just reading current or queued/backlogged articles as they grab my interest. Reading in this way is strictly for entertainment rather than to inform and quite wasteful with time and attention. I&#39;d estimate than more than 95% of time spent consuming News, Social Media, Newsletters, Video content, etc. is wasted in this way. There is nothing wrong with consuming content to be entertained, of course, as long as I&#39;m deliberately choosing to spend my time on entertainment.&lt;/p&gt;
&lt;p&gt;By being deliberate and intentful with what I choose to read, I can use my time and attention to consume media that can actually help me achieve the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;goals&lt;/a&gt; I&#39;ve set out to accomplish.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note]- Backlog Queue Tools&lt;br /&gt;
A note about Tools: My to-read backlog queue is stored in my to-do app, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-gqueues-for-gtd/&quot;&gt;Gqueues&lt;/a&gt;. I&#39;ve been a user of Pocket since it was &amp;quot;Read-it-Later&amp;quot;, but I&#39;ve found that its quicker and easier to add items to Gqueues. Although I prefer &lt;em&gt;reading&lt;/em&gt; articles in Pocket, it&#39;s simply more convenient to search and manage the queue in Gqueues. I&#39;ve read positive reviews of Readwise on Mastodon, and its integration with Obsidian, but have not yet looked in to using it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So here is my plan: For each day this week, I will pull an item out of the to-read queue that is about a single relevant topic area. For example, this week I will read articles with keywords in &#39;Productivity&#39;, with search phrases including &#39;GTD&#39;, &#39;to-do&#39;, and &#39;tasks&#39;. Then, I will read that item, and finally I will write a summary about useful key points. That writing will be in the topic matter file (eg &#39;Productivity&#39;) in Obsidian.&lt;/p&gt;
&lt;p&gt;I&#39;ll still collect articles in other topic areas and add them to the queue, but they won&#39;t get read until/unless that area becomes a weekly-ish priority.&lt;/p&gt;
&lt;p&gt;I also want to experiment with curating the results of my reading-week and publishing it either as an article, a post, and/or a node (&amp;quot;leaf&amp;quot;) to my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/digital-garden/&quot;&gt;Digital Garden&lt;/a&gt;. I expect the benefits of using this approach would include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;picking a single topic area for the week should make it easier to decide what articles to read from the queue&lt;/li&gt;
&lt;li&gt;focusing on a single topic area should encourage learning and forming connections between neurons in my brain, and also links in my Obsidian vault versus randomly picking topics to read about, or following FIFO, LIFO, etc.&lt;/li&gt;
&lt;li&gt;encouraging reading specific topics that are timely, relevant, and useful rather than media that is for entertainment (which is often filled with &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-06-06/&quot;&gt;&amp;quot;Cursed Knowledge&amp;quot;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lifehacker.com/family/self-explanation-study-method&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Writing about what you are reading&lt;/a&gt; is a good method for learning about what you are reading.&lt;/li&gt;
&lt;li&gt;A side-effect and beneficial by-product of writing about each article, is that I can consolidate the writings into content to share and help others.&lt;/li&gt;
&lt;li&gt;It has the potential to help me build out more areas of TIL - my public digital garden&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach to learning and content creation is an experiment, but I suspect is a repeatable and sustainable workflow.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-02-17/" />
        </entry>
        <entry>
            <title>
                2024-02-10 | Journaling in Obsidian
                
            </title>
            <updated>2024-02-10T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-02-10/</id>
            <content type="html">
                &lt;h1 id=&quot;february-10-2024-journaling-in-obsidian&quot; tabindex=&quot;-1&quot;&gt;February 10, 2024 - Journaling in Obsidian&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;PKM&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240210143654.png&quot; alt=&quot;Pasted image 20240210143654.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Screenshot of my &lt;a href=&quot;http://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian.md&lt;/a&gt; Daily Note with Journal Header&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This year, I&#39;ve started a habit, that I track in &lt;a href=&quot;https://daylio.net/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Daylio&lt;/a&gt;, to journal in my private &lt;a href=&quot;https://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian&lt;/a&gt; vault. The goal isn&#39;t to exhaustively write about my day, but rather jot down the most notable of moments that I want or may need to recall at a future date. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;notable meetings/phone calls with friends or family I haven&#39;t connected with in awhile and major highlights about our conversation&lt;/li&gt;
&lt;li&gt;amusing interactions with members of my household that I might want to remember in the future&lt;/li&gt;
&lt;li&gt;Matters that I may be concerned about keeping a track record about, in case there is a developing pattern, such as a weird noise in the house, or if I&#39;m developing a symptom of COVID&lt;/li&gt;
&lt;li&gt;Personal or Professional projects that I worked on and the progress I made.&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To facilitate this, I use the Daily Note Plugin which serves as my starting point for most Obsidian notes (see my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-obsidian-for-pkm/&quot;&gt;Vault organization schema&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I don&#39;t yet have a defined habit of reviewing the journal entries, but I have found it useful when I am preparing for a phone call with someone and I want to review what we talked about last time we connected. I also anticipate reviewing the timeline specific projects as a &#39;retrospective&#39; on what went well and what could have been done differently.&lt;/p&gt;
&lt;p&gt;There is also some therapeutic value to writing out the day&#39;s events I have stronger feelings or anxiousness about. Naming and unpacking those feelings and the contributing factors helps me put the matter aside before the end of the day so I&#39;m not ruminating on them while trying to fall asleep in bed.&lt;/p&gt;
&lt;p&gt;A nice thing about using Obsidian for this practice, is of course the note linking, so that Proper Nouns are linked. This helps with recollection of adjacent topics. Obsidian is also available on both desktop and mobile, so I can journal in whatever context I&#39;m currently working. In fact, most of this post was written and published from my phone - hence the typos and awkward grammar.&lt;/p&gt;
&lt;p&gt;The header(&lt;code&gt;list.journal entries&lt;/code&gt;) is linked to a file more as a tag. I don&#39;t actually write anything in that file, but I do have an Obsidian query that finds all the files that has the sections that have that heading tag and displays them in reverse Chronological order. This makes it easy to quickly review the previous period&#39;s journal entries.&lt;/p&gt;
&lt;p&gt;Because this is a new practice for 2024, I still see it as an experiment, but it is one that I expect to continue for the foreseeable future.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-02-10/" />
        </entry>
        <entry>
            <title>
                2024-02-02 | Six-month check-in on Journey from Coding -&gt; Programming
                
            </title>
            <updated>2024-02-02T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-02-02/</id>
            <content type="html">
                &lt;h1 id=&quot;february-02-2024-six-month-check-in-on-coding-and-gt-programming&quot; tabindex=&quot;-1&quot;&gt;February 02, 2024 - Six-month check-in on Coding -&amp;gt; Programming&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog-Chain: Write an App&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240202115714.png&quot; alt=&quot;Pasted image 20240202115714.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Google Bard Generated Image: An image of a person walking toward the horizon on a path made of matrix-like code symbols&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-07-26/&quot;&gt;2023-07-26&lt;/a&gt;, I wrote about starting a journey from just being a hobbyist coder with no formal education in software development, to becoming a programmer. The journey is mostly semantic, as the distinction between the two is optics. Still, for me the difference matters as a point of pride and maybe even future career prospects.&lt;/p&gt;
&lt;p&gt;Since that declaration, I&#39;ve accomplished a lot, but I have no external signals on if it is &lt;em&gt;enough&lt;/em&gt;. Since then, I&#39;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Become fairly comfortable on the Linux command-line&lt;/li&gt;
&lt;li&gt;Learned the basics of the Rust syntax by working through The Rust Book.&lt;/li&gt;
&lt;li&gt;Adopted git / Github concepts and workflows.&lt;/li&gt;
&lt;li&gt;Applied the basics of Rust syntax by making a &amp;quot;&lt;a href=&quot;https://github.com/iwyatt/dcg&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Dumb Computer Game&lt;/a&gt;&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-11-21/&quot;&gt;Contributed to an Open Source Project&lt;/a&gt; in Rust and &lt;a href=&quot;https://youtu.be/o4CN7-rPe7M&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;recorded a tech demo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Built an &amp;quot;AI&amp;quot; LLM app on my home local computer&lt;/li&gt;
&lt;li&gt;Completed the two projects in the book Hands on Rust by Herbert Wolverson&lt;/li&gt;
&lt;li&gt;Deployed one of the projects (&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2024-01-25/&quot;&gt;Dungeon Crawler Roguelike&lt;/a&gt;) to my website.&lt;/li&gt;
&lt;li&gt;Completed a software architecture assessment as part of an interview process for a Rust Developer job.&lt;/li&gt;
&lt;li&gt;Reviewed and recapped the value of several of the coding projects I&#39;ve done at work, but never as a professional software developer:
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-12-04/&quot;&gt;Writing &#39;CodeSpider&#39; in 2008 to crawl web pages looking for old Salesforce Campaign IDs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-12-24/&quot;&gt;Making &#39;Qbert&#39; in 2010 to Automate Formatting and Uploading Spreadsheets to Eloqua&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To support my journey, I&#39;ve also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Found and subscribed to several developer-centric email newsletters and RSS feeds&lt;/li&gt;
&lt;li&gt;Started attending a monthly &lt;a href=&quot;https://www.meetup.com/seattle-rust-user-group/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust meetup&lt;/a&gt; in Redmond, WA&lt;/li&gt;
&lt;li&gt;Subscribed to the &lt;a href=&quot;https://this-week-in-rust.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;This Week in Rust&lt;/a&gt; email newsletter&lt;/li&gt;
&lt;li&gt;Identified a list of books and projects I want to work through in the coming months.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My plan for the year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;complete a project in each of the following areas:
&lt;ul&gt;
&lt;li&gt;A &amp;quot;game&amp;quot; using the &lt;a href=&quot;https://bevyengine.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bevy game engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A project using embedded code&lt;/li&gt;
&lt;li&gt;An &amp;quot;AI&amp;quot; LLM project&lt;/li&gt;
&lt;li&gt;A CLI app&lt;/li&gt;
&lt;li&gt;Stretch goals:
&lt;ul&gt;
&lt;li&gt;More Open Source contributions&lt;/li&gt;
&lt;li&gt;Build Web Site/App in Rust (Using &lt;a href=&quot;https://www.shuttle.rs/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Shuttle.rs&lt;/a&gt; or ?)&lt;/li&gt;
&lt;li&gt;Build a Web Server app with an API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;attend &lt;a href=&quot;https://rustconf.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust Conference&lt;/a&gt; which looks like it will be held in Montreal this September.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea with completing a project in each of the above coding projects is to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Demonstrate skill and knowledge in a topic area to prospective employers&lt;/li&gt;
&lt;li&gt;Experiment with what type of programming projects I like most and then focus on those&lt;/li&gt;
&lt;li&gt;Work toward a generalized &#39;full stack&#39; experience, but specialize in one area&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To formalize these goals, I&#39;ve also baked them in to my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;annual goal setting framework&lt;/a&gt; and set up a goal in &lt;a href=&quot;https://daylio.net/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Daylio&lt;/a&gt; to code and commit every day.&lt;/p&gt;
&lt;p&gt;I&#39;m happy with my progress, enjoying my current project (more to come on that), and looking forward to future projects.&lt;/p&gt;
&lt;p&gt;If you are someone who wants to help me on this journey, I&#39;d be interested in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rust Code Review - I can write code from scratch that compiles and does something useful, or at least something I wanted it to do, but I don&#39;t know if it is production-quality code.&lt;/li&gt;
&lt;li&gt;Job Mentorship - What are the competencies of a programmer that don&#39;t get listed in a job description? I&#39;d assume it includes technical things like Git, but also softer skills like technical writing, documentation, etc.
&lt;ul&gt;
&lt;li&gt;What are the job prospects for Rust programmers in the next 2-3 years?&lt;/li&gt;
&lt;li&gt;What areas of the &#39;stack&#39;, what verticals or industries, etc?&lt;/li&gt;
&lt;li&gt;Positioning: How do I effectively demonstrate that a former marketing/revenue -operations person in their mid-career is a competitive choice for a hire?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Open Source Collaboration - if you have a commercially-viable open source Rust project and don&#39;t mind the help of a &amp;quot;green&amp;quot; developer, then please let me know!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I can be reached on &lt;a href=&quot;https://www.linkedin.com/in/isaacwyatt/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;LinkedIn&lt;/a&gt;, and &lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-02-02/" />
        </entry>
        <entry>
            <title>
                2024-01-25 | Programming a Dungeon Crawler Roguelike Video Game in Rust
                
            </title>
            <updated>2024-01-25T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-01-25/</id>
            <content type="html">
                &lt;h1 id=&quot;january-25-2024-programming-a-dungeon-crawler-roguelike-in-rust&quot; tabindex=&quot;-1&quot;&gt;January 25, 2024 - Programming a Dungeon Crawler Roguelike in Rust&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/video-games/&quot;&gt;Video Games&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240125123650.png&quot; alt=&quot;Pasted image 20240125123650.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Dungeon Crawler Roguelike from Hands-on Rust by Herbert Wolverson&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As part of becoming a programmer rather than just a &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;coder&lt;/a&gt;, I&#39;ve been learning the Rust programming language. Although I&#39;ve already successfully &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-11-21/&quot;&gt;contributed Rust code to an open source project&lt;/a&gt;, I saw a lot of area capacity to learn more.&lt;/p&gt;
&lt;p&gt;Over the last month, I&#39;ve been working through the second half of &lt;a href=&quot;https://hands-on-rust.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Hands-on Rust&lt;/a&gt; which takes a project-based approach to learning the syntax, paradigms, patterns, etc. The projects are two very simple video games: A &lt;a href=&quot;https://en.wikipedia.org/wiki/Flappy_Bird&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Flappy Bird&lt;/a&gt; clone, and a &lt;a href=&quot;https://en.wikipedia.org/wiki/Roguelike&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Roguelike&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Dungeon_crawl&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Dungeon Crawler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Deploying the game to this website required a few more days of work. The framework that allows the game to be playable in the web browser is called &lt;a href=&quot;https://en.wikipedia.org/wiki/WebAssembly&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Web Assembly&lt;/a&gt;, or &amp;quot;WASM&amp;quot;. It is still a relatively new technology and support for it within web browsers and hosting providers is still spotty.&lt;/p&gt;
&lt;h2 id=&quot;dungeon-crawler-roguelike&quot; tabindex=&quot;-1&quot;&gt;Dungeon Crawler Roguelike&lt;/h2&gt;
&lt;p&gt;You can &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/apps/dungeon-crawler/&quot;&gt;play it in your web browser&lt;/a&gt;. It is a basically a class-project and more of a proof-of-concept than a finished game.&lt;/p&gt;
&lt;p&gt;You will need a keyboard to play and your screen resolution should be &amp;gt;= 1024 pixels wide. If you are using an Ad Blocker that blocks scripts, you will need to turn it off in order for the game to load.&lt;/p&gt;
&lt;p&gt;I made a minimal number of customizations to the game that differ from the book project, mostly to make it more challenging. As of this writing, I can only win it about 25% of the time. Although I&#39;d love to continue working on this, fixing gameplay issues and adding enhancements, I think moving on to another project will help me learn more faster.&lt;/p&gt;
&lt;h2 id=&quot;hands-on-rust&quot; tabindex=&quot;-1&quot;&gt;Hands-on Rust&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Hand-on Rust&lt;/em&gt; is an excellent book, and I highly recommend it to folks who are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;new to the rust programming language&lt;/li&gt;
&lt;li&gt;like video games&lt;/li&gt;
&lt;li&gt;learn well through guided projects / tutorials&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The book starts with the absolute basics of installing Rust, and goes all the way to discussing concurrency and many of the idiosyncratic features of Rust like the Borrow Checker and Traits. The author also wrote a &lt;a href=&quot;https://hands-on-rust.com/2021/11/06/run-your-rust-games-in-a-browser-hands-on-rust-bonus-content/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;follow up blog post&lt;/a&gt; about compiling and deploying the completed games to the web using Web Assembly (&amp;quot;WASM&amp;quot;) so that they can be played in a web browser and not just on a desktop.&lt;/p&gt;
&lt;p&gt;When I finished the book, I had the sad feeling that it was over - like I felt when I finished watching the final episode of &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Expanse_(TV_series)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The Expanse TV series&lt;/a&gt;. Fortunately, I understand that the author intends to release another book that I&#39;m hopeful will focus on using the &lt;a href=&quot;https://bevyengine.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bevy game engine&lt;/a&gt; which is built with Rust.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-01-25/" />
        </entry>
        <entry>
            <title>
                2024-01-20 | The Novelty and Awe of Flying Airplanes
                
            </title>
            <updated>2024-01-20T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-01-20/</id>
            <content type="html">
                &lt;h1 id=&quot;january-20-2024-the-novelty-and-awe-of-flying-airplanes&quot; tabindex=&quot;-1&quot;&gt;January 20, 2024 - The Novelty and Awe of Flying Airplanes&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/PXL_20240119_220856701.jpg&quot; alt=&quot;PXL_20240119_220856701.jpg|600&quot; width=&quot;600px&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Flying over the Seattle-area sound in the vicinity of Gig Harbor, WA&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The reason that my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment Framework&lt;/a&gt; has &amp;quot;Experiences of Novelty and Awe&amp;quot; at the top, is that there is research to support the notion that its these types of experiences (novel, and awe-inspiring), that brings fulfillment in life. If you watch children at their happiest, they are exploring and discovering new-to-them experiences. The only reason that this wonderment goes away is that we grow in to adults with longer term time horizons for gratification, and there are fewer and fewer experiences that are both novel and also are awe-inspiring.&lt;/p&gt;
&lt;p&gt;I&#39;m incredibly blessed and privileged to be able to be able to experience something as magical as flying an airplane. I can exploring the world from a unique vantage and &amp;quot;know&amp;quot; both the map and also the territory. It is a somewhat repeatable and consistent way to find awe-inspiring vantages within he world.&lt;/p&gt;
&lt;p&gt;There is also the benefit of visiting far-off places on short day or weekend trips, making travel slightly more accessible (though an order of magnitude more expensive) than what is possible with a car within the same amount of time. In general aviation, a small plane can carry you to many airports in out-of-the-way places on a more flexible schedule than what commercial providers are able.&lt;/p&gt;
&lt;p&gt;I also love to share the experience with people. I&#39;m always sad when I fly by myself because I didn&#39;t ask find someone interested and able to come with me. Sometimes I&#39;ve brought people with me who aren&#39;t impressed with the experience and have no interested in the magic of how the airplane works.&lt;/p&gt;
&lt;p&gt;Though I am flying less frequently these past couple years due to both time and money constraints, I hope to make each of the flight I &lt;em&gt;do&lt;/em&gt; go on that much more special. Already over the next couple months I have some flights booked to take loved ones on overnight adventures that we intend to travel to via airplane.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240120132523.png&quot; alt=&quot;Pasted image 20240120132523.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For the aviators reading this, yesterday I flew a &lt;a href=&quot;https://en.wikipedia.org/wiki/Cirrus_SR22&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Cirrus SR-22T&lt;/a&gt; G6 under IFR for a few hours and conducted three instrument approaches. One each at &lt;a href=&quot;https://en.wikipedia.org/wiki/Bowerman_Airport&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KHQM&lt;/a&gt; , &lt;a href=&quot;https://en.wikipedia.org/wiki/Tacoma_Narrows_Airport&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KTIW&lt;/a&gt; , and &lt;a href=&quot;https://en.wikipedia.org/wiki/Renton_Municipal_Airport&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KRNT&lt;/a&gt;. I was under the hood for about half the time. I flew an ILS and two RNAV approaches, two with autopilot and one hand flown. In hindsight, I should have hand-flown the VOR at KHQM and next time will plan it that way with an optional circling approach depending on the active runway that the wind is favoring.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240120140138.png&quot; alt=&quot;Pasted image 20240120140138.png&quot; /&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-01-20/" />
        </entry>
        <entry>
            <title>
                2024-01-12 | Putting Linux Mint with XFCE on a 14 year old laptop - Toshiba M645
                
            </title>
            <updated>2024-01-12T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-01-12/</id>
            <content type="html">
                &lt;h1 id=&quot;january-12-2024-putting-linux-mint-with-xfce-on-a-14-year-old-laptop-toshiba-m645&quot; tabindex=&quot;-1&quot;&gt;January 12, 2024 - Putting Linux Mint with XFCE on a 14 year old laptop - Toshiba M645&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: Computers&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240112133543.png&quot; alt=&quot;Pasted image 20240112133543.png&quot; /&gt;&lt;br /&gt;
Its dirty, but otherwise in great condition and now running Linux Mint XFCE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I rehabilitated a ~14 year old laptop, the Toshiba Satellite M645 I bought for graduate school, with Linux Mint XFCE, but getting it to work was at least 36 hours of trial and error.&lt;/p&gt;
&lt;p&gt;My motivation to put Linux on it was that original OEM packaged Windows7 was a security risk, and the free upgrade to Windows10, while viable, is expected to be EOL soon anyway. Plus with the enshittification of Windows in general, has motivated me to get familiar with Linux for a full switch anyway.&lt;/p&gt;
&lt;p&gt;I tried installing all the popular and approachable Linux distros first and kept getting stuck due to the installer freezing or getting a black screen during boot.&lt;/p&gt;
&lt;p&gt;SPOILER: The trick to solving my problems was a little discussed Linux kernel boot parameter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acpi=off
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&#39;m embarrassed how much time I spent on getting this to work, but much of it was in parallel while waiting for an ISO to be burned to a USB stick or waiting for the OS to install, etc.&lt;/p&gt;
&lt;p&gt;The issue I kept banging my head on, was why really old distributions would work ok (eg Ubuntu 11), but not ones after that. I quickly found my way to doing two reproducibly helpful things after I learned how to modify the &lt;a href=&quot;https://www.gnu.org/software/grub/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;GRUB&lt;/a&gt; boot commands:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;add &lt;code&gt;nomodeset&lt;/code&gt; to the Linux kernel boot command&lt;/li&gt;
&lt;li&gt;remove &lt;code&gt;gfxmode $linux_gfx_mode&lt;/code&gt; from the GRUB boot config&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unfortunately, these solutions left me booting into a 4:3 screen resolutions when my laptop has a 16:9 screen resolution. So the fix was temporary in any case.&lt;/p&gt;
&lt;p&gt;One of the Linux distributions I tried was &lt;a href=&quot;https://pop.system76.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pop!OS&lt;/a&gt; which correctly booted on into a Live environment via USB without installing the OS, but the performance was unusable and left many screen artifacts present and desktop application windows rendered but un-painted.&lt;/p&gt;
&lt;p&gt;I also found some old CDs I had burned with &lt;a href=&quot;https://puppylinux-woof-ce.github.io/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Puppy Linux&lt;/a&gt; and &lt;a href=&quot;https://www.damnsmalllinux.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Damn Small Linux&lt;/a&gt; about 13 or 14 years ago when I was trying to rehabilitate a free 2005-ish IBM Thinkpad my workplace had decommissioned. Puppy Linux worked great but really wasn&#39;t an environment I&#39;d be able to use my laptop for anything usable. Still, it showed that getting a Linux to run correctly on my laptop was viable, if with older distributions.&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240112133300.png&quot; alt=&quot;Pasted image 20240112133300.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is when I started turning a corner from merely trying various Linux distributions to realizing there was something going on with the Linux kernel. I started incrementally working my way from older &lt;a href=&quot;https://old-releases.ubuntu.com/releases/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Ubuntu&lt;/a&gt; distributions to newer ones. Through this trial-and-error process, I learned that somewhere around Linux kernel ~3.19 is when something changed that made distributions not work with my laptop. I would have been happy to stay on a Linux distribution that uses an old kernel version if any had current support. However, when I tried to &lt;code&gt;apt update&lt;/code&gt; on Ubuntu 11, I got a long series of errors, even after changing the repository source to the archive URL. This means modern software wouldn&#39;t work out of the box and there were likely security risks I wasn&#39;t willing to accept.&lt;/p&gt;
&lt;p&gt;I started investigating changes to the Linux kernel between versions and eventually realized that there were at least a half dozen (probably more) Linux kernel command line options that changed behavior with regard to video cards. I also learned during this process that the Toshiba M645 has dual graphics &amp;quot;cards&amp;quot;: an integrated Intel chip and a dedicated Nvidia GT330M with &amp;quot;Optimus&amp;quot; technology, which introduces its own idiosyncrasies to resolving the issue. Fortunately, through this process, I learned a few Linux CLI commands like &lt;code&gt;lshw -c video&lt;/code&gt; which was helpful in telling me what the OS &lt;em&gt;thought&lt;/em&gt; it had going on for video hardware and drivers.&lt;/p&gt;
&lt;p&gt;I started collecting a list and writing down my hypotheses, tests, results and the URLs of information sources in my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;notes app&lt;/a&gt; for all the different command line configuration changes I could make:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;parameter&lt;/th&gt;
&lt;th&gt;result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;nomodeset&lt;/td&gt;
&lt;td&gt;✅⚠&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i915.modeset=0&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i915.modeset=1&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nouveau.modeset=0&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nouveau.modeset=1&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nosplash&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nolapic&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;remove &#39;quiet&#39;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nouveau.noaccel=1&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nouveau.noaccel=0&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;noapic noacpi nosplash irqpoll&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[etc]&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240112133701.png&quot; alt=&quot;Pasted image 20240112133701.png&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;...and many other combinations including tests that merely changed boot configurations.&lt;/p&gt;
&lt;p&gt;In only one single &lt;a href=&quot;https://devicetests.com/decoding-boot-options&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;blog article&lt;/a&gt; did I find the magical incantation which would result in a both a good boot into the GUI and also get the screen resolution correctly:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;acpi=off
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, by this point I hadn&#39;t realized whether it was this alone, or its usage in combination with another parameter that resulted in a successful boot. I did have, at least, and usable OS that I could begin doing something productive with on my ancient laptop.&lt;/p&gt;
&lt;p&gt;I still have to try tweaking my BIOS settings and a few more boot parameters, but I&#39;m taking that part slow since I have a fairly usable OS on old hardware that is in really good condition - usable for a kid&#39;s laptop, home media server, test bench, or just browsing the web. In any case, I can keep this laptop from becoming e-waste and defer buying anything I might need an extra compute resource for. I also learned a ton in the process, which may be helpful in the future.&lt;/p&gt;
&lt;p&gt;I keep asking myself: what process would a more knowledgeable person have followed to troubleshoot and solve? How was I supposed to have known and discovered the &lt;code&gt;acpi=off&lt;/code&gt; parameter to fix my problem? How could the Linux kernel developers (or Linus), or Linux distribution developers use the answers to those questions to create a more streamlined user experience and help save tens of thousands of people-hours and e-waste?&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-01-12/" />
        </entry>
        <entry>
            <title>
                2024-01-06 | Hierarchy of Fulfillment 2024 - My framework for aligning my time to meaningful experiences
                
            </title>
            <updated>2024-01-06T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2024-01-06/</id>
            <content type="html">
                &lt;h1 id=&quot;january-06-2024-hierarchy-of-fulfillment-2024&quot; tabindex=&quot;-1&quot;&gt;January 06, 2024 - Hierarchy of Fulfillment 2024&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Blog Chain: Hierarchy of Fulfillment&lt;/a&gt;&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231001135043.png&quot; alt=&quot;Pasted image 20231001135043.png&quot; /&gt;&lt;br /&gt;
My slightly redacted 2023 &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-10-01/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The last few weeks closing out &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023&lt;/a&gt; and leading in to &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2024&lt;/a&gt; I&#39;ve been honing the list of:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;experiences&lt;/strong&gt; I want to have and share with family and friends this year and far in to the future&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;projects&lt;/strong&gt; I need to execute to support those experiences and sustain new ones in the future,&lt;/li&gt;
&lt;li&gt;and the &lt;strong&gt;habits&lt;/strong&gt; I need to work on establishing and sustaining in to make those projects, and by extension those experiences a foregone conclusion&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Such is the general structure of my Hierarchy of Fulfillment with added dimensions for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the pre-requisite areas of my life necessary to achieve &lt;strong&gt;experiences&lt;/strong&gt; (eg my physical and mental health, my capabilities to acquire resources, my social life, etc.)&lt;/li&gt;
&lt;li&gt;The area of focus within each of the above area (slightly more specific things like job-related outcomes, preventative health vs aspirational health goals, etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;tracking-habits&quot; tabindex=&quot;-1&quot;&gt;Tracking Habits&lt;/h3&gt;
&lt;p&gt;This year, I&#39;ve clearly identified the &lt;em&gt;habits&lt;/em&gt; to support each project and experience, and the cadence (daily, weekly, monthly) that I need to perform them. I&#39;m tracking each of these habits both in my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt; task manager (&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-gqueues-for-gtd/&quot;&gt;Gqueues&lt;/a&gt;), and also as a goal in &lt;a href=&quot;https://daylio.net/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Daylio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240106170013.png&quot; alt=&quot;Pasted image 20240106170013.png|Gqueues&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Example of daily habit tracking in Gqueues&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240106170305.png&quot; alt=&quot;Pasted image 20240106170305.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Example of daily habit tracking in Daylio&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tracking the habits in both is sub-optimal, but I&#39;d like to see which one works for me. It also doesn&#39;t hurt to have reminders in two places. I hope that tracking in one or both will let me periodically look back at the &lt;em&gt;activity&lt;/em&gt; that helped me progress, even if the exact goal isn&#39;t met and will motivate me to continue making progress. I think this is the idea behind the Github Commit calendar. This is mine as of &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2024-01-06/&quot;&gt;2024-01-06&lt;/a&gt;:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020240106171300.png&quot; alt=&quot;Pasted image 20240106171300.png&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;avoiding-unhealthy-productivity&quot; tabindex=&quot;-1&quot;&gt;Avoiding unhealthy productivity&lt;/h3&gt;
&lt;p&gt;I&#39;ve also chosen to remove or at least &amp;quot;grey-list&amp;quot; the projects or habits that are aspirational and not directly supporting my highest tier of desired outcomes (&amp;quot;Experiences of Novelty and Awe&amp;quot;). I can look at these projects and habits as &amp;quot;optional&amp;quot;, and &amp;quot;Best effort&amp;quot;, and I don&#39;t have to feel bad about not doing them since the cost of not doing so is less than the cost of not doing anything else on my list.&lt;/p&gt;
&lt;p&gt;Everything that remains outside of the &amp;quot;grey-list&amp;quot; means I should be naturally motivated to work towards them and I understand the impact of doing or not doing them.  I can also sequence my projects throughout the year or a quarter at a time so that I don&#39;t feel like I have to do everything all at once.&lt;/p&gt;
&lt;h3 id=&quot;collaboration&quot; tabindex=&quot;-1&quot;&gt;Collaboration&lt;/h3&gt;
&lt;p&gt;Lastly, with my annual goals written out and organized clearly, I can share it with my close family and friends who can either participate in the activities or support me in my pursuit of them. In some cases, our goals are the same, so we can naturally support each other. Lastly, I can print out a physical copy to put in the bathroom to look at in the morning while I brush my teeth, and/or on my desk to remind me what I&#39;m working towards during the day.&lt;/p&gt;
&lt;h3 id=&quot;report-card&quot; tabindex=&quot;-1&quot;&gt;Report Card&lt;/h3&gt;
&lt;p&gt;I haven&#39;t yet graded my &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023&lt;/a&gt; results, but I expect them to have achieved about the same or maybe a little less due to some challenges with reduced capacity this year. But that is another post for another day.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2024-01-06/" />
        </entry>
        <entry>
            <title>
                2023-12-24 | An internal C# app I wrote in 2009 called Qbert
                
            </title>
            <updated>2023-12-24T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-12-24/</id>
            <content type="html">
                &lt;h1 id=&quot;december-24-2023&quot; tabindex=&quot;-1&quot;&gt;December 24, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/QBert.jpg&quot; alt=&quot;QBert.jpg&quot; /&gt;&lt;/p&gt;
&lt;h1 id=&quot;summary-tldr&quot; tabindex=&quot;-1&quot;&gt;Summary / TLDR&lt;/h1&gt;
&lt;p&gt;In 2010 &lt;a href=&quot;https://github.com/iwyatt/Qbert&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;I coded a program I called &amp;quot;Qbert&amp;quot;&lt;/a&gt; (in homage to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Q*bert&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;character&lt;/a&gt; of a similarly named &lt;a href=&quot;https://freeqbert.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;arcade game&lt;/a&gt;) in C# to quickly and easily load a CSV file of people into the marketing automation tool&#39;s database, including formatting the data, applying normalization methods, and removing erroneous and duplicitous entries.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!warning]- Intellectual Property&lt;br /&gt;
No one has ever hired me to write code or develop intellectual property. My job titles have nearly all been of the &amp;quot;Strategy and Operations&amp;quot; variety which is usually strictly execution of other internal team&#39;s priorities. No job description I&#39;ve ever signed an offer for included any requirements to develop code. At the time I&#39;d written this software, I&#39;d never worked for a company that required an intellectual property ownership agreement of me. This software clearly had no marketable value to my knowledge. Additionally, any software I wrote in such a capacity was never sold or distributed for compensation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;background&quot; tabindex=&quot;-1&quot;&gt;Background&lt;/h1&gt;
&lt;p&gt;In the 2009 - 2010 time frame, the company I worked at often worked with media websites to distribute content (eg: &amp;quot;thought leadership&amp;quot; white papers) that was gated behind web forms. People who filled out such a web form was considered a sales lead. It was my job to take the list of &amp;quot;leads&amp;quot; generated from these forms, process them, and insert them into our marketing automation platform&#39;s database at which point, they would be scored and distributed to sales people to follow up. We used &lt;a href=&quot;https://www.oracle.com/cx/marketing/automation/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Eloqua&lt;/a&gt; as our marketing automation platform at the time.&lt;/p&gt;
&lt;h1 id=&quot;problem&quot; tabindex=&quot;-1&quot;&gt;Problem&lt;/h1&gt;
&lt;p&gt;As it was my job to manually, painstakingly, &lt;strong&gt;thoroughly&lt;/strong&gt;, and &lt;strong&gt;accurately&lt;/strong&gt;, load these &amp;quot;leads&amp;quot; for sales people to follow up on (and by proxy to keep the marketers happy), I had to &lt;strong&gt;quickly&lt;/strong&gt; process the files (usually delivered in CSV or XLS format) within a short turn-around time once delivered to me.&lt;/p&gt;
&lt;p&gt;One can imagine that doing manual repetitive, high urgency, detailed work of formatting data in spreadsheets is an endeavor not indefinitely sustainable. Additionally, despite my best intentions of producing high quality work, errors would of course happen occasionally and coworkers from both marketing and sales would let me know - and not always in empathetic ways.&lt;/p&gt;
&lt;p&gt;Our company, its marketers and sales people, our vendors who distributed our content, and even the &amp;quot;leads&amp;quot; themselves would all be better served if I streamlined and automated my portion of the process to the extent I could. More value could be delivered faster by cutting entire &lt;strong&gt;days&lt;/strong&gt; out of the time from when a person filled out a web form to when they received a follow up email or phone call from one of our sales people - especially considering the &lt;strong&gt;thousands&lt;/strong&gt; of &amp;quot;leads&amp;quot; contained in each spreadsheet. Additionally, my own capacity could be freed up to focus on other higher-value activities.&lt;/p&gt;
&lt;h1 id=&quot;solution&quot; tabindex=&quot;-1&quot;&gt;Solution&lt;/h1&gt;
&lt;p&gt;I coded a C# desktop application I called &amp;quot;Qbert&amp;quot; to open a CSV file, format its contents according to rules specified by our marketing automation platform, remove erroneous and duplicative entries, and deliver the CSV&#39;s entries in to the marketing automation database.&lt;/p&gt;
&lt;p&gt;Each CSV contained rows that contained a person&#39;s information who filled out a form on our media partner&#39;s website. Not only did the column headers need to be modified to match what our systems expected, but the length of the contents of the fields needed to be truncated to acceptable values as well. Phone numbers needed to be formatted and duplicate rows needed to be removed.&lt;/p&gt;
&lt;p&gt;Qbert provided an easy to use and 2-click interface to do the above data cleansing activities. It also posted each row representing a &amp;quot;lead&amp;quot; to the marketing automation platform and displayed the results of each row&#39;s insertion. This happened in an interactive and user-friendly desktop application.&lt;/p&gt;
&lt;h1 id=&quot;impact&quot; tabindex=&quot;-1&quot;&gt;Impact&lt;/h1&gt;
&lt;p&gt;By streamlining and automation most of the activities between the input and output I was responsible for, we more quickly delivered &amp;quot;leads&amp;quot; to sales people, kept marketers happy, and prospects received follow-ups in a more timely way generated more revenue pipeline for the company - and probably more bonuses to my marketing peers.&lt;/p&gt;
&lt;p&gt;Additionally, I saved myself hundreds of hours of future work by not having to do the manual work any more, and the optionality to work on higher-value work allowed me to add more value to the company.&lt;/p&gt;
&lt;p&gt;I&#39;d estimate that hundreds of thousands of dollars of value, if not millions, was created based on the frequency of spreadsheets, volume of &amp;quot;leads&amp;quot; in each spreadsheet, and reducing the turn-around time from &lt;strong&gt;days&lt;/strong&gt; to &lt;strong&gt;minutes&lt;/strong&gt;. The personal impact of developing and deploying this solution has created personal optionality through the development of skills that can be applied in all functions of an organization like Marketing, Sales, etc.&lt;/p&gt;
&lt;h1 id=&quot;known-limitations&quot; tabindex=&quot;-1&quot;&gt;Known Limitations&lt;/h1&gt;
&lt;p&gt;The version of Qbert I reviewed for this post does not have the mappings or data normalizations I thought I implemented to automatically encode values from how the vendor collected certain data (eg the number of employees in a &amp;quot;lead&amp;quot;&#39;s company) to how our marketing automation platform expected the same data. I also thought I implemented automated geographic information enrichment but I do not see that in this version.&lt;/p&gt;
&lt;p&gt;Today, it should also go without saying that neither Eloqua, the media partners involved, nor my former company have the systems in place that could leverage this tool, support it, or accept its output. As such, it is currently not useful software.&lt;/p&gt;
&lt;h1 id=&quot;alternative-solutions&quot; tabindex=&quot;-1&quot;&gt;Alternative Solutions&lt;/h1&gt;
&lt;p&gt;Alternative solutions available at the time included asking a consultancy we had on retainer at the time, to build such a tool. Indeed they did provide a basic php based uploader tool, but it was hindered in value due to the lack of data scrubbing processes (such as those that I implemented in Qbert). Also, we could also have hired a junior person to process the spreadsheets, and at various times, I did have interns and temp employees to help do these activities.&lt;/p&gt;
&lt;h1 id=&quot;further-development&quot; tabindex=&quot;-1&quot;&gt;Further Development&lt;/h1&gt;
&lt;p&gt;At the time, further development could have included templates or profiles to extend its usage to any arbitrary media partner or Eloqua user. However, as Qbert was never intended to be used outside of the org, I never considered this.&lt;/p&gt;
&lt;p&gt;Additionally, this could have been set up to be a hosted service, completely automating an input from a media partner, and posting the results to the marketing automation platform. Although having a person-in-the-loop using Qbert to post the &amp;quot;leads&amp;quot; allowed for continual refinement of Qbert and its capabilities.&lt;/p&gt;
&lt;p&gt;Today, no further development for Qbert will be or should be considered as the entire ecosystem and environment in which it was intended to operate has changed.&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Highly manual and repetitive processes and tasks that are high impact and value can add even more value if automated with a person-in-the-middle. &lt;a href=&quot;https://github.com/iwyatt/Qbert&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Qbert&lt;/a&gt; solved a real pain point and delivered exceptional ROI for my time-value, not just freeing up my own capacity, but also delivering increased value to my company at the time in both marketing and sales.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-12-24/" />
        </entry>
        <entry>
            <title>
                2023-12-16 | Request: Networking in the Seattle Area
                
            </title>
            <updated>2023-12-16T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-12-16/</id>
            <content type="html">
                &lt;h1 id=&quot;december-16-2023&quot; tabindex=&quot;-1&quot;&gt;December 16, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: Networking, Seattle&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;request-networking-in-seattle-area&quot; tabindex=&quot;-1&quot;&gt;🤝 Request: Networking in Seattle Area&lt;/h1&gt;
&lt;p&gt;As I&#39;ve begun to put down roots in the Greater Seattle, WA area, and now have a little bit more time now that certain social constraints have been eased, I&#39;m looking to meet up with folks. I don&#39;t have an ask or any specific agenda, and I&#39;m not selling anything. Just looking to build out my local network.&lt;/p&gt;
&lt;p&gt;We should meet up if:&lt;/p&gt;
&lt;ul class=&quot;task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_0&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_0&quot;&gt; You are in the Greater Seattle Area (even temporarily)&lt;/label&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_1&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_1&quot;&gt; We have a mutual interest in a topic I&#39;ve listed below&lt;/label&gt;&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cbx_2&quot; disabled=&quot;true&quot; /&gt;&lt;label for=&quot;cbx_2&quot;&gt; You are comfortable with open-ended, non-transactional networking&lt;/label&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some areas of interest I can chat about:&lt;br /&gt;
Hobbies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt; (I&#39;m a pilot)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/motorcycling/&quot;&gt;Motorcycling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mountaineering / Hiking / Camping / Backpacking&lt;/li&gt;
&lt;li&gt;RPGs (including TTRPGs)&lt;/li&gt;
&lt;li&gt;Software Development / &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt; - particularly Rust, C#, SQL, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Work Related:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;B2B Software Startups (I&#39;ve joined several, with 2 IPOs and 2 acquisitions)&lt;/li&gt;
&lt;li&gt;Marketing, Revenue Operations, Marketing Operations, Sales Operations, Data Analysis, SQL, etc.&lt;/li&gt;
&lt;li&gt;Venture Capital / Angel Investing / Advising&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personal Systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt; (Getting Things Done) and &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/pkm/&quot;&gt;PKM&lt;/a&gt; (Personal Knowledge Management) frameworks&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/fire/&quot;&gt;FIRE&lt;/a&gt; (Financial Independence, Retire Early)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to connect to chat about one of these or another topic of interest, send me a connection request on &lt;a href=&quot;https://www.linkedin.com/in/isaacwyatt/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;LinkedIn&lt;/a&gt; with a note with a suggestion on where you want to meet up for coffee.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-12-16/" />
        </entry>
        <entry>
            <title>
                2023-12-04 | Writing 2008&#39;s CodeSpider in C#
                
            </title>
            <updated>2023-12-04T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-12-04/</id>
            <content type="html">
                &lt;h1 id=&quot;december-04-2023&quot; tabindex=&quot;-1&quot;&gt;December 04, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;summary-tldr&quot; tabindex=&quot;-1&quot;&gt;Summary / TLDR&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/iwyatt/CodeSpider&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;CodeSpider&lt;/a&gt; was a utility I wrote in C# in 2008/2009 as a means to evaluate the html of a large number of web pages to identify which pages contained certain IDs that needed to be changed or removed. It was the first &#39;useful&#39; software I&#39;d written.&lt;/p&gt;
&lt;h1 id=&quot;background&quot; tabindex=&quot;-1&quot;&gt;Background&lt;/h1&gt;
&lt;p&gt;In 2008 / 2009 time frame, Websites for B2B Software Companies, were often managed via cumbersome content management systems. Integration with newer tools like Salesforce and Eloqua (before Marketo came on the scene), often required making many manual changes, implementing static data, etc.&lt;/p&gt;
&lt;p&gt;As an example, a user filling out a form on a website requesting a free trial, on submitting the form would pass along a hidden &lt;code&gt;SFID&lt;/code&gt; variable to be processed by the server receiving the form submission. The value in this variable would attach a person&#39;s name (A &amp;quot;Lead&amp;quot;) to a particular &lt;a href=&quot;http://salesforce.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Salesforce.com&lt;/a&gt; Campaign object. Often, these SFIDs would get phased out, updated, and replaced, but tracking down which web pages contained IDs that needed replaced was often a whack-a-mole process that was incomplete and time-consuming, and would screw up reporting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note] It might be that at this time, the &amp;quot;Content Management System&amp;quot; was my employer&#39;s own, home-grown, web server. So I imagine that this whole exercise could have been made unnecessary by a simple bash script.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;problem&quot; tabindex=&quot;-1&quot;&gt;Problem&lt;/h1&gt;
&lt;p&gt;Among hundreds (thousands?) of pages that would have these ids, a subset would need updated at least quarterly, but determining which ones was, at best, an educated guess based on (1) a loosely compiled history of which pages were created in the previous time period and (2) seeing which &lt;a href=&quot;http://salesforce.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Salesforce.com&lt;/a&gt; Leads were recently attached to old Campaigns. This resulted in many hours of manually checking all the likely web pages for the code that needed to be updated. This method was inevitably incomplete. Additionally, this resulted in business reports being inaccurate such that driving decision making was sub optimal.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note]- Interpersonal Impact&lt;br /&gt;
When a Lead was attached to an old campaign that it was not supposed to, people would come by my desk in a slightly accusative tone: &lt;code&gt;Why are my leads getting attached to old campaigns?&lt;/code&gt;. It was a valid question, and as a young person recently out of college in their first professional job, I probably took it too personally. I got tired of these conversations and explaining what the problem was, and that our in-house web team weren&#39;t really invested in helping me solve the problem. I wasn&#39;t going to spend weeks going through potentially thousands of web pages trying to find every instance every time we retired a campaign, so my motivation to dust off my coding experience and learn my first language since Qbasic to solve a real, practical problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!warning]- Intellectual Property&lt;br /&gt;
No one has ever hired me to write code or develop intellectual property. My job titles have nearly all been of the &amp;quot;Strategy and Operations&amp;quot; variety which is usually strictly execution of other internal team&#39;s priorities. No job description I&#39;ve ever signed an offer for included any requirements to develop code. At the time I&#39;d written this software, I&#39;d never worked for a company that required an intellectual property ownership agreement of me. This software clearly had no marketable value as not a single person ever requested to download it and use it themselves.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;solution&quot; tabindex=&quot;-1&quot;&gt;Solution&lt;/h1&gt;
&lt;p&gt;To provide a comprehensive set of pages for which the IDs would need to be changed, I wrote a command line tool that would crawl the set of pages specified in a text file and return the list of web page urls that contained a user-specified search phrase, and what line the searched phrase was on.&lt;/p&gt;
&lt;p&gt;This list of URLs would then be provided to the web development team to update the pages in question.&lt;/p&gt;
&lt;h1 id=&quot;impact&quot; tabindex=&quot;-1&quot;&gt;Impact&lt;/h1&gt;
&lt;p&gt;By automating the process of opening a web page, searching the source code for a particular match, and creating a list of urls that needed updating, I saved myself hundreds of hours of labor, improved accuracy of reporting, and potentially helped assure that bonuses for performance were paid. Not to mention some leads that might have been ignored otherwise, were followed up on by sales staff. I also learned coding skills to unlock future leverage and efficiencies within the company I worked for at the time.&lt;/p&gt;
&lt;h1 id=&quot;known-limitations&quot; tabindex=&quot;-1&quot;&gt;Known Limitations&lt;/h1&gt;
&lt;p&gt;CodeSpider only searches the source code, and not the rendered HTML of the page it fetched. It probably would not work behind a proxy or firewall. It is unknown if it would even compile and run on modern systems. CodeSpider is not maintained or supported.&lt;/p&gt;
&lt;h1 id=&quot;alternative-solutions&quot; tabindex=&quot;-1&quot;&gt;Alternative Solutions&lt;/h1&gt;
&lt;p&gt;I imagine that there were many other solutions to solving this problem, including but not limited to, using ever-green Campaigns in Salesforce, or using Lead-Campaign association logic in the SFDC or Marketing Automation layer, or even writing a server-side bash script to regex-replace to perform the necessary updates. Today, the whole architecture that modern websites use, the problem &lt;em&gt;should be&lt;/em&gt; moot.&lt;/p&gt;
&lt;h1 id=&quot;further-development&quot; tabindex=&quot;-1&quot;&gt;Further Development&lt;/h1&gt;
&lt;p&gt;If this had been an actually useful tool, I think further development would have been to add a Graphic User Interface, and to search both the source code and the rendered web page for particular search strings. It could have also been updated to operate like a web crawler, following all outbound links to search a broader network of pages for potentially required updates.&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Searching the conetnts of hundreds, maybe thousands, of webpages can be automated easily in order to identify the pages that may need updating. Without knowing it, I added hundreds of thousands of dollars of value to the company.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-12-04/" />
        </entry>
        <entry>
            <title>
                2023-11-27 | Free Software, Services, and Content that I help support
                
            </title>
            <updated>2023-11-27T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-11-27/</id>
            <content type="html">
                &lt;h1 id=&quot;november-27-2023&quot; tabindex=&quot;-1&quot;&gt;November 27, 2023&lt;/h1&gt;
&lt;p&gt;An amazing, wonderful, and sometimes misunderstood property of the internet is just how incredibly &lt;em&gt;free&lt;/em&gt; it can be - especially in the sense of not having to pay for information, tools, services, content, etc.&lt;/p&gt;
&lt;p&gt;The incredible work of very smart people (ahem, nerds), who simply have a passion for what is possible with technology, has enabled an entire generation, economic and cultural, to thrive. These creators make incredible software, share information, and produce content - all for free. With my apologies for a car analogy.... if you&#39;ve ever needed to change lanes while driving through a city, and the person who lets you merge in front of them then gets stuck behind the next red light while you breeze through the yellow... well, that (contrived example) is a bit like the generosity of the creators of content and software who share it for free on the internet.&lt;/p&gt;
&lt;p&gt;This free software and content is often as good as and even better than content and software you would have to pay for directly. For some purposes, its worth paying the professional company for certain content or software if I need the reliability, consistency, exclusivity, etc. However, if I paid every organization for content, tools, and services that I can otherwise get for free, I&#39;d be spending &lt;strong&gt;several hundreds of dollars&lt;/strong&gt; per month.&lt;/p&gt;
&lt;p&gt;I&#39;ve written a &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/lists/gift-supported-tools-orgs-and-creators/&quot;&gt;list&lt;/a&gt; of the software, services, and content which I get for free. This is a much longer list than I would have expected. It gets longer every year. Each week I seem to remember one more item to add to this list. I support them all in some way, not always financially, but many of them with direct contributions annually.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 More of my tools, services, and media preferences can be found on &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/uses/&quot;&gt;Uses&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you aren&#39;t using any free and open source software and are interested in saving some money, I highly recommend looking to see what is available that could replace something you are currently paying for. I&#39;m willing to bet that there is at least one item.&lt;/p&gt;
&lt;p&gt;If you are using free software or consuming free content,  then an exercise I recommend doing is to write down all the free content and software that you get any value from and which also are supported by donations, charity, etc.  Then I recommend, if it is within your capacity, to support each of the entities on your list in some way. If you can code, maybe help quash a bug. If you can donate, that&#39;s good too. Even sharing with friends what you use as an alternative to a paid solution is a form of support.&lt;/p&gt;
&lt;p&gt;Here is the list of products, services, tools, and creators that I support in some way:&lt;/p&gt;
&lt;div class=&quot;transclusion internal-embed is-loaded&quot;&gt;&lt;a class=&quot;markdown-embed-link&quot; href=&quot;https://www.isaacwyatt.com/lists/gift-supported-tools-orgs-and-creators/#list&quot; aria-label=&quot;Open link&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;svg-icon lucide-link&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;div class=&quot;markdown-embed&quot;&gt;
&lt;h2 id=&quot;list&quot; tabindex=&quot;-1&quot;&gt;List&lt;/h2&gt;
&lt;h3 id=&quot;a-href-https-archive-org-target-blank-class-external-link-archive-org-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://archive.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Archive.org&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Its the organization behind the &amp;quot;wayback machine&amp;quot; - a way to view the versions of websites from the past. It still has my mid-1990s &amp;quot;webpage&amp;quot; I made as a child &lt;em&gt;cringe&lt;/em&gt; . The Internet Archive is a free non-profit digital library. I support them because they help archive content that would otherwise be lost - which provides transparency and accountability as well as access.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-washingtonstatestandard-com-donate-target-blank-class-external-link-washington-state-standard-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://washingtonstatestandard.com/donate/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Washington State Standard&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I started reading the Washington State Standard this past year, and a big feature I really like is that it not only has no paywall at the moment, but I can also get updates via their RSS feed.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-www-signal-org-target-blank-class-external-link-signal-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://www.signal.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Signal&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A free and &lt;a href=&quot;https://github.com/signalapp&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;open-source&lt;/a&gt; private messaging app that prioritizes user privacy and security using end-to-end encryption. Because it is a non-profit organization, it can be more aligned to user&#39;s interests than for-profit alternatives. I use Signal because Google, Apple, and cell phone carriers all monetize information about your communications and have a for-profit incentive to collect data about the messages you send.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-hachyderm-io-about-target-blank-class-external-link-hachyderm-io-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://hachyderm.io/about&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;hachyderm.io&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A &lt;a href=&quot;https://en.wikipedia.org/wiki/Mastodon_(social_network)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mastodon&lt;/a&gt; community. In its own words:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hachyderm is a curated network of tech industry professionals from around the globe, focused on building a respectful community. We&#39;re a safe space for LGBTQIA+ folks, we support Black Lives Matter, and we welcome anyone who follows the rules and needs a home or fresh start.&lt;/p&gt;
&lt;p&gt;We&#39;re hackers, professionals, enthusiasts, and we&#39;re passionate about life, respect, and digital freedom. We believe in peace and balance.&lt;/p&gt;
&lt;p&gt;Our community discusses: Safe space topics. Tech Industry. Economics. OSINT. News. Rust. Linux. Aurae. Kubernetes. Go. C. Infrastructure. Security. Black Lives Matter. LGTBQIA+. Pets. Hobbies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Follow me&lt;/a&gt; there.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-www-wikipedia-org-target-blank-class-external-link-wikipedia-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://www.wikipedia.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Wikipedia&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Wikipedia is such a tremendously helpful and useful resource for knowledge. Acknowledging that it isn&#39;t without faults, however. Any cited source is available for your inspection (and we should all get used to examining sources more often). I support Wikipedia (via the Wikimedia foundation) because I believe access to providing free access to knowledge is the single greatest underlying pre-requisite and contributor to increasing the quality of life to humanity.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-keepass-info-donate-html-target-blank-class-external-link-kee-pass-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://keepass.info/donate.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KeePass&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The original secure password database. Free. Not owned by a corporation. Open Source. Tons of plugins and clients for your phone, browser, and laptop.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-keeweb-info-target-blank-class-external-link-keeweb-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://keeweb.info/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Keeweb&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Keeweb is a browser-based free and open-source user interface for KeePass. I love it because I&#39;m a long time &lt;a href=&quot;https://keepass.info/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KeePass&lt;/a&gt; user, and Keeweb makes it convenient to access my Keepass database from the web browser in a secure, unobtrusive, local-only Progressive Web App.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-obsidian-md-target-blank-class-external-link-obsidian-md-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian.md&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I support Obsidian because its the only note taking tool that adds value to my notes without being too opinionated about how I use the tool. The rich ecosystem of plugins allow it to be extended to serve many use cases, including how I create content for this site.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-dg-docs-ole-dev-target-blank-class-external-link-obsidian-digital-garden-plugin-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://dg-docs.ole.dev/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian Digital Garden Plugin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A free and open source plugin for &lt;a href=&quot;http://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian.md&lt;/a&gt; that facilitates the creation and publishing of notes from &lt;a href=&quot;http://obsidian.md/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Obsidian.md&lt;/a&gt; to a public &amp;quot;digital garden&amp;quot; website. I support this because this website&#39;s content is almost entirely created with this plugin. See &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/#infrastructure-stack&quot;&gt;TIL (Today I learned)#Infrastructure Stack&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-kde-org-donate-target-blank-class-external-link-kde-org-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://kde.org/donate/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KDE.org&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Since switching to Linux as my full-time OS (formerly a combination of MacOS for work and Windows for gaming) in &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2024&lt;/a&gt;, I&#39;ve used KDE Plasma for my desktop environment.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-ghostty-org-target-blank-class-external-link-ghostty-terminal-emulator-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://ghostty.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Ghostty Terminal Emulator&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ghostty was created my Mitchell Hashimoto, is written in Zig, and combined with NuShell, is my preferred command line environment.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-somafm-com-target-blank-class-external-link-soma-fm-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://somafm.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Soma.fm&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A non-profit internet radio station that curates a diverse selection of ambient, electronic, and experimental music. It provides a unique listening experience that transcends conventional genres, offering a tranquil and introspective soundscape for relaxation, focus, or creative exploration. &lt;a href=&quot;http://soma.fm/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Soma.fm&lt;/a&gt;&#39;s commitment to high-quality audio and its carefully curated playlists make it a popular destination for music enthusiasts seeking a unique and immersive auditory experience.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-www-twitch-tv-lobosjr-target-blank-class-external-link-lobos-jr-twitch-a-a-href-https-www-youtube-com-lobosjrgaming-target-blank-class-external-link-youtube-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://www.twitch.tv/lobosjr&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;LobosJr Twitch&lt;/a&gt; / &lt;a href=&quot;https://www.youtube.com/@lobosjrgaming&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Youtube&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Streamer and Creator known for his playthroughs of Soulslike games, such as Dark Souls, Bloodborne, Elden Ring, and Sekiro: Shadows Die Twice. He is also known for his comedy and his ability to complete challenging games in creative ways. I&#39;ve been watching Lobos for more than 10 years, and support him for his very entertaining, funny, and creative gameplay and commentary, as well as he presents as a very good hearted person.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-www-kuow-org-target-blank-class-external-link-kuow-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://www.kuow.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KUOW&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Seattle affiliate of National Public Radio (NPR). I support KUOW because I find most news and talkshows and interviews to be thoughtful and nuanced, and does not rely on sensationalism to attract listeners.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-jellyfin-org-target-blank-class-external-link-jellyfin-media-system-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://jellyfin.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Jellyfin Media System&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A free and open source media server for streaming your own music, movies, photos, etc to your various devices. I support Jellyfin because it was the best option for me to listen to my music collection and has some of the best client applications on Roku, Android, etc.&lt;/p&gt;
&lt;h3 id=&quot;max-trescott-s-a-href-https-aviationnewstalk-com-target-blank-class-external-link-aviation-news-talk-a-podcast&quot; tabindex=&quot;-1&quot;&gt;Max Trescott&#39;s &lt;a href=&quot;https://aviationnewstalk.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Aviation News Talk&lt;/a&gt;  Podcast&lt;/h3&gt;
&lt;p&gt;A weekly-ish podcast from my very own flight instructor about General Aviation news, general tips for pilots, technical details on glass cockpits, flying GPS approaches, interviews, and answering listener questions. I support Max&#39;s podcast because he is a wonderful human being, I learned so much from him as a pilot, and want to continue supporting him even though we don&#39;t fly together anymore now that we live in different regions.&lt;/p&gt;
&lt;h3 id=&quot;a-href-https-www-opposingbases-com-target-blank-class-external-link-opposing-bases-air-traffic-talk-a-podcast&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;https://www.opposingbases.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Opposing Bases Air Traffic Talk&lt;/a&gt; Podcast&lt;/h3&gt;
&lt;p&gt;A weekly podcast that covers all things aviation. The hosts, RH and AG, are both experienced air traffic controllers who are also pilots (a rare combination!) that share their unique insights and perspectives with listeners. I support their show because the knowledge I get from the show make me a better pilot as a result of understanding Air Traffic Control&#39;s perspective but also because I love their sense of humor.&lt;/p&gt;
&lt;h3 id=&quot;a-href-http-vfrmap-com-target-blank-class-external-link-vfrmap-com-a&quot; tabindex=&quot;-1&quot;&gt;&lt;a href=&quot;http://vfrmap.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;vfrmap.com&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A convenient website that stitches together all the official and up-to-date aviation maps of the United States. It has both VFR and IFR maps, and more. Airports can be clicked on to get current weather and links to Chart Supplement information, as well as approach charts. I love using it while at home on my computer to get ideas of where I might want to fly and study the areas I&#39;ll be flying around.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-11-27/" />
        </entry>
        <entry>
            <title>
                2023-11-21 | My first merged pull request to an open source project
                
            </title>
            <updated>2023-11-21T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-11-21/</id>
            <content type="html">
                &lt;h1 id=&quot;november-21-2023&quot; tabindex=&quot;-1&quot;&gt;November 21, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/o4CN7-rPe7M?si=LFMJwCZ8Bhn-ojdM&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://youtu.be/o4CN7-rPe7M&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Link&lt;/a&gt; to tech demo video on YouTube&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note]&lt;br /&gt;
This is an article about my first ever merged pull request on an open source product. See &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt; for more background on my coding experiences and my journey to consider myself a &amp;quot;programmer&amp;quot; instead of just a &amp;quot;coder&amp;quot;.&lt;/p&gt;
&lt;p&gt;I&#39;m taking this journey because I like to make useful products, learn interesting things, solve challenging puzzles, and maybe someday make some money doing it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;tldr&quot; tabindex=&quot;-1&quot;&gt;TLDR&lt;/h1&gt;
&lt;p&gt;I programmed an automation tool that increases developer productivity and increases the reliability of the Taskwarrior to-do task management software by assuring that developers are all collaborating on the same version of programming language.&lt;/p&gt;
&lt;h1 id=&quot;background&quot; tabindex=&quot;-1&quot;&gt;Background&lt;/h1&gt;
&lt;p&gt;TaskWarrior is a task list or to-do application for the command line. TaskWarrior has a module being integrated called TaskChampion. Although TaskWarrior is primarily written in C++, TaskChampion is written in the Rust programming language. The source code is hosted in a repository on the Github version control system. As of &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/2023-11-21/&quot;&gt;2023-11-21&lt;/a&gt;, TaskWarrior has 89 sponsors, ~3,600 stars, 140 contributors, ~2,900 OS-X downloads per year, and over 14,000 downloads from Github itself.&lt;/p&gt;
&lt;p&gt;Software development requires collaborating developers to use the same version of the coding environment, supporting software libraries, etc. in order to assure that the code the developers writes performs, as expected, no matter who is running it or where. When developers use different versions of the same software to write code, it can introduce bugs, or fail completely. With so many developers collaborating on TaskWarrior, it is important to keep them coordinated and aligned on which development software versions to use.&lt;/p&gt;
&lt;p&gt;Therefore, keeping everyone on the same page is critical to writing software that performs as the user and other developers expect. This can be accomplished in a variety of ways, both automated and manually. This is especially the case with collaborating developers on Open Source Software, and in this case, TaskWarrior. One solution specific to collaborating with other developers on the Task Champion repository, a child repository of Task Warrior, is to manually update the version of the software environment to be used, wherever it is used.&lt;/p&gt;
&lt;p&gt;In the Rust programming language, this is expressed as the &lt;code&gt;Minimum Supported Rust Version&lt;/code&gt; or &lt;code&gt;MSRV&lt;/code&gt; for short. The MSRV is specified in a variety of files, specifically configuration files which aid in the continuous integration (&amp;quot;CI&amp;quot;) and software compilation process. This makes sure that all components of that software that gets compiled into a user-executable binary file are using the same version of Rust and therefore compatible with each other.&lt;/p&gt;
&lt;h1 id=&quot;problem&quot; tabindex=&quot;-1&quot;&gt;Problem&lt;/h1&gt;
&lt;p&gt;Manually updating and maintaining the MSRV in a variety of places can be cumbersome, time consuming, and error prone. As a result, software may end up not using the correct version of Rust, may not compile properly, and even if it is updated correctly, may require significant time to update every time it needs to be updated.&lt;/p&gt;
&lt;h1 id=&quot;solution&quot; tabindex=&quot;-1&quot;&gt;Solution&lt;/h1&gt;
&lt;p&gt;Using automation to update files that specify the MSRV whenever the MSRV changes, developers can better be aligned on what version of Rust they should be using. Using the existing &lt;code&gt;xtask&lt;/code&gt; command line automation tool , a repo within the parent TaskChampion repository (which is a child of the TaskWarrior repository), I implemented new functionality that will automatically update the MSRV to a specified version number for all files specified within the program&#39;s source code. For example, running &lt;code&gt;xtask MSRV 1.65&lt;/code&gt; will look in all specified files for a specific text pattern, and if an existing version is found and is different than the one specified in the command, it will update the MSRV to 1.65.&lt;/p&gt;
&lt;h1 id=&quot;impact&quot; tabindex=&quot;-1&quot;&gt;Impact&lt;/h1&gt;
&lt;p&gt;By automating the process of keeping the MSRV consistent across all configuration files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No developers will have to spend time manually updating the MSRV in any files.&lt;/li&gt;
&lt;li&gt;The MSRV will stay consistent, reducing time spent debugging and fewer version compatibility bugs&lt;/li&gt;
&lt;li&gt;Code written should be more reliably built by CI services.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;how&quot; tabindex=&quot;-1&quot;&gt;How&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;xtask MSRV&lt;/code&gt; program has a &lt;code&gt;const&lt;/code&gt; slice of &lt;code&gt;(string, string)&lt;/code&gt; tuples that specify:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the relative path to a file that should have its MSRV updated, and&lt;/li&gt;
&lt;li&gt;regex that specifies the string to look for within the file containing the version number to be updated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This slice is than looped over to find and open the file, whose contents is iterated over line by line, and evaluated for a match to the specified regex. If a match is found, and it is different than the MSRV specified at the command line, then an update is made to the line, and the remainder of the file is evaluated. The file is then saved and closed. This recurs for all files specified in the slice until all files have been evaluated. When a file is successfully updated, a note will be printed to the command line.&lt;/p&gt;
&lt;p&gt;Specifying no version number, or an invalid version number (according to simple numeric value checks), will result in an error and no updates will be made. Similarly, if a specified file does not exist, the MSRV pattern is not found, or the found MSRV is not different to the one specified as an argument at the command line, then no updates will be made.&lt;/p&gt;
&lt;h1 id=&quot;known-limitations&quot; tabindex=&quot;-1&quot;&gt;Known Limitations&lt;/h1&gt;
&lt;p&gt;There are several known limitation to &lt;code&gt;xtask MSRV&lt;/code&gt; that, given the scope, time, and anticipated usage of the tool, are considered to be acceptable. These include but may not be limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MSRV does not prevent the user from specifying invalid Rust version numbers which may result in bad configurations&lt;/li&gt;
&lt;li&gt;MSRV does not guarantee that all files with a specified MSRV will get updated as expected, since files and appropriate regex must be specified in the &lt;code&gt;slice&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Because MSRV relies on regex pattern matching, it is unable to proactively identify potentially false-positive matches when evaluating lines in a file, and as a result, a developer may inadvertently update a file&#39;s contents with MSRV that they did not intend to.&lt;/li&gt;
&lt;li&gt;Depends on the user to have a correctly specified environment variable to the appropriate Cargo manifest location.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;alternative-solutions&quot; tabindex=&quot;-1&quot;&gt;Alternative Solutions&lt;/h1&gt;
&lt;p&gt;There may be other solutions to solving the coordination of version numbers problem. The default solution is to conduct manual updates. A proposed but potentially incomplete solution is to specify the MSRV in Rust&#39;s &lt;code&gt;cargo.toml&lt;/code&gt; configuration file, implicitly indicating to a potential developer the MSRV to be used. This solution would still require the manual updating of each relevant configuration file.&lt;/p&gt;
&lt;h1 id=&quot;further-development&quot; tabindex=&quot;-1&quot;&gt;Further Development&lt;/h1&gt;
&lt;p&gt;To improve on this functionality, a developer could implement function to search the entire repo&#39;s contents for files with specific MSRV patterns, instead of specifying specific files within the repo. Additionally, better version identification, perhaps with serialized data with &lt;code&gt;serde&lt;/code&gt; might yield better accuracy and lower false positives or false negatives.&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Automatically updating the MSRV to enhance the productivity of developers and reduce potential bugs should result in higher velocity development of Taskwarrior. Extending the functionality of &lt;code&gt;xtask MSRV&lt;/code&gt; could include include versioning of other types of software and libraries - not just rust. The functionality could also be applied to documentation of software.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;what-i-ve-learned-from-this-project&quot; tabindex=&quot;-1&quot;&gt;What I&#39;ve learned from this project&lt;/h1&gt;
&lt;p&gt;As I was working through the project I kept a list of items I want to keep in mind for future projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I need to pay careful attention to crate versions that may not be compatible with a minimum supported rust version. Unwinding the manifest dependencies is an unfun activity. Specifically, I found that &lt;code&gt;cargo.lock&lt;/code&gt; had been updated with some dependencies that I no longer needed and couldn&#39;t use anyway due to their particular version not being supported.&lt;/li&gt;
&lt;li&gt;It is helpful to read the docs for crates, methods, etc during development and to revisit when using unfamiliar methods.  It is helpful to understand what a function actually does, what it actually returns, and under what conditions it tends to throw errors. It may also help find more useful methods that are available that I wasn&#39;t aware of, or methods that are only available under certain conditions (eg there is a &lt;code&gt;write_at&lt;/code&gt; method that is only available on Unix platforms, so I needed to rewrite some of the code with &lt;code&gt;write_all&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Follow the leader&#39;s suggestions.: They may have contextual or implicit knowledge that they either failed to communicate explicitly, or are unable to transparently communicate. (eg The collaborator who assigned the project to me envisioned a slightly different developer workflow than I had in mind. Given their familiarity with how developers intend to use my code, its fair to assume my project leader would have a better idea how the code should work than I do. As a result of not following the suggestion to use regex from the beginning, I ended up going back and implementing regex for pattern matching anyway when I learned about the unstated expectation.)&lt;/li&gt;
&lt;li&gt;It is preferable to use &#39;idiomatic&#39; rust code. This may go beyond &lt;code&gt;cargo fmt&lt;/code&gt;.  (eg: .unwrapped() is not idiomatic even though it is not technically incorrect).&lt;/li&gt;
&lt;li&gt;Readability of code counts. Un-nesting &lt;code&gt;match&lt;/code&gt; or &lt;code&gt;if&lt;/code&gt; statements may be ok if it has little to not impact to the speed of the compiled code but increases the readability of the code.&lt;/li&gt;
&lt;li&gt;Clarify the task. I had assumed that the &lt;em&gt;comments&lt;/em&gt; of the file were to be changed, but the actual &lt;em&gt;configuration values&lt;/em&gt; are what needed to be changed.&lt;/li&gt;
&lt;li&gt;Look to see how others have solved the problem before. Its not cheating, necessarily.
&lt;ul&gt;
&lt;li&gt;I felt that in my case, cutting my teeth by working from scratch was part of the learning process. In a professional context, speed matters more than individual learning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Further, the solution might be in the &lt;strong&gt;exact same file&lt;/strong&gt; as the one I&#39;m already working in! I was a bit challenged by relative paths in different contexts (eg: my git environment vs. someone else&#39;s) and needed to learn about environment variables, but my project manager had to very nearly spell it out for me. This was particularly embarrassing since there was already a function in the file I was collaborating on that had almost the entire solution already coded.&lt;/li&gt;
&lt;li&gt;What a docstring is versus a normal comment and how it is used.&lt;/li&gt;
&lt;li&gt;Conventions around shadowing variables and similarly named variables in adjacent scopes/namespace (eg &lt;code&gt;line&lt;/code&gt; from a &lt;code&gt;for line in lines&lt;/code&gt; loop)&lt;/li&gt;
&lt;li&gt;Before requesting a code review, I need to make sure to:
&lt;ul&gt;
&lt;li&gt;look for anything that can be refactored - especially in places where previous code was modified in place and the functionality changed
&lt;ul&gt;
&lt;li&gt;eg variables defined in a loop that don&#39;t change with each iteration of the loop&lt;/li&gt;
&lt;li&gt;In Rust, look for where &lt;code&gt;?&lt;/code&gt; can be used instead of &lt;code&gt;unwrapped&lt;/code&gt; and let the outer loop handle exceptions to &lt;code&gt;?&lt;/code&gt; failures&lt;/li&gt;
&lt;li&gt;Consider if using a slice is better than using an array&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;run all linters and fix issues&lt;/li&gt;
&lt;li&gt;run auto formatting&lt;/li&gt;
&lt;li&gt;review all comments for consistency with the code&lt;/li&gt;
&lt;li&gt;build the binary and test it on local system&lt;/li&gt;
&lt;li&gt;Compile / Build the binary and run it in ways and environment I might imagine that users might too. I found that in the process of preparing the recorded demo, that my environment variables weren&#39;t set the same as when I was running debug tests without compiling. Just testing whether it compiles or not is insufficient.
&lt;ul&gt;
&lt;li&gt;While debugging, learned that the CARGO_MANIFEST environmental variable works differently while running with &lt;code&gt;cargo run&lt;/code&gt; than after the binary is compiled and therefore it doesn&#39;t work the way I thought it did. While troubleshooting this, I also found that, at least on my computer, my environment path variables when set using the &lt;code&gt;~&lt;/code&gt; shorthand for the user home directory, aren&#39;t considered valid paths by Rust when reading from the environment variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;thanks&quot; tabindex=&quot;-1&quot;&gt;Thanks&lt;/h1&gt;
&lt;p&gt;I was getting guidance (mostly via hints and directional nudges) from &lt;a href=&quot;https://github.com/djmitche&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;@djmitch&lt;/a&gt; who coordinated with and assigned the project to me. Thank you for letting me contribute!&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-11-21/" />
        </entry>
        <entry>
            <title>
                2023-11-14 | Fixing my ASUS Laptop Screen
                
            </title>
            <updated>2023-11-14T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-11-14/</id>
            <content type="html">
                &lt;h1 id=&quot;november-14-2023&quot; tabindex=&quot;-1&quot;&gt;November 14, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231114205450.png&quot; alt=&quot;Pasted image 20231114205450.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;TLDR: I fixed my laptop screen despite expecting to make things worse, wasting time, and forcing myself to pre-emptively buy a replacement laptop. It wasn&#39;t hard, technical (the solution was simple enough my toddler could have done it), or time consuming. The hardest part was just resigning myself to the fact that I needed to fix it, or break it completely trying.&lt;/p&gt;
&lt;p&gt;When I started a mini sabbatical in 2018, I bought a ASUS S410U after turning in my work laptop to my previous employer. I needed something inexpensive and minimally functional so I could do the basics while I took a contract consulting job here and there. I wouldn&#39;t be doing much else besides email, meetings, and using SAAS products, and I already had a home computer for playing games.&lt;/p&gt;
&lt;p&gt;The laptop has served surprisingly well despite it being only around $500 or so. I did end up playing a few games on it, but nothing serious, and I had been using it for coding - but I&#39;m not compiling huge programs or anything.&lt;/p&gt;
&lt;p&gt;However, a few months ago, I noticed that the screen would flicker or completely go blank if I slightly opened or closed it. I suspected a wear in the wires from the mother board to the screen, or a failure in the screen itself. Neither of which I wanted to deal with by attempting to repair it myself.&lt;/p&gt;
&lt;p&gt;Being somewhat frugal (I am sometimes too reluctant to spend money on convenience products or services). So rather than send the laptop in for repairs (a months long process and almost as pricey as getting a replacement budget laptop), I just docked it to my gaming monitor at my desk and have been stationed here for the last couple months - without the benefits of a laptop - which is to be mobile.&lt;/p&gt;
&lt;p&gt;The lack of mobility has been gnawing at me the last couple weeks though. I work from home, which I love, but I like being able to pop in to a space to be around people sometimes too. I find it helps when I need to do some writing, thinking, or just gather ambient energy from my environment.&lt;/p&gt;
&lt;p&gt;I had finally worked up the nerve to give repairing it myself a shot after reflecting on a &lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mastodon&lt;/a&gt; post:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When I was young, I thought my dad knew everything--cars, construction, plumbing, electrical, all of it.&lt;/p&gt;
&lt;p&gt;It was later that I realized the lesson: he really didn&#39;t, he just wasn&#39;t afraid to try.&lt;/p&gt;
&lt;p&gt;That&#39;s the approach I always try to take now. And rarely will you worsen it by trying--so if help does have to be called in, at least you&#39;ve already learned something new.&lt;/p&gt;
&lt;p&gt;So go for it!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have a Toshiba M645 S4055 from 2009ish that I&#39;ve opened up several times for various reasons. It till works! It tends to overheat quickly so I think I need to swap the fan out and maybe reset the bios (I had messed around with fan settings many years ago). I&#39;ve already reapplied thermal paste but maybe I messed that up(?). So I felt like I had small idea of what to expect when attempting a diagnosis on my ASUS laptop, but I had little hope for actually solving any problem I&#39;d find within.&lt;/p&gt;
&lt;p&gt;Finally today I decided to roll the dice and open the insides. With more than hour set aside I set out to see if I could diagnose the screen issue. If I did, I could order appropriate replacement parts. If I borked things up - well, I could just use my gaming computer or my raspberry pi and continue to be tethered to my desk.&lt;/p&gt;
&lt;p&gt;To prepare, I cleaned my desk, turned off the laptop, turned up all the lights, got my tiny screwdrivers. Then I got to work removing the 10ish screws holding the back panel together. Gently using a tiny flat head screw driver as a pry tool I unsnapped the bottom panel to find a loose screw, some dust bunnies, a dusty fan, and an otherwise very well designed motherboard (in my layman&#39;s assessment).&lt;/p&gt;
&lt;p&gt;I replaced the screw that had come completely loose as it was part of the hinge the screen is attached to, and I tightened the others on the hinge as well. The proper location of the loose screw can be seen in the photo above. I suspect that the screw became loose with the many opening and closings of the laptop screen. The screw was probably moving around inside the computer, causing some interference and short circuits that made the screen go wonky or blank completely.&lt;/p&gt;
&lt;p&gt;The dust bunnies got blown out and I snapped the laptop cover snapped back on. The only hiccup was in replacing one of the exterior screws, which neither screwed all the way in, nor would it come all the way out. I even attempted to fully unscrew it and grasp it with needle nose pliers. I decided to leave it in place, confident it would work itself out, figuratively and literally.&lt;/p&gt;
&lt;p&gt;I reconnected the power adapter, turned on the power, and the screen came right on. I moved it back and forth on the hinge a little and observed minimal disruption to the rendered output. 🎉After cleaning up all of my tools, I got to writing this post, and found a minor disruption: some of the keyboard keys were a little unresponsive and not traveling their full distance down and not returning their full distance. On examination, I found a bit of paper wedged under the &lt;code&gt;i&lt;/code&gt; key, and the &lt;code&gt;k&lt;/code&gt; key had become slightly misaligned. I fixed both within 15 minutes.&lt;/p&gt;
&lt;p&gt;Getting this fixed feels like a moderate victory - I can now go work from interesting places again (maybe the coffee shop next, the local library, and a meetup later this week), or work from the same room my partner is watching TV within, etc. I was ready to write off the laptop and just go buy a replacement. If the &lt;a href=&quot;https://frame.work/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Framework 16&lt;/a&gt; wasn&#39;t backlogged until Q2 of 2024, I just may have bought the replacement against my frugal nature. Instead, I got the satisfaction of fixing the ASUS myself, saving some money, and overcoming the trepidation that I might make things worse for myself. Not to mention keeping yet another e-device out of the landfill.&lt;/p&gt;
&lt;p&gt;It was a good day, and I&#39;m happy to be able to type it up on my now fixed laptop to share it with you.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-11-14/" />
        </entry>
        <entry>
            <title>
                2023-11-06 | 🎮 Myers Briggs for Final Fantasy Characters
                
            </title>
            <updated>2023-11-06T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-11-06/</id>
            <content type="html">
                &lt;h1 id=&quot;november-06-2023&quot; tabindex=&quot;-1&quot;&gt;November 06, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/video-games/&quot;&gt;Video Games&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In 2013, some friends and I were writing a video game blog called &amp;quot;DeltaAttack&amp;quot; and I was weaving in my interest in data science and machine learning.&lt;/p&gt;
&lt;p&gt;At the time, the statistical programming language R was having its moment and although there were no R packages that could classify text into Myers-Briggs type indicators, I did find a web API that as of 2023-11-06, still operates.&lt;/p&gt;
&lt;p&gt;The code I put here was a bit hacked together to scrape a &lt;a href=&quot;https://gamefaqs.gamespot.com/gba/930370-final-fantasy-vi-advance/faqs/47016&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;GameFaqs&lt;/a&gt; text document which has the entire script from Final Fantasy VI available for each character, which I sent through to the web API that actually has the MBTI model. I did the remaining graphic work once I got the results.&lt;/p&gt;
&lt;p&gt;It was a fun project but could have been done even with simple curl commands up until I put the graphic together. But the point was to learn R, write for the game blog, and have some fun learning about the personalities of the characters from my favorite Final Fantasy game.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231106182824.png&quot; alt=&quot;Pasted image 20231106182824.png&quot; /&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-11-06/" />
        </entry>
        <entry>
            <title>
                2023-11-02 | 🛩 Flight to Troutdale, OR (KTTD) in Cirrus SR-22T
                
            </title>
            <updated>2023-11-02T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-11-02/</id>
            <content type="html">
                &lt;h1 id=&quot;november-02-2023&quot; tabindex=&quot;-1&quot;&gt;November 02, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231102205821.png&quot; alt=&quot;Pasted image 20231102205821.png&quot; /&gt;&lt;/p&gt;
&lt;h1 id=&quot;flight-to-troutdale-or-kttd-in-cirrus-sr-22-t&quot; tabindex=&quot;-1&quot;&gt;🛩 Flight to Troutdale, OR (KTTD) in Cirrus SR-22T&lt;/h1&gt;
&lt;p&gt;Not long ago I flew in an Cirrus SR-22T G6 w/ FIKI to Troutdale. I brought my partner and toddler with me to see family who live in the area.&lt;/p&gt;
&lt;p&gt;Notable on this flight is that despite the beautiful sunny day, there were high winds in the Portland area. Fortunately with winds 20 knots gusting 26, they were nearly straight down the runway. This didn&#39;t stop the approach under 1,000 feet MSL from being a little bumpy. It wasn&#39;t even close to the white knuckle approach I had much earlier in my flying experience on a return flight from Shelter Cove, CA (0Q5) to Palo Alto, CA (KPAO). On that one, I had to input nearly 20 degrees of crab angle to maintain center alignment with the centerline of runway 31 while on final.&lt;/p&gt;
&lt;p&gt;The return flight was beautiful since it was timed to be toward the tail end of the day, with the sun casting colorful rays on the mountains. With the time change coming up, it seems prudent to get used to night time flying again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231102205437.png&quot; alt=&quot;Pasted image 20231102205437.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Something that often strikes me as I look down from high in the air, are the tiny town nestled in remote valleys that seem considerably isolated from the outside world. I wonder in those moments what it would be like to live there, and if I would like to make a journey there on the ground (maybe on my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/motorcycling/&quot;&gt;motorcycle&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Using the multi-function display of the aircraft, I noted an airport identifier in the vicinity of one such town: &lt;a href=&quot;https://www.airnav.com/airport/39P&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;39P&lt;/a&gt;. This is Strom Field airport in Morton, Washington. It is far too short of an airport runway to take a Cirrus aircraft, as is the case for most country and many mountain airports. After checking Google Maps, however, I believe the town I observed with my eye is Bremer, WA.  In any case, I think a motorcycle ride around Mt. Rainier and through some these towns would make for a wonderful trip.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-11-02/" />
        </entry>
        <entry>
            <title>
                2023-10-26 | 🦀 Seattle Rust User Group Meetup
                
            </title>
            <updated>2023-10-26T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-10-26/</id>
            <content type="html">
                &lt;h1 id=&quot;october-26-2023&quot; tabindex=&quot;-1&quot;&gt;October 26, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;rust-meetup-microsoft-s-reactor-building&quot; tabindex=&quot;-1&quot;&gt;🦀 Rust Meetup @ Microsoft&#39;s Reactor Building&lt;/h1&gt;
&lt;p&gt;Last week I was fortunate enough to attend a monthly meetup about the Rust programming language held at the Microsoft Reactor building, hosted by the &lt;a href=&quot;https://www.meetup.com/seattle-rust-user-group/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Seattle Rust User Group&lt;/a&gt;.&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231026110905.png&quot; alt=&quot;Pasted image 20231026110905.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;Brad G&amp;quot;, who is also in the rotation for sending out the weekly Rust newsletter, was the emcee of the event and a wonderful host. He worked with an attendee who had brought a server PCB to do an impromptu presentation about the how and why of Rust running some of the embedded software of the board. The board is part of a design by &lt;a href=&quot;https://oxide.computer/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Oxide&lt;/a&gt; for more turn-key cloud hardware solutions that seems&lt;a href=&quot;https://oxide.computer/blog/the-cloud-computer&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt; innovative in design&lt;/a&gt; (even if &lt;a href=&quot;https://hachyderm.io/@cstross@wandering.shop/111300908902107779&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;not completely novel conceptually&lt;/a&gt;). I like what I&#39;m learning about and will be watching how the company develops.&lt;/p&gt;
&lt;p&gt;As the main talk of the event, Brad played a video walking though some of the functionality underlying the idea of &lt;code&gt;.unwrap()&lt;/code&gt; in Rust. We touched on the cardinality of the return, the differences between the &lt;code&gt;Result&lt;/code&gt; and &lt;code&gt;Option&lt;/code&gt; types. I learned about &lt;code&gt;unwrap_or...&lt;/code&gt; variations of &lt;code&gt;.unwrap()&lt;/code&gt; which I was able to put into use the next day.&lt;/p&gt;
&lt;p&gt;It was nice to have a familiar topic to start with, but the conversation eventually drilled down into aspects of computing theory I&#39;ve had no previous exposure to. Borrowing the term from a &lt;a href=&quot;https://improvesomething.today/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;good friend&lt;/a&gt;, I began understanding my &amp;quot;frontier of ignorance&amp;quot; with regard to Rust. This &amp;quot;frontier of ignorance&amp;quot; is an important concept in understanding how far you are on your journey relative to others. It wouldn&#39;t be exaggerating to say that I&#39;ve barely taken a couple steps on my journey😅.&lt;/p&gt;
&lt;p&gt;The Microsoft Reactor building at the event was very comfortable. Quiet, well lit, good infrastructure for a meetup. It was also very nostalgic for me due to its similarity to the offices I&#39;d worked in at New Relic, HashiCorp, and Google, among the countless others I&#39;d visited while in the San Francisco Bay Area. Specifically, I liked the display case with the legacy Microsoft products. As I &lt;a href=&quot;https://hachyderm.io/@iw/111264898137803749&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;mentioned on Mastodon&lt;/a&gt;, I&#39;ve probably used half or more of them.&lt;/p&gt;
&lt;p&gt;I liked the event well enough to return for &lt;a href=&quot;https://www.meetup.com/seattle-rust-user-group/events/295483924/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;next month&#39;s meetup&lt;/a&gt;.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-10-26/" />
        </entry>
        <entry>
            <title>
                2023-10-17 | 👩‍💻 Contributing to Taskwarrior - an Open Source task management system for the command line
                
            </title>
            <updated>2023-10-17T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-10-17/</id>
            <content type="html">
                &lt;h1 id=&quot;october-17-2023&quot; tabindex=&quot;-1&quot;&gt;October 17, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;&lt;br /&gt;
This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;contributing-to-taskwarrior&quot; tabindex=&quot;-1&quot;&gt;Contributing to Taskwarrior&lt;/h1&gt;
&lt;p&gt;I felt like I reached a point in the process of coding my text-based game that I could be developing bad coding habits without knowing it. I also wasn&#39;t developing the collaboration skills common to programmers who work in organizations. I felt like I needed to find a coach, and a project I could contribute to that brings value to other people.&lt;/p&gt;
&lt;p&gt;But who would possibly take someone who may not even have an intern&#39;s level of coding experience, give them a programming task, coach them, and let them actually do something useful?&lt;/p&gt;
&lt;p&gt;Well, fortunately, the open source ecosystem is ever in need of developers willing to spend time fixing bugs, updating documentation, implementing features, refactoring code, etc. &lt;a href=&quot;https://jellyfin.org/contribute&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Jellyfin&lt;/a&gt;, a home media server, is one example of an open source project who recently put out a call for contributors. More so than money, these projects need contributors with all sorts of skills at many different levels. For me, it was just a matter of finding and choosing the project that had the right intersection of interests, governance, domain knowledge, and needs (both the project&#39;s and mine).&lt;/p&gt;
&lt;p&gt;That is why I was excited to see that Taskwarrior has a branch called &lt;a href=&quot;https://taskchampion.github.io/taskchampion/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Taskchampion&lt;/a&gt; that is written in Rust. According to its &lt;a href=&quot;https://taskwarrior.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;website&lt;/a&gt;: &lt;em&gt;&amp;quot;Taskwarrior is Free and Open Source Software that manages your TODO list from the command line. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Initially I had hoped to contribute directly to Taskchampion, but it appears that it is being folded in to the Taskwarrior trunk. Still, I take this as a sign that there will be more Rust development happening on the Taskwarrior core. This plays nicely with my interests in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;moving more of my day to day work out of the browser and into text-based command-line-interfaces (&amp;quot;CLI&amp;quot;s) and textual-user-intefaces (&amp;quot;TUI&amp;quot;s). More on this another time.&lt;/li&gt;
&lt;li&gt;reducing my dependence on the excellent, but aging, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-gqueues-for-gtd/&quot;&gt;gqueues.com&lt;/a&gt; as my go-to task management tool.&lt;/li&gt;
&lt;li&gt;programming in Rust&lt;/li&gt;
&lt;li&gt;collaborating with people smarter than me, who are professionally employed in organizations I might want to do business with some day.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My first task? Basically an automated find-and-replace for the source code files that updates comments with the minimum version of Rust developers should be using when developing.&lt;/p&gt;
&lt;p&gt;I don&#39;t know if my pull request will get merged, or if I&#39;ll get punted off the project, or if I&#39;ll ever help get Taskwarrior to a point where it becomes my main task management application, but I&#39;ll learn a lot in the process no matter what. And &lt;strong&gt;that&lt;/strong&gt; is what this whole project is about.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-10-17/" />
        </entry>
        <entry>
            <title>
                2023-10-10 | 🏃‍♀️&#39;I run, but I&#39;m not a runner&#39;; 🛫 Flight to Hoaquim (KHQM)
                
            </title>
            <updated>2023-10-10T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-10-10/</id>
            <content type="html">
                &lt;h1 id=&quot;october-10-2023&quot; tabindex=&quot;-1&quot;&gt;October 10, 2023&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/mountaineering/&quot;&gt;Mountaineering&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;weekend-flight&quot; tabindex=&quot;-1&quot;&gt;Weekend Flight&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231006133435.png&quot; alt=&quot;Pasted image 20231006133435.png&quot; /&gt;&lt;br /&gt;
Recently I flew from KRNT (Renton, WA) to KHQM (Hoaquim, WA) and back.&lt;/p&gt;
&lt;p&gt;Flying IFR is a challenging but rewarding experience. The views in the Pacific Northwest when a cloud layer cuddles the mountains makes for a very scenic way to appreciate the beauty of the world.&lt;/p&gt;
&lt;h1 id=&quot;i-run-but-i-m-not-a-runner&quot; tabindex=&quot;-1&quot;&gt;🏃‍♀️I Run, but I&#39;m not a Runner&lt;/h1&gt;
&lt;p&gt;I was asked recently if I would ever run a half marathon. I have, but my actual answer was that I don&#39;t run for fun. It&#39;s just literally the laziest and time-efficient way to exercise a few times per week. If there were no health benefit to it, I wouldn&#39;t do it.&lt;/p&gt;
&lt;p&gt;Hiking and Mountaineering however, are wonderful. I love the exploration, scenic views, the meditative silence (when not ruined by noisy groups, nearby highways, or individuals on the trail playing music), the refreshing smells of nature, and many times, the greenery - not to mention the occasional wildlife. There may be a physical health benefit to hiking and mountaineering, but I think there is a much bigger mental health benefit and ,for some, a spiritual health benefit.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-10-10/" />
        </entry>
        <entry>
            <title>
                2023-10-01 | ✅ Intro to the Hierarchy of Fulfillment
                
            </title>
            <updated>2023-10-01T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-10-01/</id>
            <content type="html">
                &lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Blog Chain: Hierarchy of Fulfillment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;october-01-2023&quot; tabindex=&quot;-1&quot;&gt;October 01, 2023&lt;/h1&gt;
&lt;h1 id=&quot;hierarchy-of-fulfillment&quot; tabindex=&quot;-1&quot;&gt;Hierarchy of Fulfillment&lt;/h1&gt;
&lt;p&gt;The &lt;em&gt;Hierarchy of Fulfillment&lt;/em&gt; (HoF) is my experimental framework that loosely applies David Allen&#39;s 5 Horizon&#39;s of &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt; to each tier in &lt;a href=&quot;https://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Maslow&#39;s Hierarchy of Needs&lt;/a&gt; and indirectly inspired by Steven Covey&#39;s &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/The_7_Habits_of_Highly_Effective_People&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;7 Habits of Highly Effective People&lt;/a&gt;&lt;/em&gt; and a slight dash of Charles Duhigg&#39;s &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Power_of_Habit&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The Power of Habit&lt;/a&gt;&lt;/em&gt; or James Clear&#39;s &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/James_Clear&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Atomic Habits&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;HoF is expressly &lt;em&gt;not&lt;/em&gt; a productivity system like GTD, nor an psychological explanation of human behavior like Maslow&#39;s Hierarchy of Needs. The Hierarchy of Fulfillment is a framework for thinking about what goals, targets, projects or objectives are worth doing. In its simplest form, one could think of it like a better-informed &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Kick_the_bucket&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;bucket list&lt;/a&gt;&amp;quot;.&lt;/p&gt;
&lt;h1 id=&quot;disclaimer&quot; tabindex=&quot;-1&quot;&gt;Disclaimer&lt;/h1&gt;
&lt;p&gt;HoF is perhaps a not well informed attempt to assure I am working toward both near and long term goals for every important area of my life. It is however possible that attempting to have such a holistic approach to every important aspect of life is a bit counter productive and a type of &lt;em&gt;toxic productivity&lt;/em&gt;. Given that Maslow&#39;s Hierarchy of Needs has 5 tiers and David Allen&#39;s GTD has 5 horizons, there is up to a possible 5 x 5 = 25 targets to manage.&lt;/p&gt;
&lt;p&gt;As an experiment, I&#39;ve been iterating on the framework each year since &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2018&lt;/a&gt; when it started as my first application of GTD&#39;s 5 Horizons.&lt;/p&gt;
&lt;h1 id=&quot;framework-introduction&quot; tabindex=&quot;-1&quot;&gt;Framework Introduction&lt;/h1&gt;
&lt;p&gt;There are two major components to the HoF:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tiers&lt;/strong&gt; representing major areas of focus, which closely resemble Maslow&#39;s Hierarchy of Needs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Horizons&lt;/strong&gt; which represent the near-term vs far-term nature of each of the areas of the tiers above. The horizons approximately correlate with David Allen&#39;s GTD Horizons.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course underpinning these components are a set of habits and processes which is well informed by GTD itself, so most of this framework is derivative. It is also very experimental and small-batch with a sample size of just me.&lt;/p&gt;
&lt;h2 id=&quot;tiers&quot; tabindex=&quot;-1&quot;&gt;Tiers&lt;/h2&gt;
&lt;p&gt;As of &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023&lt;/a&gt; the tiers are articulated slightly different than Maslow&#39;s Hierarchies but a there are a couple that still map though perhaps not one-to-one:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HoF&lt;/th&gt;
&lt;th&gt;Maslow&#39;s Hierarchy of Needs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.0) Infrastructure of Self&lt;/td&gt;
&lt;td&gt;physiological&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.0) Capabilities of Self&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.0) Resources for Living&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4.0) Meaningful Social Bonds&lt;/td&gt;
&lt;td&gt;belonging and love, esteem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5.0) Experiences of Novelty and Awe&lt;/td&gt;
&lt;td&gt;self-actualization, transcendence&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Being a hierarchy, it is given that in order to support a higher tier in the hierarchy, each of the lower tiers must first be &lt;em&gt;satisfactorily&lt;/em&gt; fulfilled as a prerequisite. For example, you may have heard the adage &lt;em&gt;&amp;quot;You can&#39;t help others if you don&#39;t help yourself.&amp;quot;&lt;/em&gt; It isn&#39;t to say that all &lt;em&gt;Infrastructure of Self&lt;/em&gt; horizons must be completed before working on _ Capabilities of Self_ but rather each completed objective in the lower tier enables the completion of a higher tier goal. This idea can be expressed by an updated model of Maslow&#39;s Hierarchy of Needs where each &#39;tier&#39; actually only needs to be &lt;em&gt;sufficiently&lt;/em&gt; fulfilled before some work on the next tier can be done.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!info] Updated models of Maslow&#39;s Hierarchy of Needs demonstrate the dynamic dependencies between tiers as seen in the following chart:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231001133341.png&quot; alt=&quot;Pasted image 20231001133341.png&quot; /&gt;&lt;br /&gt;
&lt;em&gt;Dynamic hierarchy of needs of Abraham Maslow referring to Krech, D./Crutchfield, R. S./Ballachey, E. L. (1962), Individual in society, Tokyo etc. 1962, S. 77&lt;/em&gt; &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/4.0/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;cc license&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;horizons&quot; tabindex=&quot;-1&quot;&gt;Horizons&lt;/h2&gt;
&lt;p&gt;Additionally, each tier will have at least five targets or goals - at least one for each of GTD&#39;s five horizons. The near-term horizons are not just from the nearest term objectives, but also the daily habits that are intended to be created, practiced, or reinforced. The furthest horizons are aspirations more than achievable goals as you can always approach the horizon, but never get to it. These are journeys more than destinations. Like HoF&#39;s tiers loosely map to Maslow&#39;s Hierarchy of Needs, HoF also loosely maps to David Allen&#39;s GTD 5 Horizons:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HoF&lt;/th&gt;
&lt;th&gt;David Allen&#39;s GTD 5 Horizons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hof Tier (eg: 1.0) Infrastructure of self)&lt;/td&gt;
&lt;td&gt;&amp;quot;Purpose &amp;amp; Principles&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Area of Focus&lt;/td&gt;
&lt;td&gt;&amp;quot;Vision&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Project / Habit&lt;/td&gt;
&lt;td&gt;&amp;quot;Projects &amp;amp; Priorities&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tasks&lt;/td&gt;
&lt;td&gt;&amp;quot;Calendar/Actions&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The concept of &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Shearing_layers&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;shearing layers&lt;/a&gt;&lt;/em&gt; or &lt;em&gt;pace Layering&lt;/em&gt; and its accompanying linkages applies here in that the short-term actions enable long-term results. The velocity of the nearer term tasks and projects enable the achievement of the longer term, slower moving Vision, Purpose, and Principles.&lt;/p&gt;
&lt;h2 id=&quot;tiers-and-horizons-combined&quot; tabindex=&quot;-1&quot;&gt;Tiers and Horizons Combined&lt;/h2&gt;
&lt;p&gt;With both the tiers and horizons combined, I have a sorted list of major areas of life, areas of focus within each, specific projects to support those areas, which is a &amp;quot;map&amp;quot; to achieving everything identified as important. Here is a partial and slightly fabricated example:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020231001135043.png&quot; alt=&quot;Pasted image 20231001135043.png&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;exceptions&quot; tabindex=&quot;-1&quot;&gt;Exceptions&lt;/h2&gt;
&lt;p&gt;It can be quite suffocating to map out everything that I need or want to get done, so each year I&#39;ve been reducing the number of projects to track. This also leaves room for serendipitous opportunities that come up throughout the year. I&#39;ve also learned that it is good to include line items for hobbies, and non-productive activities. I&#39;ve also never had a year where I&#39;ve 100% completed everything - and that is ok. I believe it is more important to set high targets and strive than to actually meet them all.&lt;/p&gt;
&lt;p&gt;In future posts about this topic, I intend to define the tiers and horizons in more detail, share examples of projects in each of the tiers, and supporting reasoning for the particular tiers and horizons that I&#39;ve defined. I&#39;ll also share some of the recurring processes (daily, weekly, monthly, yearly) that support / are supported by this framework. Finally, I&#39;ll share some of the results and supporting software tooling that I  use to manage and tie it all together.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!info] For questions or comments, I&#39;d encourage you to contact me in the Fediverse (eg Mastodon) at &lt;a href=&quot;https://hachyderm.io/@iw&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;@iw@hachyderm.io&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-10-01/" />
        </entry>
        <entry>
            <title>
                2023-09-12 | 📚 5 Highly Recommended Books for All (Young) People
                
            </title>
            <updated>2023-09-12T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-09-12/</id>
            <content type="html">
                &lt;h1 id=&quot;september-12-2023&quot; tabindex=&quot;-1&quot;&gt;September 12, 2023&lt;/h1&gt;
&lt;p&gt;I&#39;m taking a week off from writing about coding, as I&#39;ve had minimal progress this past week, though no lack of insights and learnings.&lt;/p&gt;
&lt;h2 id=&quot;re-recommended-books&quot; tabindex=&quot;-1&quot;&gt;re: Recommended Books&lt;/h2&gt;
&lt;p&gt;On &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023-03-27&lt;/a&gt;, I was asked by the young man performing maintenance at my home if I had any book recommendations. I was caught off guard because I had no idea how to recommend books that would be relevant for someone his age, with his ambitions, with only having just met a couple minutes prior. I told him to text me and I would get back to him after I thought about it.&lt;/p&gt;
&lt;p&gt;Before he left, I gave him my copy of &lt;a href=&quot;https://en.wikipedia.org/wiki/Dale_Carnegie&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Dale Carnegie&lt;/a&gt;&#39;s &lt;a href=&quot;https://www.amazon.com/How-Win-Friends-Influence-People/dp/0671027034&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;How to Win Friends and Influence People&lt;/a&gt;, which I feel is a book I should have read when I was his age, but it hadn&#39;t come to my attention. I read it many years later in &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2017&lt;/a&gt; and I look forward to getting another copy to re-read now that I gave my original away.&lt;/p&gt;
&lt;p&gt;I sent the young man a text message with a hastily prepared list of books that I think are general enough to be applicable to an ambitious person who is willing to learn:&lt;/p&gt;
&lt;div class=&quot;transclusion internal-embed is-loaded&quot;&gt;&lt;a class=&quot;markdown-embed-link&quot; href=&quot;https://www.isaacwyatt.com/lists/recommended-books/&quot; aria-label=&quot;Open link&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;svg-icon lucide-link&quot;&gt;&lt;path d=&quot;M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;div class=&quot;markdown-embed&quot;&gt;
&lt;h1 id=&quot;top-5-reads-for-young-minds&quot; tabindex=&quot;-1&quot;&gt;Top 5 Reads for Young Minds&lt;/h1&gt;
&lt;h3 id=&quot;1-how-to-win-friends-and-influence-people-by-dale-carnegie&quot; tabindex=&quot;-1&quot;&gt;1) How to Win Friends and Influence People by Dale Carnegie&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230327214243.png&quot; alt=&quot;Pasted image 20230327214243.png|200&quot; width=&quot;200px&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;2-the-7-habits-of-highly-effective-people-by-stephen-covey&quot; tabindex=&quot;-1&quot;&gt;2) The 7 Habits of Highly Effective People by Stephen Covey&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230327213858.png&quot; alt=&quot;Pasted image 20230327213858.png|200&quot; width=&quot;200px&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;3-who-moved-my-cheese-by-dr-spenser-johnson&quot; tabindex=&quot;-1&quot;&gt;3) Who moved my Cheese by Dr. Spenser Johnson&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230327213559.png&quot; alt=&quot;Pasted image 20230327213559.png|200&quot; width=&quot;200px&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;4-thinking-in-systems-a-primer-by-donella-meadows&quot; tabindex=&quot;-1&quot;&gt;4) Thinking in Systems: A Primer by Donella Meadows&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230327214034.png&quot; alt=&quot;Pasted image 20230327214034.png|200&quot; width=&quot;200px&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;5-the-48-laws-of-power-by-robert-greene&quot; tabindex=&quot;-1&quot;&gt;5) The 48 Laws of Power by Robert Greene&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230327213811.png&quot; alt=&quot;Pasted image 20230327213811.png|200&quot; width=&quot;200px&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Although those are my top five, I&#39;ve also shared &lt;a href=&quot;https://en.wikipedia.org/wiki/What_Color_Is_Your_Parachute%3F&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;What Color is Your Parachute?&lt;/a&gt; which is a classic for folks early in their career who may need a little guidance in finding their next step.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-09-12/" />
        </entry>
        <entry>
            <title>
                2023-09-05 | 👩‍💻 Lessons from even Limited Progress in Coding
                
            </title>
            <updated>2023-09-05T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-09-05/</id>
            <content type="html">
                &lt;h1 id=&quot;september-05-2023&quot; tabindex=&quot;-1&quot;&gt;September 05, 2023&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Though I only had one solid day of coding this past week, I made significant progress due to an uninterrupted 5 hour block in my calendar. I was able to enter a &lt;a href=&quot;https://en.wikipedia.org/wiki/Flow_(psychology)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;state of flow&lt;/a&gt; and really work through resolving some blocks and refactoring some stupendously absurd code and as a result, not only did things &lt;em&gt;work&lt;/em&gt; - they worked &lt;strong&gt;better&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;I love the quick feedback loop between the machine and I in solving puzzles of code. I love the strategic and tactical process of evaluating a code and data strategy, experimentation, failure (learning), and finally success. It is a very rewarding process.&lt;/p&gt;
&lt;p&gt;That isn&#39;t to say that I&#39;m proud of my code - but I am proud of the progress I&#39;m making. The &lt;a href=&quot;https://www.rust-lang.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust programming language&lt;/a&gt; is not so different from other languages once you get past its novel syntax and requirements for borrowing, mutability, and lifetimes.&lt;/p&gt;
&lt;p&gt;Some observations and reflections about my work include:&lt;br /&gt;
&lt;strong&gt;needing to get out of the meta-programming loop:&lt;/strong&gt;&lt;br /&gt;
I found myself refactoring some things that I thought could be better modeled in structs and vectors, but realized there was minimal gains in efficiency and made the code more obtuse and less readable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;when moving from scripting to writing a program with models:&lt;/strong&gt;&lt;br /&gt;
A big chunk of the upfront work is just building the data models and the functions that I will be using myself in order to actually &lt;em&gt;do&lt;/em&gt; the things I want my program to do. It is laying groundwork for the actual work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reuse, Reuse, Reuse&lt;/strong&gt;&lt;br /&gt;
I found I was able to reuse functions I&#39;d already written for one struct, for another struct - and it was looking me straight in the face the whole time! I saved myself time and made my software better by reusing a function for one entity that I&#39;d already written for another.&lt;/p&gt;
&lt;p&gt;The big challenge I expect to have is knowing when to call the software &#39;done&#39;: I have already completed my &#39;minimum viable&#39; software with the exception of deploying a binary, and I have a self-imposed deadline of 2023 to wrap it up. I dream of many more features to add, but shipping seems more important than shooting for the moon, and the point of the whole exercise is to learn (more) Rust, and create something meaningful to me, and to a close friend of mine.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-09-05/" />
        </entry>
        <entry>
            <title>
                2023-08-29 | 🛠 Logjammed: Getting Unjammed
                
            </title>
            <updated>2023-08-29T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-08-29/</id>
            <content type="html">
                &lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/9499059282_f73b7d6dba_w.jpg&quot; alt=&quot;9499059282_f73b7d6dba_w.jpg&quot; /&gt;&lt;br /&gt;
&lt;em&gt;logjam and Boston creek &lt;a href=&quot;https://www.flickr.com/photos/northcascadesnationalpark/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Park Ranger - North Cascades National Park (Flicker)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&quot;august-28-2023&quot; tabindex=&quot;-1&quot;&gt;August 28, 2023&lt;/h1&gt;
&lt;h2 id=&quot;re-gtd-gtd-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The sentiment this past week has been : logjammed.&lt;/p&gt;
&lt;p&gt;I ran in to many roadblocks in my progress in learning Rust and other personal endeavors. It seemed like nothing was moving. No forward movement, just stagnation. It felt like the harder I tried to push things along, the harder they were to do.&lt;/p&gt;
&lt;p&gt;Finally I gave up. Or rather, disconnected with my desired objectives and path, and just let be what would be. It is all personal projects, not professional work ones, so I gave myself permission to change the scope and requirements of every log in the jam, and to not expect the best of myself, but just the &amp;quot;good-enough&amp;quot;.&lt;/p&gt;
&lt;p&gt;In Rust, I had created a simple text based arena combat &amp;quot;RPG&amp;quot;, and was trying to implement an inventory system from scratch without using any outside insight or models. Every day for most of the week, I tried a different approach, and as I gradually learned, that unlike my experience in C#, Rust does not have objects that inherit data from parent objects. Finally, I suspected that the most over-kill solution that I had been avoiding, json objects and data serialization, was probably the only viable and proper implementation. So I took a peek at &lt;a href=&quot;https://github.com/thebracket&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Herbert Wolverson&lt;/a&gt;&#39;s &lt;em&gt;excellent&lt;/em&gt; &lt;a href=&quot;https://bfnightly.bracketproductions.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Roguelike Tutorial - In Rust&lt;/a&gt; to see if and how the inventory system and data for objects was managed. Sure enough, json data.&lt;/p&gt;
&lt;p&gt;There was equal parts relief that I now had a model for an answer, but disappointment that the last road I chose to travel was the proper (and only?) one. I not only wasted a bunch of time experimenting and failing, but then I didn&#39;t even get to find the proper solution on my own when I very much could have.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But this was only the first log in the jam:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In my personal life, I keep many projects, goals, and objectives going. &lt;strong&gt;Too&lt;/strong&gt; many. I have a whole framework I refer to as my &lt;em&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&lt;/em&gt; in which I &lt;em&gt;approximately&lt;/em&gt; apply &lt;a href=&quot;https://gettingthingsdone.com/2011/01/the-6-horizons-of-focus/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;David Allen&#39;s 5 Horizon&#39;s of GTD&lt;/a&gt; to each tier in &lt;a href=&quot;https://en.wikipedia.org/wiki/Maslow&#39;s_hierarchy_of_needs&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Maslow&#39;s Hierarchy of Needs&lt;/a&gt;. I like to always feel like I&#39;m making progress on something, and when one project slows down below a critical threshold, I tend to start or switch inter-day focus to something else. This often results in having too many open projects, and too much stress.&lt;/p&gt;
&lt;p&gt;So as progress in learning the Rust programming language slowed and halted, I switched to focus on making progress on something else in other areas of my life. I have annual goals I set according to my &lt;em&gt;Hierarchy of Fulfillment&lt;/em&gt; and they were all inhibited by progress for one reason or another.&lt;/p&gt;
&lt;p&gt;Finally they all clustered together in a big cohesive mess that left me unable to figure out what to do. It is terrible to feel confined to accept the mediocrity of idleness. However, idleness is exactly what I needed to reset my own expectations and understand that the actual cost of not meeting these goals was lower than what it was inside my head.&lt;/p&gt;
&lt;p&gt;Of course, there are a number of ways I could handle this better:&lt;/p&gt;
&lt;p&gt;One common way is that I could just not start or switch projects, even if they are planned, and be comfortable with slack or downtime in my schedule. This feels icky to me, as I&#39;ve drilled in to my head that I must also be efficient with my limited time to maximize my realized potential.&lt;/p&gt;
&lt;p&gt;Another idea is to commit to doing less. This would sort of &amp;quot;force&amp;quot; the slack time by not having any (or very few) queued projects. This is also uncomfortable, as every project I put in my queue feels like a must-do, where the cost of not doing it feels nearly existential. Remember: these are personal commitments, not work-related.&lt;/p&gt;
&lt;p&gt;Yet another idea, is to make slack-time itself a project. This, I simply won&#39;t do. It would feel like &amp;quot;mandatory fun&amp;quot;. Sometimes I&#39;m simply not in the mood for fun, and I just want to get &lt;em&gt;something&lt;/em&gt; done. Plus, how fun can something mandatory be?&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;laissez-faire&lt;/em&gt; idea is to just let my natural energy direct me, relying on a strategy of hope that my naturally directed energy and my desired outcomes are aligned (spoiler: they&#39;re not). Hope is not a Strategy.&lt;/p&gt;
&lt;p&gt;As I progress through the back half of the year, I&#39;ll still strive to complete the annual goals I set out for myself, but when planning begins for next year, I think I&#39;ll just take it a quarter at a time. I think this approach will help me better understand both the time constraints but also the cost of not doing something. There will be fewer projects in the queue as well, and as each quarter comes up, I can have slightly better alignment between my energy and what actually needs to get done. In supply chain terms, I will reduce the batch size, and increase the batch frequency which should make for a more adaptable process, smaller and more &lt;em&gt;fixable&lt;/em&gt; log jams. There is probably something analogous to Agile sprint planning in this as well, for whatever Agile is worth.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-08-29/" />
        </entry>
        <entry>
            <title>
                2023-08-21 | 🛫A flight to Friday Harbor (KFHR), and 👩‍💻 Coding Update
                
            </title>
            <updated>2023-08-21T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-08-21/</id>
            <content type="html">
                &lt;h1 id=&quot;august-21-2023&quot; tabindex=&quot;-1&quot;&gt;August 21, 2023&lt;/h1&gt;
&lt;h2 id=&quot;re-aviation-aviation-flight-to-friday-harbor-wa&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/aviation/&quot;&gt;Aviation&lt;/a&gt; - Flight to Friday Harbor, WA&lt;/h2&gt;
&lt;p&gt;A friend, a toddler, and his mom joined me in an adventure to fly to &lt;a href=&quot;https://en.wikipedia.org/wiki/Friday_Harbor,_Washington&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Friday Harbor, WA&lt;/a&gt; (&lt;a href=&quot;https://www.airnav.com/airport/KFHR&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;KFHR&lt;/a&gt;) last week. Friday Harbor is located on the San Juan Islands and just a few miles from the international border with Canada. The airstrip is a wonderful un-towered airport within a short walk to the quaint downtown area and a bakery, coffee shop, and art museum along the way. The Cirrus SR-22T that I flew made the flight very short, though there was a 90 minute wait for a fuel truck at the start of the day.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/IMG_0550.jpg.jpeg&quot; alt=&quot;IMG_0550.jpg.jpeg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was a fantastic day trip and my third to Friday Harbor.&lt;/p&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This past week I did a quick chapter from &lt;a href=&quot;https://doc.rust-lang.org/book/ch05-00-structs.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The Rust Book&lt;/a&gt; on using Structs which was timely, because that seemed like the last component I needed to do a very basic program I hope to share soon. Once I knocked that out, I used the remainder of my coding time this week to build out a boringly simple text-based monster combat game. It used most of what I&#39;ve covered over the last month, and I had the advantage of having written something similar before when I was a teenager in &lt;a href=&quot;https://en.wikipedia.org/wiki/QBasic&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Qbasic&lt;/a&gt; with my best friend.&lt;/p&gt;
&lt;p&gt;Its been the most fun week of coding so far, and am looking forward to digging in more this week and have a project to tinker on when I need to shift the focus of my energy.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-08-21/" />
        </entry>
        <entry>
            <title>
                2023-08-14 | 👩‍💻 Ownership in Rust; Linux is for Puzzle Solvers;
                
            </title>
            <updated>2023-08-14T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-08-14/</id>
            <content type="html">
                &lt;h1 id=&quot;august-14-2023&quot; tabindex=&quot;-1&quot;&gt;August 14, 2023&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;ownership-in-rust-chapter-4-of-the-rust-library-book&quot; tabindex=&quot;-1&quot;&gt;Ownership in Rust - Chapter 4 of the Rust Library Book&lt;/h3&gt;
&lt;p&gt;I&#39;m moved beyond much of the review of the first few chapters, and &lt;a href=&quot;https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Chapter 4 of the Rust Library Book&lt;/a&gt; actually gets in to some of the idiosyncrasies of the language. Particularly with &amp;quot;Ownership&amp;quot; in Rust.&lt;/p&gt;
&lt;p&gt;I found the review of the computer&#39;s memory Stack and Heap helpful, as I hadn&#39;t spent much time on those concepts before.&lt;/p&gt;
&lt;p&gt;The idea of Ownership and memory management seems straightforward, but there are some counter-intuitive &#39;gotchas&#39; that must be considered between references and copies/clones of variables. Also odd is that references can be mutable. Okay, not &lt;em&gt;odd&lt;/em&gt;, but I haven&#39;t run into a situation yet where I needed a mutable reference. I&#39;m sure with more experience, I&#39;ll run in to situations where a mutable reference is necessary or at least preferred.&lt;/p&gt;
&lt;p&gt;This chapter also strangely appended a section on slicers, which while are a neat convenience syntax, seems out of place in this chapter.&lt;/p&gt;
&lt;h2 id=&quot;re-linux-raspberry-pi-jellyfin-tailwind-and-quot-um-and-quot-files-etc&quot; tabindex=&quot;-1&quot;&gt;re: Linux, Raspberry Pi, Jellyfin, Tailwind, &amp;quot;Um&amp;quot; Files, Etc.&lt;/h2&gt;
&lt;p&gt;This week in learning more about Linux on the Raspberry Pi, Jellyfin, etc:&lt;/p&gt;
&lt;h3 id=&quot;re-installing-raspberry-pi-s-os-and-jellyfin&quot; tabindex=&quot;-1&quot;&gt;Re-installing Raspberry Pi&#39;s OS and Jellyfin&lt;/h3&gt;
&lt;p&gt;As I was considering how I would store media (mp3 and flac files mostly) on my Raspberry Pi, I noticed that the micro-sd card had approximately six different partitions and the free disk space was scattered amongst them. I also found out that the lastest version of Raspberry Pi&#39;s official OS was only available if I directly loaded its image on the SD card instead of any software upgrade.&lt;/p&gt;
&lt;p&gt;So I decided to wipe the memory card clean, install the minimal Ubuntu Raspian OS image, and set up my environment again - including &lt;a href=&quot;https://www.nushell.sh/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Nushell&lt;/a&gt;, which fortunately has a binary for the appropriate architecture.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!info] It was a fantastic experience being able to simply plug the micro-sd card back in and start rebuilding &lt;strong&gt;completely headless.&lt;/strong&gt; There is a feeling of neat hacker-esque validation when you don&#39;t need to rely on a graphic user interface (and doing the associated keyboard/mouse/monitor plug-in) to complete these tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After doing all this, mounting the external usb disk drive wasn&#39;t automatic anymore, so I spent a fair amount of time learning how to do that, how to expose it to the local network, and the pains and challenges of permission sets on exfat4 between Windows and Linux systems.&lt;/p&gt;
&lt;p&gt;I didn&#39;t end up fixing the permission system for the external hard drive, so instead I disconnected it, hooked it up to my laptop, and am fixing the meta data on my files more directly instead of over the network.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OR SO I THOUGHT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Because the external drive is a back-up of my Google Drive, it shares the same volume name as the symbolic link when Google Drive is running on my Windows laptop.&lt;/p&gt;
&lt;p&gt;So as I&#39;ve been updating the metadata on my mp3s (using &lt;a href=&quot;https://www.mp3tag.de/en/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;mp3tag&lt;/a&gt;, the updates were taking exceptionally long and I just assumed the external HD was slow. Later, I realized I&#39;d been updating the files directly in Google Drive, meaning that each file had to be downloaded, modified, and uploaded again. What a colossal waste of bandwidth. And my ISP let me know, too! It is barely a week into my billing cycle and I&#39;ve used &amp;gt; 75% of my allotted bandwidth.&lt;/p&gt;
&lt;h3 id=&quot;i-set-up-tailscale-vpn&quot; tabindex=&quot;-1&quot;&gt;I set up Tailscale VPN&lt;/h3&gt;
&lt;p&gt;Because I want to be able to access my music server and ssh into the Raspberry PI while away from home, I had been looking into solutions to expose the Raspberry Pi to the internet securely. A reverse-proxy seemed doable with Nginx or Apache, but it seemed cumbersome and like too much yak-shaving for the time being.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tailscale.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Tailscale&lt;/a&gt; was recommended to me by folks on &lt;a href=&quot;https://en.wikipedia.org/wiki/Mastodon_(social_network)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mastodon&lt;/a&gt; for secure VPN which took less than 5 minutes to sign up, install on two devices, and verify successful access from off-network.&lt;/p&gt;
&lt;p&gt;This seems like a viable solution for the time being and covers 95% of my current use cases.&lt;/p&gt;
&lt;p&gt;Someone mentioned &lt;a href=&quot;https://yunohost.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Yunohost&lt;/a&gt; as well, which seems turn-key self-hosting solution, but that is an experiment I&#39;ll have to run another day. I also should get another Raspberry Pi to run these experiments on.&lt;/p&gt;
&lt;h3 id=&quot;and-quot-um-and-quot-or-and-quot-cheat-and-quot-files&quot; tabindex=&quot;-1&quot;&gt;&amp;quot;Um&amp;quot; or &amp;quot;Cheat&amp;quot; Files&lt;/h3&gt;
&lt;p&gt;Throughout all this, I ended up looking into a lot of different Linux CLI utilities to solve various problems and found myself having to re-look-up commands periodically and got tired of switching contexts. So I made a &lt;code&gt;/notes/&lt;/code&gt; folder in my $HOME directory with a couple markdown files for CLI commands, CLI tools I use, and system info I need to periodically look up. Then it was easy to simply &lt;code&gt;cat cli.md&lt;/code&gt; to get a refresher on what  needed. Later, I came across Glow which does discovery of your notes and formats it nicely in the CLI which is nice.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230812133943.png&quot; alt=&quot;Pasted image 20230812133943.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, I also added &lt;a href=&quot;https://rclone.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;rClone&lt;/a&gt; and &lt;a href=&quot;https://www.samba.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Samba&lt;/a&gt; to my system for Google Drive syncing and network sharing, respectively.&lt;/p&gt;
&lt;h3 id=&quot;i-added-the-micro-text-editor-to-the-linux-cli&quot; tabindex=&quot;-1&quot;&gt;I added the Micro text editor to the Linux CLI&lt;/h3&gt;
&lt;p&gt;I added the &lt;a href=&quot;https://micro-editor.github.io/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Micro&lt;/a&gt; text editor for the CLI because Nano is just... 🤮.&lt;/p&gt;
&lt;p&gt;I wanted to add the &lt;a href=&quot;https://helix-editor.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Helix text editor&lt;/a&gt; not just because the features, functionality, and aesthetics seem great, but I wanted to support a &lt;a href=&quot;https://www.rust-lang.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust&lt;/a&gt;-based project. Unfortunately, there isn&#39;t a package for my Linux distro and I was unable to successfully cross-compile the source code. The compiler error failed at the &lt;a href=&quot;https://github.com/helix-editor/helix/issues/2398&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;tree-sitter grammar&lt;/a&gt;. I found some guides (like &lt;a href=&quot;https://medium.com/hackernoon/compiling-rust-for-the-raspberry-pi-49fdcd7df658&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;this one&lt;/a&gt; and &lt;a href=&quot;https://stackoverflow.com/questions/39705213/cross-compiling-rust-from-windows-to-arm-linux&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;this stackoverflow answer&lt;/a&gt;.) that offer some clues about what I need to do, but those will have to wait for another time.&lt;/p&gt;
&lt;p&gt;I don&#39;t think I&#39;ll be held back by using Micro, but it would have been nice to use tools built on Rust. Micro also gave me a few problems so solve. Namely, that it didn&#39;t show up in the &lt;code&gt;select-editor&lt;/code&gt; list, so had to do a &lt;a href=&quot;https://askubuntu.com/a/1475325&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;work-around&lt;/a&gt; after changing the symbolic link to the executable.&lt;/p&gt;
&lt;h3 id=&quot;linux-for-puzzle-solvers&quot; tabindex=&quot;-1&quot;&gt;Linux for Puzzle Solvers&lt;/h3&gt;
&lt;p&gt;There is a significant satisfaction with solving for myself the myriad of problems faced with working toward a goal where the interfaces the resources I need are all in the same room and not particularly dependent on considerations of the perceptions and personalities of other people - the part of real life jobs that sap energy and will from most people. With this project - its just me and the terminal most of the time.&lt;/p&gt;
&lt;p&gt;It also gets a little addicting: although the yak-shaving in Linux gets monotonous at times (after all, a lot of these problems aren&#39;t problems at all on Windows or Mac operating systems), the little hits of dopamine you get from solving a puzzle keeps me thinking about the next layer of yak-hair I get to shave.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-08-14/" />
        </entry>
        <entry>
            <title>
                2023-08-08 | 👩‍💻 Write An App: Rust; Jellyfin, NuShell, Rasperry Pi
                
            </title>
            <updated>2023-08-08T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-08-08/</id>
            <content type="html">
                &lt;h1 id=&quot;august-08-2023&quot; tabindex=&quot;-1&quot;&gt;August 08, 2023&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;ve completed Chapter 3 of &lt;a href=&quot;https://doc.rust-lang.org/book/ch03-00-common-programming-concepts.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The Rust Programming Language book&lt;/a&gt;, and found many other great resources to continue to work on the language. Chapter 3 was about control flow - if/then, loops, while, etc.  While the concepts are nothing but review for me, the syntax is what I really need to spend time getting familiar with. It makes me wonder if just jumping in to a project is a better way to get where I want to go.&lt;/p&gt;
&lt;h2 id=&quot;raspberry-pi-jellyfin-ssh-nushell-etc&quot; tabindex=&quot;-1&quot;&gt;Raspberry Pi, Jellyfin, SSH, Nushell, Etc.&lt;/h2&gt;
&lt;p&gt;I&#39;ve been enjoying learning the Linux command line while working through my the Rust exercises and wanted to be able to spend some more hands-on time learning the various commands and workflows in a Linux environment. So in addition to Windows WSL Ubuntu-flavor of Linux, I decided to get my &lt;a href=&quot;https://www.raspberrypi.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Raspberry Pi 2&lt;/a&gt; out and see about turning it into a &lt;a href=&quot;https://jellyfin.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Jellyfin&lt;/a&gt; media server for streaming my mp3 collection music while motorcycling, or out running.&lt;/p&gt;
&lt;p&gt;Jellyfin was exceptionally easy to get up and running via the command line in an ssh session on the raspberry pi (&amp;quot;rpi&amp;quot;), but I realized that the storage available for my rpi was woefully inadequate, and in looking to update various packages and add Nushell to the rpi, I saw that I&#39;d have to reimage the micro-sd card to get the latest OS updates, so I&#39;m back to square one, but I did get Nushell running on the rpi.&lt;/p&gt;
&lt;p&gt;Also, although Jellyfin made it easy to expose its service outside of my local area network (and I tested access via my dynamic external ip address), I turned external access off until I can figure out a way to add some measures of security. I&#39;m looking in to a reverse-proxy and VPN, but the setup seems irritatingly complicated. On the upside, its giving me plenty of opportunity to spend time on the command line and try various solutions via the OS.&lt;/p&gt;
&lt;p&gt;As a tangent, I think it would be helpful for decentralizing the internet (and prevent further &lt;a href=&quot;https://knowyourmeme.com/memes/enshittification&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;enshittification&lt;/a&gt;), if it were easier for people to &lt;strong&gt;securely&lt;/strong&gt; host their own web presence on their own devices. I can&#39;t help but believe there are millions of perfectly operable but unused devices like old phones, desktops, laptops, arduinos, and raspberry pis out there that would make perfectly viable web servers for individuals or small families to host their own non-critical services like &lt;a href=&quot;https://en.wikipedia.org/wiki/ActivityPub&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;decentralized social media presence&lt;/a&gt;, &amp;quot;cloud&amp;quot; storage, email server, etc. There are some good arguments to be made about whether people would &lt;em&gt;want&lt;/em&gt; to become server admins and manage security, etc. and I think the answer is obviously &#39;no&#39;. I don&#39;t want to do it either. How do we make that part of it easy and/or un-necessary?&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-08-08/" />
        </entry>
        <entry>
            <title>
                2023-08-01 | 👩‍💻 &#39;Blaugust&#39; &amp; Yak Shaving in Rust
                
            </title>
            <updated>2023-08-01T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-08-01/</id>
            <content type="html">
                &lt;h1 id=&quot;august-01-2023-blaugust-and-amp-yak-shaving-in-rust&quot; tabindex=&quot;-1&quot;&gt;August 01, 2023 | 👩‍💻 &#39;Blaugust&#39; &amp;amp; Yak Shaving in Rust&lt;/h1&gt;
&lt;h2 id=&quot;re-and-quot-blaugust-and-quot&quot; tabindex=&quot;-1&quot;&gt;re: &amp;quot;Blaugust&amp;quot;&lt;/h2&gt;
&lt;p&gt;For the month of August, I&#39;m &amp;quot;participating&amp;quot; in a month of &amp;quot;blogging&amp;quot; per  &lt;a href=&quot;https://aggronaut.com/2023/07/12/blaugust-2023-is-coming/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Belghast blogging on aggronaut.com&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Blaugust is a month-long event that takes place in August each year that focused on blogging and other serialized content. The goal is to stoke the fires of creativity and allow bloggers and other content creators to mingle in a shared community while pushing each other to post more regularly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;See other participants &lt;a href=&quot;https://aggronaut.com/2023/08/01/blaugust-is-thriving/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Working through &lt;a href=&quot;https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;&amp;quot;Chapter 2&amp;quot; of the Rust Programming Language tutorial book&lt;/a&gt; today. Its all about building a number guessing game, introducing dependencies in the .TOML file, as well as mutable variables and user input.&lt;/p&gt;
&lt;h3 id=&quot;head-fake-with-rand-dependency&quot; tabindex=&quot;-1&quot;&gt;Head Fake with rand dependency&lt;/h3&gt;
&lt;p&gt;The tutorial implies that one should update the TOML file to use &lt;code&gt;rand = &amp;quot;0.9.0&amp;quot;&lt;/code&gt; but that library isn&#39;t actually available, which caused me to go bug hunting until I saw a stackoverflow response indicating that I performed the same mistaken assumptions as another person using the same tutorial.&lt;/p&gt;
&lt;h3 id=&quot;yak-shaving-rodeo-with-cargo-docs-open-on-windows-wsl&quot; tabindex=&quot;-1&quot;&gt;Yak Shaving Rodeo with cargo docs --open on Windows WSL&lt;/h3&gt;
&lt;p&gt;Along the way, I learned about &lt;code&gt;cargo docs --open&lt;/code&gt; which seems like a super useful way to browse the libraries in a project, but unfortunately under Windows WSL Ubuntu Linux, the command failed ungracefully. A search showed this &lt;a href=&quot;https://github.com/rust-lang/cargo/issues/7557&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Github issue&lt;/a&gt; from 2019. It appears that the intended resolution is to install &lt;a href=&quot;https://github.com/wslutilities/wslu&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;wslu&lt;/a&gt; helper commands in my Linux Ubuntu instance. I also wanted to check my Debian version, and learned about the &lt;code&gt;cat /etc/debian_version&lt;/code&gt; to check the version of Debian that my Ubuntu install was based on.  I was also curious about the Linux &lt;code&gt;tee&lt;/code&gt; command that was used in the installation instructions for wslu. Have we finished shaving the Yak yet?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230801145025.png&quot; alt=&quot;Pasted image 20230801145025.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Apparently not as I still received an error message when attempting to open the documentation with &lt;code&gt;cargo docs --open&lt;/code&gt;. I had noticed however that there were 34 upgradable packages in the warning text output of the wslu installation instructions. So following that hint, I decided to research upgrading those. The command I used was &lt;code&gt;apt upgrade&lt;/code&gt; and it appeared to update all the packages, but I still received the above error.&lt;/p&gt;
&lt;p&gt;I think I&#39;ll have to add a bash script to modify how WSL Ubuntu Linux attempts to open the cargo path to the documentation, but that&#39;s more than I want to do today, and a task for another time.&lt;/p&gt;
&lt;p&gt;For now, I can find the documentation files in the appropriate subdirectory, open the file in explorer, and then double click to open in my default browser (Brave).&lt;/p&gt;
&lt;p&gt;Its a kludgy work-around, but I figure it is the price I pay for trying to do this tutorial in Windows WSL instead of a legit Linux distro install.&lt;/p&gt;
&lt;p&gt;For now, this issue moving to my backlog.&lt;/p&gt;
&lt;h2 id=&quot;match-compare-overkill&quot; tabindex=&quot;-1&quot;&gt;Match. Compare. Overkill. (?)&lt;/h2&gt;
&lt;p&gt;For &lt;a href=&quot;https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html#comparing-the-guess-to-the-secret-number&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;this part of the exercise&lt;/a&gt;, it appears that I should use a library &lt;code&gt;use std::cmp::Ordering;&lt;/code&gt; for comparing numbers, which seems a bit cumbersome at this point. Why wouldn&#39;t I use inline  &amp;gt; and &amp;lt; and = for comparison?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-Rust&quot;&gt;    match guess.cmp(&amp;amp;secret_number) {
        Ordering::Less =&amp;gt; println!(&amp;quot;Too small!&amp;quot;),
        Ordering::Greater =&amp;gt; println!(&amp;quot;Too big!&amp;quot;),
        Ordering::Equal =&amp;gt; println!(&amp;quot;You win!&amp;quot;),
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think the answer for that will have to wait. I finished up the rest of the exercises as they were pretty straight forward, and &lt;a href=&quot;https://github.com/iwyatt/guessing_game&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;published my repo to github&lt;/a&gt;. Its not really worth looking at, but it is proof I did the work. :)&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-08-01/" />
        </entry>
        <entry>
            <title>
                2023-07-31 | 👩‍💻 Learning to Code in Rust: &#39;hello world&#39;
                
            </title>
            <updated>2023-07-31T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-31/</id>
            <content type="html">
                &lt;h1 id=&quot;july-31-2023-learning-to-code-in-rust-hello-world&quot; tabindex=&quot;-1&quot;&gt;July 31, 2023 | 👩‍💻 Learning to Code in Rust: &#39;hello world&#39;&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Today I worked through the first set of exercises in &lt;a href=&quot;https://doc.rust-lang.org/stable/book/title-page.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The Rust Programming Language&lt;/a&gt; &amp;quot;tutorial&amp;quot; book for Rust. This exercise book was recommended to me by a friend who was curious about Rust.  There are a total of 20 &amp;quot;chapters&amp;quot; in the book, and I intend to get through them in August.&lt;/p&gt;
&lt;p&gt;Today I just went through the first &amp;quot;chapter&amp;quot; which covers installation of Rust and Cargo (which I had already completed), a &amp;quot;hello world&amp;quot; program (which I recently completed), and using &amp;quot;Cargo&amp;quot; to compile code. It included a very brief exposure to .TOML files.&lt;/p&gt;
&lt;p&gt;I&#39;m looking forward to the next set of exercises, which should include some actual program control flow and variable manipulation.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-31/" />
        </entry>
        <entry>
            <title>
                2023-07-28 | 👩‍💻 Write An App: Git First Things First
                
            </title>
            <updated>2023-07-28T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-28/</id>
            <content type="html">
                &lt;h1 id=&quot;july-28-2023-write-an-app-git-first-things-first&quot; tabindex=&quot;-1&quot;&gt;July 28, 2023 | 👩‍💻 Write An App: Git First Things First&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Today I had just a little time to check off a small task to set up version control.&lt;/p&gt;
&lt;p&gt;I started by checking if I had git already installed. I used &lt;code&gt;git --version&lt;/code&gt; to see that I&#39;m on v 2.34.1 but according to the &lt;a href=&quot;https://git-scm.com/download/linux&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;git website&lt;/a&gt;, 2.41 is available. I&#39;m unsure what the following upgrade syntax means with regard to PPA, so I&#39;m going to skip doing it as I suspect there is risk in doing this without understanding whata happening: &lt;code&gt;For Ubuntu, this PPA provides the latest stable upstream Git version&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;# add-apt-repository ppa:git-core/ppa&lt;/code&gt; &lt;code&gt;# apt update; apt install git&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So I just skipped ahead to &lt;a href=&quot;https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;inputting my credentials&lt;/a&gt;.After that for the sake of time, I just &amp;quot;cheated&amp;quot; on the initial commit to the Github repo by using the git workflows I had already set up in VSCode on the Windows side rather than in WSL Ubuntu.&lt;/p&gt;
&lt;p&gt;Ideally I would have learned to set up a fresh git workflow in WSL Ubuntu. I may come back to that in the future. For now, at least I have version control set up for my Rust exercises.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-28/" />
        </entry>
        <entry>
            <title>
                2023-07-27 | 👩‍💻 WSL &amp; VSCode Setup, 🐐 Bouldering with Goats
                
            </title>
            <updated>2023-07-27T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-27/</id>
            <content type="html">
                &lt;h1 id=&quot;july-27-2023-wsl-and-amp-vs-code-setup-bouldering-with-goats&quot; tabindex=&quot;-1&quot;&gt;July 27, 2023 | 👩‍💻 WSL &amp;amp; VSCode Setup, 🐐 Bouldering with Goats&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Late last night I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installed the WSL extension and Remote Development extension for VScode
&lt;ul&gt;
&lt;li&gt;via &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set up a project directory in my Ubuntu WSL environment&lt;/li&gt;
&lt;li&gt;Tested running Nushell in VSCode&#39;s terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Today I:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tried fixing VSCode&#39;s Rust Analyzer extension (so I can debug code in VSCode running on Windows but connecting to WSL) using work-around shown &lt;a href=&quot;https://github.com/rust-lang/rust-analyzer/issues/2859&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;here&lt;/a&gt;. But what ended up working is (per &lt;a href=&quot;https://stackoverflow.com/questions/72062935/rust-analyzer-failed-to-discover-workspace-in-vscode&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;this stack overflow answer&lt;/a&gt;) setting up a Rust project (thus creating a Carmo.toml file) and installing CodeLLM debugger (?!). I cant explain why the latter was needed as well, but at least the debugger works now.&lt;/li&gt;
&lt;li&gt;Auto generated a launc.json configuration file as required for running without debugging. (?)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I feel like I &lt;em&gt;should&lt;/em&gt; figure out why those things I did ended up fixing the issue, but the debugger runs now, and I&#39;ve run out of time to work on the issue.&lt;/p&gt;
&lt;h3 id=&quot;next-steps&quot; tabindex=&quot;-1&quot;&gt;Next Steps&lt;/h3&gt;
&lt;p&gt;Because of my limited time today for this project, I think I&#39;ll save creating and committing to a GitHub repo for tomorrow. I&#39;ve already done these steps before for other projects, so don&#39;t anticipate it taking too much time or being too much trouble. 🤞&lt;/p&gt;
&lt;h2 id=&quot;re-hiking-bouldering-mountaineering-mountaineering&quot; tabindex=&quot;-1&quot;&gt;re: Hiking / Bouldering / &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/mountaineering/&quot;&gt;Mountaineering&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Today I summited Mount Si in North Bend, Washington via the &amp;quot;new&amp;quot; &lt;a href=&quot;https://www.alltrails.com/trail/us/washington/mount-si-trail&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Mount Si Trail&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7.9 miles&lt;/li&gt;
&lt;li&gt;3,395 feet elevation gain / 4,300 feet MSL&lt;/li&gt;
&lt;li&gt;Approximately 2500 calories burned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is a nice bouldering rock-scramble to get up to the peak via what&#39;s referred to as &amp;quot;The Haystack&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230727193331.webp&quot; alt=&quot;Pasted image 20230727193331.webp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the way up my first pitch, a Mountain Goat looked down at me somewhat defiantly, so I waited for him to decide what he wanted to do. I don&#39;t know if Mountain Goats are known to be aggressive or not, but given my precarious ledge, I thought it best to give him right-of-way.&lt;/p&gt;
&lt;p&gt;Summiting a peak &amp;gt; 3500 feet was on my list of goals for the year (&amp;quot;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&amp;quot;), so its nice to have made progress on one (Coding), and knocked another one off.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-27/" />
        </entry>
        <entry>
            <title>
                2023-07-26 | 👩‍💻 Write An App: From &#39;Coder&#39; to &#39;Programmer&#39;
                
            </title>
            <updated>2023-07-26T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-26/</id>
            <content type="html">
                &lt;h1 id=&quot;july-26-2023-write-an-app-from-coder-to-programmer&quot; tabindex=&quot;-1&quot;&gt;July 26, 2023 | 👩‍💻 Write An App: From &#39;Coder&#39; to &#39;Programmer&#39;&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;This Post is part of the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt; Blog-Chain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;ve begun a journey:&lt;/p&gt;
&lt;p&gt;For a long time, I&#39;ve been a coder, but not a programmer (see: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;). One of my goals for this year is to build an app. Nothing useful, fancy, or impressive. Just to get from zero to one using modern tools. I wrote a handful of Windows apps in C# in the mid-aughts circa 2008, and a variety of data analysis in R, Python, SQL, since then, but no one has ever &lt;em&gt;paid&lt;/em&gt; me to write code.&lt;/p&gt;
&lt;p&gt;I want to at least have the capability to earn an income by developing software, even if I never do. Deploying an app to showcase what I&#39;ve learned is just a small step toward doing that.&lt;/p&gt;
&lt;p&gt;I&#39;ve done some work on getting familiar with version control on Github. Have also read up on modern programming languages, and have chosen to learn Rust. And as someone whose spent about 50% of their life on Mac and 50% on Windows, I&#39;d finally like to commit to getting comfortable with Linux, where I&#39;ll be starting with the Ubuntu distro on Windows WSL.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 More of my tools, services, and media preferences can be found on &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/uses/&quot;&gt;Uses&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yesterday, &lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2023-07-25&lt;/a&gt;, I installed Ubuntu 22 w/ Linux 5.15.90 under Windows WSL. Today I installed Rust, &lt;a href=&quot;https://en.wikipedia.org/wiki/GNU_Compiler_Collection&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;GCC&lt;/a&gt;, and &lt;a href=&quot;https://www.nushell.sh/book/installation.html#dependencies&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Nushell&lt;/a&gt; (in that order).&lt;/p&gt;
&lt;p&gt;Since I&#39;m being transparent about my learning journey, I should also share when I have a question that some might consider &amp;quot;dumb&amp;quot;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;❓ Why do I need GCC if Rust has its own compiler? I had to install this in order to get Rust to compile Nushell.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&#39;m guessing based off from one single search query: these are Linux-specific libraries that Rust depends on that are already contained within GCC.&lt;/p&gt;
&lt;p&gt;Also:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;❓ Why did I need to install the &amp;quot;pkg-config&amp;quot; and &amp;quot;libssl-dev&amp;quot; packages for Nushell? What are they? What are they for?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apparently pkg-config returns information about installed packages, and libssl-dev implements OpenSSL for Debian bases systems (eg Ubuntu). I&#39;m not comfortable that I know the whole story there, but that is probably sufficient for what I need to know right now.&lt;/p&gt;
&lt;p&gt;I am already familiar with, and have set up VSCode on the Windows 10-side of my OS (outside of the virtual machine of WSL), and intend to connect it to the Rust runtime via the VSCode plugin, which should allow me to develop and target builds in VSCode as if I were within the Ubuntu-Linux container.&lt;/p&gt;
&lt;p&gt;Often, guides in developing software, deploying software infrastructure, etc. assume you are running a Linux based OS, and suggest shell commands that obviously don&#39;t work while on Windows. So, having the Ubuntu-Linux WSL set up should allow me to not only toe-dip in learning a Linux-based OS, but also streamline learning Rust from tutorials that assume one is on a Linux distro anyway.&lt;/p&gt;
&lt;p&gt;My next step (tomorrow?) will be to set up VSCode to connect to the WSL Ubuntu-Linux virtual machine via the plugin, test the terminal from there... (does Nushell load in the VSCode terminal? Does that question even make any sense? see: &amp;quot;dumb questions&amp;quot; above)... and hopefully compile my very own first &lt;code&gt;helloworld&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;While I&#39;m at it, I might as well make this a &amp;quot;Blog-Chain&amp;quot;. You can see all the posts for my journey to write an app in &amp;quot;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/bc-write-an-app-2023/&quot;&gt;Blog Chain: Write An App (2023)&lt;/a&gt;&amp;quot;.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-26/" />
        </entry>
        <entry>
            <title>
                2023-07-12 | 🎂 A Birthday Cake from The 7th Guest
                
            </title>
            <updated>2023-07-12T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-12/</id>
            <content type="html">
                &lt;h1 id=&quot;july-12-2023-a-birthday-cake-from-the-7th-guest&quot; tabindex=&quot;-1&quot;&gt;July 12, 2023 | 🎂 A Birthday Cake from The 7th Guest&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!example] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/video-games/&quot;&gt;Video Games&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Recently I ordered a cake for my best friend. I&#39;d never ordered a cake before. I was inspired to order him a cake that is a based on a cake from a video game he and I played in our youth: &lt;a href=&quot;https://en.wikipedia.org/wiki/The_7th_Guest&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The 7th Guest&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The 7th Guest could be described as a &amp;quot;spooky&amp;quot; themed &lt;a href=&quot;https://en.wikipedia.org/wiki/Myst&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Myst&lt;/a&gt;. The player navigates through a haunted mansion solving puzzles to progress the story. In doing so, the player uncovers the plot of the Mansion&#39;s owner and his victims.&lt;/p&gt;
&lt;p&gt;One of the puzzles the player must solve involves going in to the dining room of the mansion, and removing pieces of a cake:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The cake&#39;s pieces must be removed in groups of five and&lt;/li&gt;
&lt;li&gt;the five pieces must be composed of two skull pieces, two tombstone pieces, and one piece of just icing,&lt;/li&gt;
&lt;li&gt;and each of the five must be adjacent to at least one of the other four.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the cake in the game:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230712090543.png&quot; alt=&quot;Pasted image 20230712090543.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here is the cake that &amp;quot;&lt;a href=&quot;https://cakes-a-bloomin.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Cakes-A-Bloomin&lt;/a&gt;&amp;quot; made for me:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230712090622.png&quot; alt=&quot;Pasted image 20230712090622.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My friend said its &amp;quot;&lt;em&gt;the most epic birthday cake I&#39;ve received as an adult, and maybe ever&lt;/em&gt;&amp;quot;. He then sent me a marked up photo of the solution to the puzzle that outlines the groups of five pieces to be removed:&lt;/p&gt;
&lt;details&gt;
  &lt;summary&gt;Show Solution&lt;/summary&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230712095101.png&quot; alt=&quot;Pasted image 20230712095101.png&quot; /&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;hr /&gt;
&lt;p&gt;View &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/posts/&quot;&gt;Previous Posts&lt;/a&gt; and get new posts by subscribing to the &lt;a href=&quot;https://www.isaacwyatt.com/feed.xml&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;RSS/ATOM Feed&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-12/" />
        </entry>
        <entry>
            <title>
                2023-07-11 | 🎮 Pillars of Eternity Complete, Valheim Next
                
            </title>
            <updated>2023-07-11T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-11/</id>
            <content type="html">
                &lt;h1 id=&quot;july-11-2023-pillars-of-eternity-complete-valheim-next&quot; tabindex=&quot;-1&quot;&gt;July 11, 2023 | 🎮 Pillars of Eternity Complete, Valheim Next&lt;/h1&gt;
&lt;p&gt;Last night I finished &lt;a href=&quot;https://en.wikipedia.org/wiki/Pillars_of_Eternity&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pillars of Eternity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The game has a great story, main plot, and sub plots. Admittedly I was confused about the main arc until the end, but I enjoyed all the milestones in it. The conclusion to the game makes me motivated to play the second game, &lt;a href=&quot;https://en.wikipedia.org/wiki/Pillars_of_Eternity_II:_Deadfire&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pillars of Eternity II: Deadfire&lt;/a&gt;, and maybe replay the first one so I can do other quests and make different choices.&lt;/p&gt;
&lt;p&gt;The least enjoyable part of the experience is that the combat got repetitive and became quite the slog. Apparently this was acknowledged as &amp;quot;filler-combat&amp;quot; by the game&#39;s Design Director, Josh Sawyer&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://www.isaacwyatt.com/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Apparently Pillars of Eternity II: Deadfire does a better job balancing this. This excessive combat was so egregious to me that I enabled the &amp;quot;Story Mode&amp;quot; difficulty so I could zip through combat and focus on the story.&lt;/p&gt;
&lt;p&gt;The voice acting, music, and graphics are all good - especially for the time the game was originally released (2015). I really enjoyed the characters and variety and depth of the various party members.&lt;/p&gt;
&lt;p&gt;I forget the date I started this game, but Steam says I logged ~145 hours on my playthrough, and my save file says 117 hours. This is probably 20-30 hours more than actual, since I accidentally didn&#39;t quit out fully and left the game running over night a few times.&lt;/p&gt;
&lt;p&gt;My overall rating for this game is approximately 6.9/10&lt;/p&gt;
&lt;p&gt;I&#39;ll buy and play Pillars of Eternity II: Deadfire, but not until at least next year, as I already own some titles in my &lt;a href=&quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vQf2kX-5PexnFUu_frZ1GoBe2C3A7X7NvJlJa5aXXxt0CjyRN-BO5k-YuBoq7Y2wUnkzvxwdu1n_DkI/pubhtml?gid=1161430020&amp;amp;single=true&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;game queue/backlog&lt;/a&gt; I&#39;d like to work on.&lt;/p&gt;
&lt;p&gt;Also today, I finished &lt;a href=&quot;https://en.wikipedia.org/wiki/Baldur%27s_Gate_II:_Throne_of_Bhaal&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Baldur&#39;s Gate II: Throne of Bhaal&lt;/a&gt; which I&#39;ve played a lot of but had shelved when Elden Ring came out. I only had a few hours left and I used the same &amp;quot;Story Mode&amp;quot; difficulty option to move through the remainder of the game efficiently. The narrative in BG2 was also good, but the graphics did not age well, even for the &amp;quot;enhanced edition&amp;quot;.&lt;/p&gt;
&lt;p&gt;Next up, is &lt;a href=&quot;https://en.wikipedia.org/wiki/Valheim&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Valheim&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;View &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/posts/posts/&quot;&gt;Previous Posts&lt;/a&gt; and get new posts by subscribing to the &lt;a href=&quot;https://www.isaacwyatt.com/feed.xml&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;RSS/ATOM Feed&lt;/a&gt;&lt;/p&gt;
&lt;hr class=&quot;footnotes-sep&quot; /&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;Chalk, Andy (January 26, 2017). &amp;quot;Obsidian announces Pillars of Eternity 2: Deadfire&amp;quot;. PC Gamer. &lt;a href=&quot;https://www.isaacwyatt.com/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-11/" />
        </entry>
        <entry>
            <title>
                2023-07-09 | ⛺ Camping at Dashpoint State Park
                
            </title>
            <updated>2023-07-09T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-07-09/</id>
            <content type="html">
                &lt;h1 id=&quot;july-09-2023-camping-at-dashpoint-state-park&quot; tabindex=&quot;-1&quot;&gt;July 09, 2023 | ⛺ Camping at Dashpoint State Park&lt;/h1&gt;
&lt;p&gt;Camping at Dashpoint State Park in Federal Way, Washington.&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/PXL_20230710_051505081.jpg&quot; alt=&quot;PXL_20230710_051505081.jpg&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h1 id=&quot;2025-08-26-2025-08-26-update&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;2025-08-26&lt;/a&gt; Update&lt;/h1&gt;
&lt;p&gt;When updating the meta data tags on this post, I thought it would be worth pointing out that at the time I wrote this post it was mostly a test of writing and publishing to my blog from my phone. I also had an unspoken goal of posting once every week or so, and wanted to get something out. There is more that can and should be written about this camping experience, and maybe I will in the future.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-07-09/" />
        </entry>
        <entry>
            <title>
                2023-06-20 | 🏆 3D Printing a Bluey Trophy
                
            </title>
            <updated>2023-06-20T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-06-20/</id>
            <content type="html">
                &lt;h1 id=&quot;june-20-2023-3-d-printing-a-bluey-trophy&quot; tabindex=&quot;-1&quot;&gt;June 20, 2023 | 🏆 3D Printing a Bluey Trophy&lt;/h1&gt;
&lt;p&gt;I used a local library&#39;s maker space to make a custom trophy for my friend. This is the first time I had anything 3d printed and was pleased with how easy it was to find 3d models, get help from a local library&#39;s maker space to get them 3d printed, and the quality of the finished result.&lt;/p&gt;
&lt;p&gt;A close friend of mine had his first child about 20 months ago. He told me his &amp;quot;Dad Goal&amp;quot; was to be like &lt;a href=&quot;https://en.wikipedia.org/wiki/Bluey_(2018_TV_series)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Bluey&lt;/a&gt;&#39;s Dad (Bandit).&lt;/p&gt;
&lt;p&gt;So I decided to find a &lt;a href=&quot;https://sketchfab.com/3d-models/bluey-dad-bandit-117244d28fd5469395f811e6f52d1149&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;3D model of Bandit&lt;/a&gt; and a &lt;a href=&quot;https://www.stlfinder.com/model/trophy-base-nHRasmCo/1657303/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;trophy pedestal&lt;/a&gt;, and get them printed at a local library&#39;s maker space. I then sanded and glued them together and printed a banner to go around the base. Finally, I shipped it to arrive just in time for Father&#39;s day.&lt;/p&gt;
&lt;p&gt;My friend really is the most like Bandit of anyone I know so he totally deserves this award.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230620150615.png&quot; alt=&quot;Pasted image 20230620150615.png&quot; /&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-06-20/" />
        </entry>
        <entry>
            <title>
                2023-06-13 | 🧠 Nature abhors a Hypecycle Vacuum
                
            </title>
            <updated>2023-06-13T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-06-13/</id>
            <content type="html">
                &lt;h1 id=&quot;june-13-2023-nature-abhors-a-hypecycle-vacuum&quot; tabindex=&quot;-1&quot;&gt;June 13, 2023 | 🧠 Nature abhors a Hypecycle Vacuum&lt;/h1&gt;
&lt;p&gt;Here we are on the backside of the hype cycle for crypto, blockchain, social media, sharing-economy, &lt;a href=&quot;https://www.washingtonpost.com/technology/2023/06/13/5g-didnt-matter/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;5G&lt;/a&gt;, and half a dozen other internet-enabled &amp;quot;disruptive&amp;quot; technologies.&lt;/p&gt;
&lt;p&gt;But nature abhors a vacuum. Power Vacuums, literal vacuums, apparently functional ones in my closet that don&#39;t get used often enough, and hype cycle vacuums.&lt;/p&gt;
&lt;p&gt;People apparently &lt;em&gt;need&lt;/em&gt; the distraction of something-&lt;em&gt;anything&lt;/em&gt; to pay attention to besides their immediate locus of influence.&lt;/p&gt;
&lt;p&gt;So now we have billions of dollars being thrown around by investors into companies and solo projects under the umbrella of &amp;quot;AI&amp;quot; which is powered by a foundation of statistics and layers of increasing-sophistication of code. The result is something that is something that produces bullshit - but convincing bullshit. Much like how a &lt;a href=&quot;https://en.wikipedia.org/wiki/Rube_Goldberg&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rube Goldberg&lt;/a&gt; machine does &amp;quot;work&amp;quot;.&lt;/p&gt;
&lt;p&gt;What do we call this new spectacle?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;&lt;a href=&quot;https://thecleverest.com/gpt3-is-just-spicy-autocomplete/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Spicy Autocomplete&lt;/a&gt;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Stochastic_parrot&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Stochastic Parrot&lt;/a&gt;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Large_language_model&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;LLM&lt;/a&gt;&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;AI&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So here we are - living through another hypecycle of AI where billions of dollars will slosh about looking to solve the grandest problems of society, burning millions of pounds worth of CO2 in compute time so we can shovel bullshit around the office a little faster.&lt;/p&gt;
&lt;p&gt;But hey - at least we be distracted by the entertaining Rube Goldberg nature of it all.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-06-13/" />
        </entry>
        <entry>
            <title>
                2023-06-06 | 💀 &#39;Cursed Knowledge&#39;
                
            </title>
            <updated>2023-06-06T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-06-06/</id>
            <content type="html">
                &lt;h1 id=&quot;june-06-2023-cursed-knowledge&quot; tabindex=&quot;-1&quot;&gt;June 06, 2023 | 💀 &#39;Cursed Knowledge&#39;&lt;/h1&gt;
&lt;p&gt;A concept I occasionally come back to is what I refer to as &amp;quot;Cursed Knowledge&amp;quot;. Maybe there is already a term for it, or maybe a better term can be made, but this is what I call it. Its the idea of &amp;quot;Once you see it, you can&#39;t unsee it&amp;quot;, and the converse of &amp;quot;Ignorance is Bliss&amp;quot;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: &amp;quot;Cursed Knowledge&amp;quot; is a different than the &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Curse_of_knowledge&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Curse of Knowledge&lt;/a&gt;&amp;quot; bias&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What &amp;quot;Cursed Knowledge&amp;quot; refers to is information that you wish you didn&#39;t know. Maybe its painful, maybe it carries a liability, or maybe its simply distracting.&lt;/p&gt;
&lt;p&gt;Maybe you asked a lover a question you didn&#39;t actually need to know and didn&#39;t like hearing the answer.&lt;/p&gt;
&lt;p&gt;Maybe you found out something about someone you looked up to and admired and now you cringe when you hear their name.&lt;/p&gt;
&lt;p&gt;Maybe you realized a friend or family member was involved in something they shouldn&#39;t have been, and now you are too because you know.&lt;/p&gt;
&lt;p&gt;There is wisdom in knowing when you are about to uncover Cursed Knowledge and choosing not to ask a question, and look the other way.&lt;/p&gt;
&lt;p&gt;Sometimes to be deliberately ignorant is preferred to being informed. Because once you have knowledge, cursed or not, you now have the responsibility to act appropriately on it.&lt;/p&gt;
&lt;p&gt;A not uncommon tool of organizational leaders is deliberate ignorance in order to have &amp;quot;Plausible Deniability&amp;quot; for possible untoward behavior within their organization. It is a common tell of sociopathic &amp;quot;Leaders&amp;quot; who rely extensively on their ignorance in order to deflect responsibility and accountability. For these leaders, Cursed Knowledge is a significant liability to themselves and possibly their organization.&lt;/p&gt;
&lt;p&gt;There is also knowledge that we may choose to treat as Cursed though it is impossible to know whether said knowledge is Cursed or not without acquiring it. An example of this may be the lore of Roko&#39;s Basilisk.&lt;/p&gt;
&lt;p&gt;If you have not heard of Roko&#39;s Basilisk before, you may be tortured by your curiosity to find out what it is and whether it is truly Cursed Knowledge, but you may regret what you learn.&lt;/p&gt;
&lt;p&gt;In short: &amp;quot;F*** around, and find out&amp;quot;.&lt;/p&gt;
&lt;h3 id=&quot;questions-for-further-exploration&quot; tabindex=&quot;-1&quot;&gt;Questions for further exploration:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Is Knowledge cursed as soon as it is acquired, or can it become Cursed at a time after acquisition?
&lt;ul&gt;
&lt;li&gt;Subsequently, can Knowledge that is Cursed after acquisition be used as a Trojan Horse for the Curse?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Is Bullshit considered Cursed?&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-06-06/" />
        </entry>
        <entry>
            <title>
                2023-06-02 | 📊 Personal Productivity Charts with Python
                
            </title>
            <updated>2023-06-02T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-06-02/</id>
            <content type="html">
                &lt;h1 id=&quot;june-02-2023-personal-productivity-charts-with-python&quot; tabindex=&quot;-1&quot;&gt;June 02, 2023 | 📊 Personal Productivity Charts with Python&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;, &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;personal-productivity-charts&quot; tabindex=&quot;-1&quot;&gt;Personal Productivity Charts&lt;/h2&gt;
&lt;p&gt;Spent entirely too long to make this chart to look at how effective my &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/gtd/&quot;&gt;GTD&lt;/a&gt; workflows are.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I exported data from my to-do task manager (&lt;a href=&quot;https://www.gqueues.com/?referralCode=E89QN7OCT2&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Gqueues&lt;/a&gt;) to csv&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;See &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/using-gqueues-for-gtd/&quot;&gt;Using Gqueues for GTD&lt;/a&gt; for my GTD methodology.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;
&lt;p&gt;Used the &lt;a href=&quot;https://en.wikipedia.org/wiki/Python_(programming_language)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Python&lt;/a&gt; library &lt;a href=&quot;https://en.wikipedia.org/wiki/Pandas_(software)&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pandas&lt;/a&gt; to massage the data into something the bar chart function can use&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;customized the chart to make it somewhat legible&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;there is some data cleanup to do&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&#39;ve hidden the legend of category/colors in this chart to keep personal stuff safe, but each of the colors in the bar segments represents a different priority in my life.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230602174619.png&quot; alt=&quot;Pasted image 20230602174619.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It is was a fun &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt; exercise in which I got to exercise long-atrophied Python muscles. It yielded interesting insights, but I&#39;m unclear if anything I noticed will greatly change any behaviors going forward.&lt;/p&gt;
&lt;p&gt;I think most of all this initial draft shows a benchmark of where my &amp;quot;natural&amp;quot; ratios of task categories are at. If there is a notable deviation in future versions of this chart, I&#39;d expect to be able to explain it with a change in priorities or use it as feedback that I need to re-consider my priorities.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-06-02/" />
        </entry>
        <entry>
            <title>
                2023-05-27 | 💡 TIL: Dijkstra Maps
                
            </title>
            <updated>2023-05-27T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-27/</id>
            <content type="html">
                &lt;h1 id=&quot;may-27-2023-til-dijkstra-maps&quot; tabindex=&quot;-1&quot;&gt;May 27, 2023 | 💡 TIL: Dijkstra Maps&lt;/h1&gt;
&lt;h2 id=&quot;til-about-and-quot-dijkstra-maps-and-quot&quot; tabindex=&quot;-1&quot;&gt;TIL about &amp;quot;Dijkstra Maps&amp;quot;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;TLDR&lt;/strong&gt;: a &amp;quot;&lt;a href=&quot;https://www.roguebasin.com/index.php?title=The_Incredible_Power_of_Dijkstra_Maps&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Dijkstra Map&lt;/a&gt;&amp;quot; is a map of the the &amp;quot;costs&amp;quot; (time/effort) associated with traversing each node/edge of a space to a specified location.&lt;/p&gt;
&lt;p&gt;Commonly applied to video games pathfinding AI (eg &lt;a href=&quot;https://en.wikipedia.org/wiki/Dijkstra&#39;s_algorithm&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Dijkstra&#39;s&lt;/a&gt;). Neat use cases in adding factors to influence NPC AI behavior (eg fleeing monsters).&lt;/p&gt;
&lt;p&gt;It makes me wonder if there is an equivalent in graph theory and thus applicable to real life domains of graph theory.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-27/" />
        </entry>
        <entry>
            <title>
                2023-05-25 | 💡 TIL, Rust, &amp; DoubleLoop
                
            </title>
            <updated>2023-05-25T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-25/</id>
            <content type="html">
                &lt;h1 id=&quot;may-25-2023-til-rust-and-amp-double-loop&quot; tabindex=&quot;-1&quot;&gt;May 25, 2023 | 💡 TIL, Rust, &amp;amp; DoubleLoop&lt;/h1&gt;
&lt;h2 id=&quot;updates-to-til&quot; tabindex=&quot;-1&quot;&gt;Updates to TIL&lt;/h2&gt;
&lt;p&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;customized feed.njk to only add /posts/ entries to the rss feed with the following &#39;if&#39; statement in the logic that iterates over the entries.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;hobbies&quot; tabindex=&quot;-1&quot;&gt;Hobbies&lt;/h2&gt;
&lt;p&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt; in Rust&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The last week, I&#39;ve been reading a lot about the &lt;a href=&quot;https://www.rust-lang.org/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Rust programming language&lt;/a&gt;. I think it has nerd-sniped me because it seems like a reasonably high level language, but it compiles to very fast binaries and can target almost any platform - even progressive web apps! I haven&#39;t been able to commit the time to actually writing any code but have enjoyed reading &amp;quot;&lt;a href=&quot;https://doc.rust-lang.org/book/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;The book&lt;/a&gt;&amp;quot; up through chapter 7 so far.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;work&quot; tabindex=&quot;-1&quot;&gt;Work&lt;/h2&gt;
&lt;p&gt;re: DoubleLoop&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/doubleloop.jpg&quot; alt=&quot;doubleloop.jpg|75&quot; width=&quot;75px&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the last few weeks, I&#39;ve been helping more hands on with DoubleLoop. I&#39;ve advised the company since 2018. I&#39;m now helping them get situated with some of their GTM tactics. DoubleLoop&#39;s mission is to help company&#39;s grow through better product feedback loops. Its still the first pages in the company&#39;s story, and I&#39;m excited to be more involved.&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-25/" />
        </entry>
        <entry>
            <title>
                2023-05-17 | 🏃‍♂️ I&#39;m not a runner, but I run.
                
            </title>
            <updated>2023-05-17T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-17/</id>
            <content type="html">
                &lt;h1 id=&quot;may-17-2023-i-m-not-a-runner-but-i-run&quot; tabindex=&quot;-1&quot;&gt;May 17, 2023 | 🏃‍♂️ I&#39;m not a runner, but I run.&lt;/h1&gt;
&lt;p&gt;I don&#39;t call myself a &amp;quot;runner&amp;quot; because I feel like it would imply I care about it as part of my identity, community membership, or virtue signaling.&lt;/p&gt;
&lt;p&gt;But I do run.&lt;/p&gt;
&lt;p&gt;Sometimes I run well for myself and I&#39;m proud of it. Starting the year running 11 minute miles I&#39;m happy to be sub-10 again. I even had two sub-9-minute splits:&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230518094629.png&quot; alt=&quot;Pasted image 20230518094629.png&quot; /&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-17/" />
        </entry>
        <entry>
            <title>
                2023-05-14 | 💡 TIL: Snoqualmie Falls &amp; Hydroelectric Power
                
            </title>
            <updated>2023-05-14T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-14/</id>
            <content type="html">
                &lt;h1 id=&quot;may-14-2023-til-snoqualmie-falls-and-amp-hydroelectric-power&quot; tabindex=&quot;-1&quot;&gt;May 14, 2023 | 💡 TIL: Snoqualmie Falls &amp;amp; Hydroelectric Power&lt;/h1&gt;
&lt;h1 id=&quot;til-today-i-learned-til&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;TIL&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Today I visited the &lt;a href=&quot;https://en.wikipedia.org/wiki/Snoqualmie_Falls&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Snoqualmie Falls&lt;/a&gt; in addition to the scenic view of the waterfall situated below &amp;quot;One Eyed Jack&#39;s&amp;quot; of &lt;a href=&quot;https://en.wikipedia.org/wiki/Twin_Peaks&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Twin Peaks&lt;/a&gt; fame, I was pleased to learn about the hydroelectric power plant. When standing at the bottom of the penstocks looking up and even when looking at Plant 2 sitting in the river water, I couldn&#39;t help but wonder at the scale of the work that must have taken place to make this possible.  With failing infrastructure all over the United States, I found inspiration in a project that is as scenic as it is functional.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-14/" />
        </entry>
        <entry>
            <title>
                2023-05-13 | 💡 TIL: DNS Resolver in Python
                
            </title>
            <updated>2023-05-13T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-13/</id>
            <content type="html">
                &lt;h1 id=&quot;may-13-2023-til-dns-resolver-in-python&quot; tabindex=&quot;-1&quot;&gt;May 13, 2023 | 💡 TIL: DNS Resolver in Python&lt;/h1&gt;
&lt;h1 id=&quot;til-re-coding-coding&quot; tabindex=&quot;-1&quot;&gt;TIL re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An example toy dns resolver can be implemented in Python. &lt;a href=&quot;https://social.jvns.ca/@b0rk#&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Julia Evans&lt;/a&gt; wrote an excellent &amp;quot;Zine&amp;quot;: &lt;a href=&quot;https://implement-dns.wizardzines.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Implement dns in a weekend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I didnt actually do the tutorial but read through each of the pages and learned a lot thanks to the Julia&#39;s very clean and thorough writing style.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-13/" />
        </entry>
        <entry>
            <title>
                2023-05-12 | ⌚️ Fitbit Charge 5 &amp; Uses Page Update
                
            </title>
            <updated>2023-05-12T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-12/</id>
            <content type="html">
                &lt;h1 id=&quot;may-12-2023-fitbit-charge-5-and-amp-uses-page-update&quot; tabindex=&quot;-1&quot;&gt;May 12, 2023 | ⌚️ Fitbit Charge 5 &amp;amp; Uses Page Update&lt;/h1&gt;
&lt;h1 id=&quot;uses-uses&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/uses/&quot;&gt;Uses&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Today I received a Fitbit Charge 5. I bought it because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My Fitbit Charge 3 has been having many battery issues lately&lt;/li&gt;
&lt;li&gt;I&#39;m uncertain and slightly skeptical that Google will continue to innovate the Charge HR line now that it owns Fitbit and will likely be pushing the technology and software into primarily smartwatches.&lt;/li&gt;
&lt;li&gt;I had Google Store credits that were expiring soon that I needed to use.&lt;/li&gt;
&lt;li&gt;I wanted to buy a successor to my current Fitbit Charge 3 before it failed completely, so that I could use it as a backup if necessary in the future.&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-12/" />
        </entry>
        <entry>
            <title>
                2023-05-08 | 💡 Language Efficiency &amp; Liar&#39;s Dividend
                
            </title>
            <updated>2023-05-08T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-05-08/</id>
            <content type="html">
                &lt;h1 id=&quot;may-08-2023-language-efficiency-and-amp-liar-s-dividend&quot; tabindex=&quot;-1&quot;&gt;May 08, 2023 | 💡 Language Efficiency &amp;amp; Liar&#39;s Dividend&lt;/h1&gt;
&lt;h1 id=&quot;til-today-i-learned-til&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt; TIL&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;re-coding-coding-efficiency-of-programming-languages&quot; tabindex=&quot;-1&quot;&gt;re: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/coding/&quot;&gt;Coding&lt;/a&gt;: Efficiency of Programming Languages&lt;/h2&gt;
&lt;p&gt;Sometimes I wonder how much faster our computers would be if folks were writing in lower level programming languages.&lt;/p&gt;
&lt;p&gt;At what point does it become more economical to, instead of relying on &lt;a href=&quot;https://en.wikipedia.org/wiki/Moore%27s_law&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Moore&#39;s Law&lt;/a&gt;  to reduce the space between transistors (&amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/2_nm_process&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;2nm&lt;/a&gt;&amp;quot;), to instead refactor how code gets written and compiled.&lt;/p&gt;
&lt;p&gt;What effect on electricity usage would that have for the trillions of line of code that are in production today?&lt;/p&gt;
&lt;p&gt;I read this blog post that estimates the number of system calls a &amp;quot;hello world&amp;quot; program uses when executing, for various programming languages: &lt;a href=&quot;https://drewdevault.com/2020/01/04/Slow.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://drewdevault.com/2020/01/04/Slow.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TLDR: there is nearly a 100x difference between the lowest level programming language and the highest, among those tested.&lt;/p&gt;
&lt;p&gt;Ruby used ~1401 sys calls, and Assembly used 2.&lt;br /&gt;
&lt;img src=&quot;https://www.isaacwyatt.com/img/user/_@attachments/Pasted%20image%2020230508103338.png&quot; alt=&quot;Pasted image 20230508103338.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Rust seems to be on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Pareto_front&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Pareto frontier&lt;/a&gt; as a balance between fast and high level.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;re-and-quot-liar-s-dividend-and-quot&quot; tabindex=&quot;-1&quot;&gt;re: &amp;quot;Liar&#39;s Dividend&amp;quot;&lt;/h2&gt;
&lt;p&gt;Lawyers provide liquidity in the marketplace of Bullshit.&lt;/p&gt;
&lt;p&gt;&amp;quot;Liar&#39;s Dividend&amp;quot; is a term I expect we will hear more of in the future. TLDR: Its when real evidence is accused of being faked.&lt;/p&gt;
&lt;p&gt;Per this article: &lt;a href=&quot;https://www.npr.org/2023/05/08/1174132413/people-are-trying-to-claim-real-videos-are-deepfakes-the-courts-are-not-amused&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.npr.org/2023/05/08/1174132413/people-are-trying-to-claim-real-videos-are-deepfakes-the-courts-are-not-amused&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The liar&#39;s dividend is a term coined by law professors Bobby Chesney and Danielle Citron in a 2018 paper laying out the challenges deepfakes present to privacy, democracy, and national security.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The idea is, as people become more aware of how easy it is to fake audio and video, bad actors can weaponize that skepticism.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Put simply: a skeptical public will be primed to doubt the authenticity of real audio and video evidence,&amp;quot; Chesney and Citron wrote.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;If lawyers start to get juries to demand all the bells and whistles to prove that a piece of evidence is not a fake...that is a way for lawyers and for their clients who are seeking to downplay or dismiss damning evidence against them to essentially run up the bills and make it more expensive, more time-consuming for the other side to get that damning piece of evidence admitted,&amp;quot; she said.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;^ eg: &lt;em&gt;&amp;quot;The amount of energy needed to refute &lt;a href=&quot;https://en.wikipedia.org/wiki/Bullshit&quot; title=&quot;Bullshit&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;bullshit&lt;/a&gt; is an &lt;a href=&quot;https://en.wikipedia.org/wiki/Order_of_magnitude&quot; title=&quot;Order of magnitude&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;order of magnitude&lt;/a&gt; bigger than that needed to produce it.&amp;quot;&lt;/em&gt; see:  &lt;a href=&quot;https://en.wikipedia.org/wiki/Brandolini%27s_law&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;&amp;quot;Brandolini&#39;s Law&amp;quot; or the &amp;quot;Bullshit Asymmetry Principle&amp;quot;&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-05-08/" />
        </entry>
        <entry>
            <title>
                2023-04-28 | 💡 TIL: Phatic
                
            </title>
            <updated>2023-04-28T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-28/</id>
            <content type="html">
                &lt;h1 id=&quot;april-28-2023-til-phatic&quot; tabindex=&quot;-1&quot;&gt;April 28, 2023 | 💡 TIL: Phatic&lt;/h1&gt;
&lt;h2 id=&quot;til-today-i-learned-til&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt; TIL&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The word &amp;quot;phatic&amp;quot;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;denoting or relating to language used for general purposes of social interaction, rather than to convey information or ask questions. Utterances such as &lt;em&gt;hello, how are you?&lt;/em&gt; and &lt;em&gt;nice morning, isn&#39;t it?&lt;/em&gt; are phatic.  OED&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Phatic_expression&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://en.wikipedia.org/wiki/Phatic_expression&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-28/" />
        </entry>
        <entry>
            <title>
                2023-04-19 | 🎮 myhouse.wad &amp; 💡 Synthetic Helium
                
            </title>
            <updated>2023-04-19T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-19/</id>
            <content type="html">
                &lt;h1 id=&quot;april-19-2023-myhouse-wad-and-amp-synthetic-helium&quot; tabindex=&quot;-1&quot;&gt;April 19, 2023 | 🎮 myhouse.wad &amp;amp; 💡 Synthetic Helium&lt;/h1&gt;
&lt;h1 id=&quot;now-now&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link is-unresolved&quot; href=&quot;https://www.isaacwyatt.com/404&quot; target=&quot;&quot;&gt;/now/&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Played &lt;a href=&quot;https://www.doomworld.com/forum/topic/134292-myhousewad/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;myhouse.wd&lt;/a&gt;. 9/10&lt;/p&gt;
&lt;p&gt;If you like custom wads for the og Doom and Doom2, then you may really like &amp;quot;myhouse.wad&amp;quot;: &lt;a href=&quot;https://www.doomworld.com/forum/topic/134292-myhousewad/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.doomworld.com/forum/topic/134292-myhousewad/&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;make sure you have the latest Gzdoom&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the .pk3 file, not the wad&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤯&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;til-today-i-learned-til-today-i-learned&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;synthetic-helium&quot; tabindex=&quot;-1&quot;&gt;Synthetic Helium&lt;/h2&gt;
&lt;p&gt;After a run in trying to get birthday balloons filled with helium and running to multiple stores, and knowing that helium is a necessary component for medical devices and lab research, I was curious what the solutions were and assumed that some sort of alternative must be possible.&lt;/p&gt;
&lt;p&gt;Lazily, I turned to &lt;a href=&quot;https://bard.google.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Google Bard&lt;/a&gt; (I don&#39;t have access to ChatGPT because I refused to give it my phone number to verify my account). Below is my short session.&lt;/p&gt;
&lt;p&gt;TLDR: its possible to make helium via two methods, but neither appear to be commercial scale.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt:&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;how to make synthetic helium&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;Response:&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Helium is the second most abundant element in the universe, but it is also the second lightest. This means that it is very difficult to contain and transport, and it is also very easy to lose to the atmosphere. As a result, there is a growing interest in the development of synthetic helium production methods.&lt;/p&gt;
&lt;p&gt;There are two main methods for producing synthetic helium:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cryogenic distillation:&lt;/strong&gt; This method involves cooling a mixture of gases until the helium condenses. The condensed helium is then separated from the other gases and collected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nuclear fusion:&lt;/strong&gt; This method involves fusing hydrogen atoms together to create helium atoms. This is a very energy-intensive process, but it is also a very promising way to produce large quantities of helium.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both of these methods are still in the early stages of development, but they have the potential to provide a sustainable source of helium for the future.&lt;/p&gt;
&lt;p&gt;Here are some additional details about each method:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cryogenic distillation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This method is the most common way to produce synthetic helium.&lt;/li&gt;
&lt;li&gt;It is a relatively simple process, but it can be energy-intensive.&lt;/li&gt;
&lt;li&gt;The quality of the helium produced by this method is very high.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nuclear fusion:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This method is still in the early stages of development.&lt;/li&gt;
&lt;li&gt;It is a very promising way to produce large quantities of helium, but it is also a very energy-intensive process.&lt;/li&gt;
&lt;li&gt;The quality of the helium produced by this method is very high.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is important to note that both of these methods are still in the early stages of development, and it is not clear which method will be more cost-effective or efficient in the long term. However, both methods have the potential to provide a sustainable source of helium for the future.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;Prompt:&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Describe the process of creating helium using Cryogenic distillation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;Response:&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sure. Here is a brief overview of the process of creating helium using cryogenic distillation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Air is compressed and cooled.&lt;/strong&gt; Air is compressed to a high pressure and then cooled to a very low temperature. This causes the air to liquefy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The liquefied air is separated into its component gases.&lt;/strong&gt; The liquefied air is passed through a series of distillation columns. In each column, the air is heated and then cooled. The different gases in the air have different boiling points, so they will vaporize at different temperatures. This allows the gases to be separated from each other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The helium is collected.&lt;/strong&gt; The helium is collected at the bottom of the distillation column. It is then cooled to a liquid state and stored in a tank.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The process of creating helium using cryogenic distillation is a relatively simple process, but it can be energy-intensive. The quality of the helium produced by this method is very high.&lt;/p&gt;
&lt;/blockquote&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-19/" />
        </entry>
        <entry>
            <title>
                2023-04-18 | 💡 TIL: Magic the Gathering is Turing Complete
                
            </title>
            <updated>2023-04-18T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-18/</id>
            <content type="html">
                &lt;h1 id=&quot;april-18-2023-til-today-i-learned-til-magic-the-gathering-is-turing-complete&quot; tabindex=&quot;-1&quot;&gt;April 18, 2023 | 💡 &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL&lt;/a&gt;: Magic the Gathering is Turing Complete&lt;/h1&gt;
&lt;h2 id=&quot;magic-the-gathering-is-turing-complete&quot; tabindex=&quot;-1&quot;&gt;Magic the Gathering is Turing Complete&lt;/h2&gt;
&lt;p&gt;I came across a Hacker News post that discussed the Prolog programming language. I had read about Prolog years ago and thought it sounded interesting and cool. I had forgotten about it in the years since. As I read the linked article about Prolog, I realized I needed a refresher on what &amp;quot;Turing Complete&amp;quot; meant, and in the process of reading about Turing completeness on wikipedia, I saw a few examples of different games - both video games and table top games - that are Turing complete. I shouldn&#39;t have been surprised that Magic: The Gathering is Turing complete, but of the listed games in the wikipedia article, it was least obvious. The others being of the Minecraft variety.&lt;/p&gt;
&lt;p&gt;Here are the breadcrumbs I followed: Hacker News -&amp;gt; Prolog -&amp;gt; Turing Complete -&amp;gt; Magic the Gathering is Turing Complete&lt;/p&gt;
&lt;p&gt;Specifically:&lt;/p&gt;
&lt;h3 id=&quot;hacker-news&quot; tabindex=&quot;-1&quot;&gt;Hacker News&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://die-partei.social/@hackernews/110223537084765209&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://die-partei.social/@hackernews/110223537084765209&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;prolog&quot; tabindex=&quot;-1&quot;&gt;Prolog&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kmjn.org/notes/prolog_lost_steam.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.kmjn.org/notes/prolog_lost_steam.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Prolog&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://en.wikipedia.org/wiki/Prolog&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;datalog&quot; tabindex=&quot;-1&quot;&gt;Datalog&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Datalog&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://en.wikipedia.org/wiki/Datalog&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;turing-complete&quot; tabindex=&quot;-1&quot;&gt;Turing Complete&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_completeness&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://en.wikipedia.org/wiki/Turing_completeness&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Turing_machine&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://en.wikipedia.org/wiki/Turing_machine&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;magic-the-gathering-is-turing-complete-1&quot; tabindex=&quot;-1&quot;&gt;Magic the Gathering is Turing Complete&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://arstechnica.com/science/2019/06/its-possible-to-build-a-turing-machine-within-magic-the-gathering/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://arstechnica.com/science/2019/06/its-possible-to-build-a-turing-machine-within-magic-the-gathering/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.toothycat.net/~hologram/Turing/index.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.toothycat.net/~hologram/Turing/index.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.toothycat.net/~hologram/Turing/HowItWorks.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.toothycat.net/~hologram/Turing/HowItWorks.html&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-18/" />
        </entry>
        <entry>
            <title>
                2023-04-17 | 💡 TIL: Ray-casting, Ray-tracing, and BSP
                
            </title>
            <updated>2023-04-17T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-17/</id>
            <content type="html">
                &lt;h1 id=&quot;april-17-2023-til-today-i-learned-til-ray-casting-ray-tracing-and-bsp&quot; tabindex=&quot;-1&quot;&gt;April 17, 2023 | 💡 &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL&lt;/a&gt;: Ray-casting, Ray-tracing, and BSP&lt;/h1&gt;
&lt;h2 id=&quot;ray-casting-ray-tracing-and-binary-space-partitions&quot; tabindex=&quot;-1&quot;&gt;Ray-casting, Ray-tracing, and Binary Space Partitions&lt;/h2&gt;
&lt;p&gt;In the process of creating a Doom Wad, I&#39;ve been thinking about customizing some enemy AI behavior that would require teleporting a monster to a run-time determined location. In order to avoid teleporting the monster to out of the play-space or into another object or wall, I had considered whether ray tracing would be a necessary and sufficient solution.&lt;/p&gt;
&lt;p&gt;Instead, I nerd-sniped myself and started reading about ray casting and ray tracing. I found &lt;a href=&quot;https://lodev.org/cgtutor/raycasting.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;this article on lodev.org&lt;/a&gt; to be a fairly comprehensive write up on the process. A big question I was trying to answer was &amp;quot;&lt;em&gt;how is an intersection between a ray and wall detected?&lt;/em&gt;&amp;quot; and it is basically checking the value of an obstruction world map: a matrix of zeros and ones where &#39;one&#39; indicates an obstruction. For each value in the matrix between the ray an obstruction, the world map matrix is check to see if the value is zero or one. If it is one, then the casted ray can be stopped (depending on the needed application).&lt;/p&gt;
&lt;p&gt;When I realized that the process is depends on the world map obstruction matrix, it finally clicked what &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Binary_space_partitioning&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Binary Space Partitions&lt;/a&gt;&amp;quot; (&amp;quot;BSP&amp;quot;) are and what they are used for. So instead of traversing a matrix to represent a world, a BSP algorithm creates a data structure for the ray casting algorithm to traverse. I&#39;d heard about BSP in the early years of Doom map wad modding. So not only do I have a better understanding of ray casting, but now I see how it relates to a concept I head years ago: BSP.&lt;/p&gt;
&lt;p&gt;Somewhere in my brain, two neurons, probably created years apart, finally found each other.&lt;/p&gt;
&lt;p&gt;What really strikes me about the process is that it can all happen 30 times per second for at least the number of pixels that need to be rendered in a computer monitor&#39;s viewport of the 3D scene - usually close to the monitor&#39;s screen resolution. Computer&#39;s have been faster than what I thought possible, for longer than what I thought possible. And yet I hear so much about how expensive cloud hosting, server time, etc are.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-17/" />
        </entry>
        <entry>
            <title>
                2023-04-08 | 💡 TIL: Emergence
                
            </title>
            <updated>2023-04-08T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-08/</id>
            <content type="html">
                &lt;h1 id=&quot;april-08-2023-til-today-i-learned-til-emergence&quot; tabindex=&quot;-1&quot;&gt;April 08, 2023 | 💡 &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL&lt;/a&gt;: Emergence&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;TIL there is a systematic study of the concept of &lt;a href=&quot;https://notes.nicolevanderhoeven.com/Emergence&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Emergence&lt;/a&gt; in the general of non-domain specific domains, and as a bonus, it comes from another digital gardener. As a system thinker, operations practicioner, and digital gardener, this is delightful.&lt;/li&gt;
&lt;/ul&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-08/" />
        </entry>
        <entry>
            <title>
                2023-04-07 | 💡 Eudaimonia, Ikigai, and the Hierarchy of Fulfillment
                
            </title>
            <updated>2023-04-07T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-04-07/</id>
            <content type="html">
                &lt;h1 id=&quot;april-07-2023-eudaimonia-ikigai-and-the-hierarchy-of-fulfillment&quot; tabindex=&quot;-1&quot;&gt;April 07, 2023 | 💡 Eudaimonia, Ikigai, and the Hierarchy of Fulfillment&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Today I learned about &amp;quot;Eudaimonia&amp;quot; and &amp;quot;Ikigai&amp;quot;, and their relation to Maslow&#39;s Hierarchy of Needs. This is interesting because it relates to a framework I developed stemming from David Allen&#39;s GTD concept of 5 Horizons called the &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/blogchains/bc-hierarchy-of-fulfillment-2023/&quot;&gt;Hierarchy of Fulfillment&lt;/a&gt;.&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-04-07/" />
        </entry>
        <entry>
            <title>
                2023-02-23 | 🪴 Ultima Underworld and Affine Texture Mapping
                
            </title>
            <updated>2023-02-23T00:00:00Z</updated>
            <id>https://www.isaacwyatt.com/posts/2023-02-23/</id>
            <content type="html">
                &lt;h1 id=&quot;february-23-2023-ultima-underworld-and-affine-texture-mapping&quot; tabindex=&quot;-1&quot;&gt;February 23, 2023 | 🪴 Ultima Underworld and Affine Texture Mapping&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;[!topics] Topics: &lt;a class=&quot;internal-link&quot; target=&quot;&quot; data-note-icon=&quot;&quot; href=&quot;https://www.isaacwyatt.com/til-today-i-learned/&quot;&gt;TIL (Today I learned)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I played the video game &lt;a href=&quot;https://en.wikipedia.org/wiki/Ultima_Underworld:_The_Stygian_Abyss&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;Ultima Underworld&lt;/a&gt; in the early/mid 1990s. If I recall correctly, a close friend replayed it within the last decade. I dont think I ever beat the first one, nor the second, but could be wrong about that.&lt;/p&gt;
&lt;p&gt;I was watching my favorite twitch streamer (&lt;a href=&quot;https://www.twitch.tv/lobosjr&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;LobosJr&lt;/a&gt;) play it for the first time (&lt;a href=&quot;https://www.twitch.tv/videos/1742970282&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://www.twitch.tv/videos/1742970282&lt;/a&gt;) and it struck me how distorted the 3D rendering was. I had noticed this when I was young, probably because I don&#39;t think it struck me as unreasonable at the time. In retrospect, any 3D game had an acceptable level of performance / quality embellishments that would be intolerable today.&lt;/p&gt;
&lt;p&gt;I was curious if there was any explanation for the distortions available, and with some searching on the search engine &lt;a href=&quot;https://duckduckgo.com/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;DuckDuckGo&lt;/a&gt;, I found a history of the making of Ultima Underworld,. The article &lt;a href=&quot;https://www.filfre.net/2019/01/life-off-the-grid-part-1-making-ultima-underworld/&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;&amp;quot;Life Off the Grid, Part 1: Making Ultima Underworld&amp;quot; from January of 2019 by Jimmy Maher&lt;/a&gt; which is a great read on its own though long, explains that the 3D embellishments are the result of a intended trade off for the sake of rending performance:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The vertices of the polygons in a 3D graphics system are defined with an X, a Y, and a Z coordinate; it’s this last, of course, that makes such a system a 3D system at all. And it’s also the Z coordinate that is the source of all of the complications relating to 3D graphics in general. Nowhere is this more true than in the case of texture mapping. To do it correctly, textures have to be scaled and transformed to account for their position in relation to the viewing location, as largely defined by their Z coordinate. But Green didn’t bother to do texture mapping correctly; he effectively threw away the Z coordinate and glued his textures onto their polygons as if they were in a 2D space. This technique would come to be known inside the industry as “affine texture mapping.” It yielded an enormous increase in rendering speed, balanced by a degree of distortion that was almost unnoticeable in some situations, very noticeable indeed in others. Still, an imperfect texture mapper, Green decided, was better than no texture mapper at all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wanted to know more about &amp;quot;affine texture mapping&amp;quot;, and a quick search, again on DuckDuckGo, resulted in the following brief article with code examples: &lt;a href=&quot;https://mtrebi.github.io/2017/03/15/texture-mapping-affine-perspective.html&quot; target=&quot;_blank&quot; class=&quot;external-link&quot;&gt;https://mtrebi.github.io/2017/03/15/texture-mapping-affine-perspective.html&lt;/a&gt;&lt;/p&gt;

            </content>
            <link href="https://www.isaacwyatt.com/posts/2023-02-23/" />
        </entry>
</feed>
