<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sad Frog Blog</title><link>https://sadfrogblog.com/</link><description>Recent content on Sad Frog Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 13 Dec 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://sadfrogblog.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Beginnings are Delicate Things</title><link>https://sadfrogblog.com/setting_up_neovim/</link><pubDate>Fri, 13 Dec 2024 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/setting_up_neovim/</guid><description>&lt;p&gt;My friend Jim recently made a tragic mistake. On a rainy December afternoon&#10;between tickets I received this text in our group chat:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Might be mostly for Zach but I got a clean slate to start working in vim again&#10;finally. Where to start from scratch?&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I felt the electric thrill I imagine trapdoor spiders feel at the first tremor&#10;of the ground around them, and immediately began to write this write up.&lt;/p&gt;</description></item><item><title>Notes on Nix</title><link>https://sadfrogblog.com/nix/</link><pubDate>Tue, 02 Apr 2024 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/nix/</guid><description>&lt;p&gt;&lt;a href="https://nixos.org/" rel="noopener"&gt;Nix&lt;/a&gt; is a build tool, language, package manager, and operating&#10;system to reproducibly declare how software should be built.&lt;/p&gt;&#10;&lt;p&gt;It&amp;rsquo;s bizarre.&lt;/p&gt;&#10;&lt;p&gt;The language itself feels like the spirit of a Haskell derivative, bound to the&#10;body of the unholy spawn of JSON and YAML. Lazy evaluation, pure functions, all&#10;that jazz, but the top level return type is almost always an attribute set used&#10;by another bit of code to create &lt;a href="#what-is-a-derivation"&gt;derivations&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to teach yourself to draw</title><link>https://sadfrogblog.com/how_to_teach_yourself_to_draw/</link><pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/how_to_teach_yourself_to_draw/</guid><description>&lt;p&gt;Recently I&amp;rsquo;ve been teaching myself to sketch with a pen in my notebook. It&amp;rsquo;s&#10;been a fun and rewarding experience, so I thought I&amp;rsquo;d share the rough steps of&#10;what I&amp;rsquo;ve been doing to get a little better at drawing. Follow along, and I hope&#10;you have some fun!&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Start doodling in a nearby sketch book. Small designs, stick figures, anything really.&#10;&lt;ul&gt;&#10;&lt;li&gt;Start looking up tutorials on drawing fun but simple things. These give you some nice momentum, and feel great!&lt;/li&gt;&#10;&lt;li&gt;Try to learn how to draw faces better. Give up quickly because it’s hard (especially lips for some reason).&lt;/li&gt;&#10;&lt;li&gt;Start learning perspective for the first time. This is much easier and you &lt;em&gt;know&lt;/em&gt; you&amp;rsquo;re doing it right.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Find out that fineliner sketching is a whole thing and looks super cool.&lt;/li&gt;&#10;&lt;li&gt;Stumble upon YouTube videos of &lt;a href="https://www.kimjunggius.com/" rel="noopener"&gt;Kim Jung Gi&lt;/a&gt; drawing.&#10;&lt;ul&gt;&#10;&lt;li&gt;Become awestruck.&lt;/li&gt;&#10;&lt;li&gt;He’s seems so nice, and he draws with a fluency that looks effortless.&lt;/li&gt;&#10;&lt;li&gt;Start looking at his bigger pieces. Some combine like 6 different&#10;perspective types in one page, and you can &lt;em&gt;feel&lt;/em&gt; the story in the different&#10;sections, even though it&amp;rsquo;s just one large picture. He seems so cool.&lt;/li&gt;&#10;&lt;li&gt;Watch tons of videos of him drawing, and talking, and explaining his process.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Learn that he died.&#10;&lt;ul&gt;&#10;&lt;li&gt;Learn that he died in 2022.&lt;/li&gt;&#10;&lt;li&gt;Learn that he was 47.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Get sad/Stop drawing.&#10;&lt;ul&gt;&#10;&lt;li&gt;Feel like you missed the boat on meeting another cool person.&lt;/li&gt;&#10;&lt;li&gt;Imagine all the cool and interesting people you will never be able to meet.&lt;/li&gt;&#10;&lt;li&gt;Realize that list will only grow over time.&lt;/li&gt;&#10;&lt;li&gt;Wonder to yourself how you&amp;rsquo;re supposed to move through the world to meet the most cool people.&lt;/li&gt;&#10;&lt;li&gt;Think to yourself &lt;code&gt;This guy just seemed like a normal dude. Would I have even known how cool he was if I'd just met him at a coffee shop?&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Continue this thread in your head: &lt;code&gt;In fact, that’s a big part of what makes him so cool; He’s not some bizarre outlier living in the mountains, he’s just a down to earth guy. I might be meeting people like him all the time and never know it.&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Realize that you can&amp;rsquo;t be sure, no matter what you do, that you&amp;rsquo;re meeting all the cool people in your &lt;em&gt;neighboorhood&lt;/em&gt;, let alone in the entire world.&lt;/li&gt;&#10;&lt;li&gt;Begin to worry that, even if you &lt;em&gt;could&lt;/em&gt; find all the cool people around you, would they think you’re cool too?&lt;/li&gt;&#10;&lt;li&gt;Worry to yourself: &lt;code&gt;Would they even want to talk to me? I'm not as good at anything as they are at the things they do. What would we even do?&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Begin having some light existential panic, and wonder if you have still have time to become a cool person?&#10;&lt;ul&gt;&#10;&lt;li&gt;Worry about if you&amp;rsquo;re fundamentally capable of anything cool, even with infinite time.&lt;/li&gt;&#10;&lt;li&gt;Feel embarrassed about this thought&lt;/li&gt;&#10;&lt;li&gt;Try to imagine how you would feel if you got to where Gi, or any of the other cool people ended up.&lt;/li&gt;&#10;&lt;li&gt;Wonder if there even is a feeling that’s associated with that level of accomplishment, or if they feel like you do now (horrifying).&lt;/li&gt;&#10;&lt;li&gt;Wonder if, from the beginning, these people have felt the way they do right now about whatever their chosen activity is, and that for them, it’s more about the activity being fun than it being meaningful?&lt;/li&gt;&#10;&lt;li&gt;Let it occur to you that you may be overly burdened with words like genius, greatness, and passion.&lt;/li&gt;&#10;&lt;li&gt;Realize that true greatness is probably accomplished through people doing things they enjoy or are already compelled to do.&lt;/li&gt;&#10;&lt;li&gt;Realize that in order to achieve greatness, you might have to abandon your desire for greatness.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;[!WARNING]&lt;/p&gt;</description></item><item><title>Now defunct Lazy.nvim idea</title><link>https://sadfrogblog.com/now_defunct_lazy_nvim_idea/</link><pubDate>Thu, 05 Oct 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/now_defunct_lazy_nvim_idea/</guid><description>&lt;p&gt;In &lt;a href="https://sadfrogblog.com/we_can_do_better_than_g/"&gt;this&lt;/a&gt; blog post, I originally had come&#10;up with a one-off idea for how &lt;a href="https://github.com/folke/lazy.nvim" rel="noopener"&gt;Lazy.nvim&lt;/a&gt; could add this new field to handle&#10;what I called implicit dependencies, but &lt;a href="https://github.com/folke" rel="noopener"&gt;Folke&lt;/a&gt;&#10;pointed out a better way this could be done. I edited the original article, but&#10;wanted to preserve the idea here for anyone that wanted to reference it.&lt;/p&gt;&#10;&lt;h2 id="original-snippet"&gt;Original Snippet&lt;/h2&gt;&#10;&lt;p&gt;With this as our new base, some of our pseudo dependency relationships become&#10;inverted. Instead of [cmp] depending on [cmp-path], now [cmp-path] will list&#10;[cmp] as one of its dependencies, and when [cmp-path] is &lt;code&gt;load&lt;/code&gt;ed, it will call&#10;into [cmp]&amp;rsquo;s &lt;code&gt;config()&lt;/code&gt; function to register itself as a source. The only&#10;challenge here is that we need a new way to express that [cmp-path]&amp;rsquo;s &lt;code&gt;load&lt;/code&gt;&#10;has to run before [cmp]&amp;rsquo;s &lt;code&gt;load&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>This Blog (is over engineered)</title><link>https://sadfrogblog.com/this_blog_is_over_engineered/</link><pubDate>Sat, 23 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/this_blog_is_over_engineered/</guid><description>&lt;p&gt;I didn&amp;rsquo;t really decide to start up a blog.&lt;/p&gt;&#10;&lt;p&gt;About a year ago I bought a domain and put up some static pages and never&#10;touched it again. The whole idea of sharing what I&amp;rsquo;m thinking and doing&#10;made me nervous, so I just stopped.&lt;/p&gt;&#10;&lt;p&gt;But recently I stumbled on the &lt;a href="https://quartz.jzhao.xyz/" rel="noopener"&gt;Quartz&lt;/a&gt; static&#10;site generator. I&amp;rsquo;ve always been kind of enamored with fun knowledge webs and so this seemed perfect.&#10;I looked at the &lt;a href="https://quartz.jzhao.xyz/#-get-started" rel="noopener"&gt;installation instructions&lt;/a&gt; and thought &amp;ldquo;fork to install? Retro.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Projects of mine</title><link>https://sadfrogblog.com/stuff_i_made/</link><pubDate>Fri, 15 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/stuff_i_made/</guid><description>&lt;h2 id="open-source-things-i-maintain"&gt;Open Source Things I Maintain&lt;/h2&gt;&#10;&lt;p&gt;&amp;ldquo;Maintain&amp;rdquo; is a fairly loose term. None of these projects have taken off&#10;enough to cause the influx of issues, complaints, and suggestions that&#10;some other projects have. But I&amp;rsquo;m not complaining.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/zdcthomas/yop.nvim" rel="noopener"&gt;Yop.nvim&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://sadfrogblog.com/dmux/"&gt;Dmux&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="stuff-i-make-for-me"&gt;Stuff I Make For Me&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/zdcthomas/yakko_wakko" rel="noopener"&gt;My dotfiles&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>AdTech Terms I've Come accross</title><link>https://sadfrogblog.com/adtech_terms/</link><pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/adtech_terms/</guid><description>&lt;h1 id="adtech-terms"&gt;Adtech Terms&lt;/h1&gt;&#10;&lt;p&gt;This is just a collection of adtech terms I&amp;rsquo;ve had to pick up&#10;after working in AdTech for a little bit.&lt;/p&gt;&#10;&lt;h2 id="impression"&gt;Impression&lt;/h2&gt;&#10;&lt;p&gt;An impression seems to be a single view or interaction with a given piece of&#10;advertising.&lt;/p&gt;&#10;&lt;p&gt;Impressions are used when calculating payment on a &lt;a href="#cpm"&gt;cost per mille&lt;/a&gt; basis.&lt;/p&gt;&#10;&lt;h2 id="cpm"&gt;CPM&lt;/h2&gt;&#10;&lt;p&gt;Cost Per Mille: The cost to an advertiser for every 1000 (Mille) impressions a&#10;publisher gets on a specific ad.&lt;/p&gt;</description></item><item><title>Dmux, A tool I needed</title><link>https://sadfrogblog.com/dmux/</link><pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/dmux/</guid><description>&lt;p&gt;&lt;a href="https://github.com/zdcthomas/dmux" rel="noopener"&gt;Dmux&lt;/a&gt; is a tool I wrote to replace&#10;fragile tmux shell scripts I had that opened and setup panes. It&amp;rsquo;s grown a&#10;bit since then, and I get to pretend to be a real open-source maintainer.&lt;/p&gt;</description></item><item><title>Research on Second Language Aquisition</title><link>https://sadfrogblog.com/second_language_aquisition_models/</link><pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/second_language_aquisition_models/</guid><description>&lt;p&gt;I&amp;rsquo;ve taken some of these notes and found some of these resources over the years&#10;while learning a few different languages for fun.&lt;/p&gt;&#10;&lt;h1 id="people"&gt;People&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://www.sdkrashen.com/" rel="noopener"&gt;Stephen Krashen&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Paul_Nation" rel="noopener"&gt;Paul Nation&lt;/a&gt;&#10;Learning Vocabulary in Another Language&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="papers"&gt;Papers&lt;/h1&gt;&#10;&lt;h2 id="swain"&gt;Swain&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.hpu.edu/research-publications/tesol-working-papers/2017/2017-new-with-metadata/06pannellpartschfuller_output.pdf" rel="noopener"&gt;The Output Hypothesis: From Theory to Practice&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Authors:&#10;&lt;ul&gt;&#10;&lt;li&gt;Nicholas Fuller&lt;/li&gt;&#10;&lt;li&gt;Friederike Partsch&lt;/li&gt;&#10;&lt;li&gt;Justin Pannell&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Description: a meta analysis of multiple papers by&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Merrill_Swain" rel="noopener"&gt;Swain&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Year: 2017&lt;/li&gt;&#10;&lt;li&gt;Important references:&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.researchgate.net/publication/231781443_Output_input_enhancement_and_the_noticing_hypothesis" rel="noopener"&gt;Izumi&amp;rsquo;s Output, input enhancement, and the noticing hypothesis&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Swain&amp;rsquo;s three functions of output are&lt;/p&gt;</description></item><item><title>We can do better than `vim.g`</title><link>https://sadfrogblog.com/we_can_do_better_than_g/</link><pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/we_can_do_better_than_g/</guid><description>&lt;p&gt;Returning to the use of globals for all neovim configuration would be a step backward for the Neovim plugin ecosystem, especially when another better and easier &lt;a href="#split-setup-in-two"&gt;possibility&lt;/a&gt; exists.&lt;/p&gt;&#10;&lt;h2 id="some-history"&gt;Some History&lt;/h2&gt;&#10;&lt;p&gt;Recently, there&amp;rsquo;s been a bit of a debate going on in the Neovim community around how we should structure our plugins.&#10;One of the &lt;a href="https://mrcjkb.dev/posts/2023-08-22-setup.html" rel="noopener"&gt;arguments&lt;/a&gt; that&amp;rsquo;s been put forward has been that we should return to the older &amp;ldquo;vim&amp;rdquo; style of plugin configuration, i.e global variables that are picked up by our plugins at runtime to handle configuration.&lt;/p&gt;</description></item><item><title>About</title><link>https://sadfrogblog.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sadfrogblog.com/about/</guid><description>&lt;p&gt;My name&amp;rsquo;s Zach Thomas, and this is my home page for my Digital Garden. I&amp;rsquo;m&#10;usually &lt;a href="https://sadfrogblog.com/stuff_i_made/"&gt;making&lt;/a&gt;, &lt;a href="https://sadfrogblog.com/tags/notes/"&gt;learning&lt;/a&gt;, and &lt;a href="https://sadfrogblog.com/series/tales-from-the-yak-shed/"&gt;yak shaving&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;More specifically I&amp;rsquo;m:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;working on the Relay &lt;a href="https://sadfrogblog.com/adtech_terms/#rtb"&gt;exchange server&lt;/a&gt; written in Rust at &lt;a href="https://www.kevel.com/" rel="noopener"&gt;Kevel&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;slowly getting better at &lt;a href="https://sadfrogblog.com/nix/"&gt;nix&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;writing about &lt;a href="https://sadfrogblog.com/series/tales-from-the-yak-shed/"&gt;yak shaving misadventures&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;learning to share thoughts in my &lt;a href="https://sadfrogblog.com/"&gt;blog posts&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;taking &lt;a href="https://sadfrogblog.com/tags/notes/"&gt;notes&lt;/a&gt; about stuff I learn&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This site is heavily influenced by &lt;a href="https://jzhao.xyz/" rel="noopener"&gt;Jacky Zhao&amp;rsquo;s personal site&lt;/a&gt;.&#10;It used to be built with &lt;a href="https://quartz.jzhao.xyz/" rel="noopener"&gt;Quartz&lt;/a&gt;, the site generator&#10;they made; these days it runs on &lt;a href="https://gohugo.io/" rel="noopener"&gt;Hugo&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>