From 744e6008c7ac1a5ec51b2f675503c6dd12ba25ca Mon Sep 17 00:00:00 2001 From: kevinfiol <> Date: Sat, 23 Mar 2024 01:54:07 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20kevinfio?= =?UTF-8?q?l/kevinfiol.github.io@edd10a046f29a52cd77a9998d601bc8058f7d96a?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 1 + CNAME | 1 + about/index.html | 1 + archive/index.html | 1 + atom.xml | 1237 +++++++++++++++++ blog/a-minimal-rss-feed-reader/index.html | 1 + .../index.html | 26 + blog/books/index.html | 1 + blog/brew-candy-review/index.html | 1 + .../index.html | 52 + .../index.html | 3 + blog/git-cheatsheet/index.html | 22 + blog/hard-symlinks-on-windows/index.html | 2 + .../index.html | 76 + blog/im-on-netlify/index.html | 1 + blog/index.html | 1 + .../index.html | 4 + blog/mithriljs-esbuild-jsx/index.html | 18 + blog/modern-bundling-with-esbuild/index.html | 111 ++ .../index.html | 83 ++ .../validating-checksum-on-windows/index.html | 2 + css/main.css | 289 ++++ css/resume.css | 54 + img/blog/brew_candy/1.jpg | Bin 0 -> 81629 bytes img/blog/brew_candy/2.jpg | Bin 0 -> 57909 bytes img/blog/brew_candy/3.jpg | Bin 0 -> 61420 bytes img/blog/brew_candy/4.jpg | Bin 0 -> 35892 bytes img/blog/brew_candy/5.jpg | Bin 0 -> 35159 bytes img/blog/brew_candy/6.jpg | Bin 0 -> 40677 bytes img/blog/credential_helper/helper.jpg | Bin 0 -> 12742 bytes img/blog/haxeflixel-bullet-timers/1.gif | Bin 0 -> 52114 bytes img/blog/haxeflixel-bullet-timers/2.gif | Bin 0 -> 42399 bytes img/favicon.png | Bin 0 -> 1804 bytes img/me.jpg | Bin 0 -> 32594 bytes img/spes.png | Bin 0 -> 5627 bytes index.html | 1 + js/dark-mode-switch.min.js | 1 + resume/index.html | 1 + robots.txt | 4 + sitemap.xml | 78 ++ 40 files changed, 2073 insertions(+) create mode 100644 404.html create mode 100644 CNAME create mode 100644 about/index.html create mode 100644 archive/index.html create mode 100644 atom.xml create mode 100644 blog/a-minimal-rss-feed-reader/index.html create mode 100644 blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/index.html create mode 100644 blog/books/index.html create mode 100644 blog/brew-candy-review/index.html create mode 100644 blog/bullet-pools-with-timers-in-haxeflixel/index.html create mode 100644 blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/index.html create mode 100644 blog/git-cheatsheet/index.html create mode 100644 blog/hard-symlinks-on-windows/index.html create mode 100644 blog/hosting-your-invidious-instance-on-a-vps/index.html create mode 100644 blog/im-on-netlify/index.html create mode 100644 blog/index.html create mode 100644 blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/index.html create mode 100644 blog/mithriljs-esbuild-jsx/index.html create mode 100644 blog/modern-bundling-with-esbuild/index.html create mode 100644 blog/simple-state-management-in-mithriljs/index.html create mode 100644 blog/validating-checksum-on-windows/index.html create mode 100644 css/main.css create mode 100644 css/resume.css create mode 100644 img/blog/brew_candy/1.jpg create mode 100644 img/blog/brew_candy/2.jpg create mode 100644 img/blog/brew_candy/3.jpg create mode 100644 img/blog/brew_candy/4.jpg create mode 100644 img/blog/brew_candy/5.jpg create mode 100644 img/blog/brew_candy/6.jpg create mode 100644 img/blog/credential_helper/helper.jpg create mode 100644 img/blog/haxeflixel-bullet-timers/1.gif create mode 100644 img/blog/haxeflixel-bullet-timers/2.gif create mode 100644 img/favicon.png create mode 100644 img/me.jpg create mode 100644 img/spes.png create mode 100644 index.html create mode 100644 js/dark-mode-switch.min.js create mode 100644 resume/index.html create mode 100644 robots.txt create mode 100644 sitemap.xml diff --git a/404.html b/404.html new file mode 100644 index 0000000..8d02ed1 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + kevin f.

kevin f.

404

page not found

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..c13850a --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +kevinfiol.com \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..a2c4f84 --- /dev/null +++ b/about/index.html @@ -0,0 +1 @@ + about

kevin f.

me standing by a river

I'm a programmer currently working from home. I use this site as a personal pastebin of sorts. Additional miscellaneous pastes can be found on my gist page.

Aside from programming, I enjoy music, video games, and playing guitar.

\ No newline at end of file diff --git a/archive/index.html b/archive/index.html new file mode 100644 index 0000000..a2263fd --- /dev/null +++ b/archive/index.html @@ -0,0 +1 @@ + archive

kevin f.

\ No newline at end of file diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000..fb700f9 --- /dev/null +++ b/atom.xml @@ -0,0 +1,1237 @@ + + + kevin f. + + + Zola + 2021-10-20T00:00:00+00:00 + https://kevinfiol.com/atom.xml + + Modern bundling with esbuild + 2021-10-20T00:00:00+00:00 + 2021-10-20T00:00:00+00:00 + + https://kevinfiol.com/blog/modern-bundling-with-esbuild/ + <h1 id="modern-bundling-with-esbuild"><a class="zola-anchor" href="#modern-bundling-with-esbuild" aria-label="Anchor link for: modern-bundling-with-esbuild">#</a>Modern bundling with esbuild</h1> +<p>These days, you can get a pretty robust build setup for a modern browser app using just <a href="https://esbuild.github.io/">esbuild</a>. The benefits of using esbuild over rollup, webpack, or parcel are numerous, but the few that stand out to me are:</p> +<ul> +<li>esbuild ships as a static binary; in practice this means adding it as a dependency won't bloat your project with npm packages</li> +<li>that lack of npm packages also means less dependabot alerts, since the less dependencies your project relies on, the less likely it is to be vulnerable to security concerns</li> +<li>esbuild's bundle times are <em>much</em> faster than rollup/webpack/parcel</li> +<li>esbuild includes support for TypeScript and JSX transpilation</li> +</ul> +<p>That's a lot of bang for your buck for a single dev dependency. </p> +<h2 id="dead-simple-setup"><a class="zola-anchor" href="#dead-simple-setup" aria-label="Anchor link for: dead-simple-setup">#</a>Dead-simple setup</h2> +<p>First off, install esbuild in your project if you haven't already.</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">npm</span><span> install</span><span style="color:#bf616a;"> --save-dev</span><span> esbuild +</span></code></pre> +<p>You can use esbuild via CLI or its Node API. For tiny apps where your build config is practically non-existent, using the CLI is fine. You can simply define a script in your <code>package.json</code> file and be ready to go.</p> +<pre data-lang="json" style="background-color:#2b303b;color:#c0c5ce;" class="language-json "><code class="language-json" data-lang="json"><span>&quot;</span><span style="color:#a3be8c;">scripts</span><span>&quot;: { +</span><span> &quot;</span><span style="color:#a3be8c;">build</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">esbuild index.js --bundle --minify --outfile=./dist/app.js</span><span>&quot; +</span><span>} +</span></code></pre> +<p>Define a script like the one above, run <code>npm run build</code>, and your lightning-fast build is there, minified in all its glory. This isn't terribly different than what you can already do with webpack, but when was the last time you saw webpack's <a href="https://npm.anvaka.com/#/view/2d/webpack">dependency graph</a>? And that doesn't even include <a href="https://npm.anvaka.com/#/view/2d/webpack-cli">webpack-cli</a>. Not to rag on webpack; it is an immensely powerful tool that many great projects rely on, but unless you're already tangled in that web (heh), I'd suggest steering clear.</p> +<p>esbuild also includes a built-in watch mode. No extra plugins needed! Let's go ahead and define another script:</p> +<pre data-lang="json" style="background-color:#2b303b;color:#c0c5ce;" class="language-json "><code class="language-json" data-lang="json"><span>&quot;</span><span style="color:#a3be8c;">scripts</span><span>&quot;: { +</span><span> &quot;</span><span style="color:#a3be8c;">build</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">esbuild index.js --outfile=dist/app.js --bundle --minify</span><span>&quot;, +</span><span> &quot;</span><span style="color:#a3be8c;">dev</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">esbuild index.js --outfile=dist/app.js --bundle --sourcemap --watch</span><span>&quot; +</span><span>} +</span></code></pre> +<p>Make changes to <code>index.js</code> and you'll see that <code>dist/app.js</code> is re-bundled automatically. It's even got source map support! Alternatively, we could take things a step further and utilize esbuild's built-in server. Let's change the <code>dev</code> script a bit:</p> +<pre data-lang="json" style="background-color:#2b303b;color:#c0c5ce;" class="language-json "><code class="language-json" data-lang="json"><span>&quot;</span><span style="color:#a3be8c;">scripts</span><span>&quot;: { +</span><span> &quot;</span><span style="color:#a3be8c;">build</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">esbuild index.js --outfile=dist/app.js --bundle --minify</span><span>&quot;, +</span><span> &quot;</span><span style="color:#a3be8c;">dev</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">esbuild src/index.jsx --outfile=dist/app.js --servedir=dist --bundle</span><span>&quot; +</span><span>} +</span></code></pre> +<p>After running dev, you'll see in your terminal that a server has been started. Navigate to <code>localhost:8000</code> to see the contents of your <code>dist</code> folder hosted locally.</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">$</span><span> npm run dev +</span><span> +</span><span> &gt; Local: </span><span style="color:#bf616a;">http://127.0.0.1:8000/ +</span><span> &gt; Network: </span><span style="color:#bf616a;">http://192.168.1.12:8000/ +</span><span> &gt; Network: </span><span style="color:#bf616a;">http://172.11.100.1:8000/ +</span><span> &gt; Network: </span><span style="color:#bf616a;">http://192.168.1.3:8000/ +</span></code></pre> +<p>If you're wondering where your generated output files are, no worries: esbuild's serve mode serves the bundled files directly from memory. They are never written to your disk unless you intentionally omit the <code>servedir</code> variable.</p> +<h2 id="using-the-build-api"><a class="zola-anchor" href="#using-the-build-api" aria-label="Anchor link for: using-the-build-api">#</a>Using the Build API</h2> +<p>Configuring our buildstep via CLI flags can get unwieldy over time. With other bundlers, you get the benefit of config files, e.g., <code>rollup.config.js</code> or <code>webpack.config.js</code>. With esbuild, we can just use plain old Node scripts plus the existing Node APIs to configure our builds. Start by creating a new <code>.js</code> file under a directory for scripts, <code>scripts/build.js</code>. Then, change our existing <code>build</code> script in our <code>package.json</code>:</p> +<pre data-lang="json" style="background-color:#2b303b;color:#c0c5ce;" class="language-json "><code class="language-json" data-lang="json"><span>&quot;</span><span style="color:#a3be8c;">scripts</span><span>&quot;: { +</span><span> &quot;</span><span style="color:#a3be8c;">build</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">node ./scripts/build.js</span><span>&quot; +</span><span>} +</span></code></pre> +<p>This doesn't do anything yet, because <code>scripts/build.js</code> is empty. Let's fix that by translating our previous build CLI call to a Node script. That will look something like this:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#65737e;">// scripts/build.js +</span><span style="color:#b48ead;">import </span><span style="color:#bf616a;">esbuild </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">esbuild</span><span>&#39;; +</span><span style="color:#b48ead;">import </span><span>{ </span><span style="color:#bf616a;">resolve </span><span>} </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">path</span><span>&#39;; +</span><span> +</span><span style="color:#bf616a;">esbuild</span><span>.</span><span style="color:#8fa1b3;">bundle</span><span>({ +</span><span> format: &#39;</span><span style="color:#a3be8c;">iife</span><span>&#39;, +</span><span> entryPoints: [</span><span style="color:#8fa1b3;">resolve</span><span>(&#39;</span><span style="color:#a3be8c;">index.js</span><span>&#39;)], +</span><span> bundle: </span><span style="color:#d08770;">true</span><span>, +</span><span> outfile: </span><span style="color:#8fa1b3;">resolve</span><span>(&#39;</span><span style="color:#a3be8c;">dist/app.js</span><span>&#39;) +</span><span>}).</span><span style="color:#96b5b4;">catch</span><span>((</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>); +</span><span> process.</span><span style="color:#96b5b4;">exit</span><span>(</span><span style="color:#d08770;">1</span><span>); +</span><span>}); +</span></code></pre> +<p>Running <code>npm run build</code> should function the same as before, but now we have more control over our bundles! But what about our dev script? And what if we want to reduce code duplication? After all, <code>build</code> and <code>dev</code> are very similar with just a couple different options.</p> +<p>Let's create a new file in our scripts folder, called <code>scripts/bundle.js</code> that will contain the config that both <code>build.js</code> and <code>dev.js</code> will use.</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#65737e;">// scripts/bundle.js +</span><span style="color:#b48ead;">import </span><span style="color:#bf616a;">esbuild </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">esbuild</span><span>&#39;; +</span><span style="color:#b48ead;">import </span><span>{ </span><span style="color:#bf616a;">resolve </span><span>} </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">path</span><span>&#39;; +</span><span> +</span><span style="color:#b48ead;">export function </span><span style="color:#8fa1b3;">bundle</span><span>(</span><span style="color:#bf616a;">config </span><span>= {}) { +</span><span> </span><span style="color:#b48ead;">return </span><span style="color:#bf616a;">esbuild</span><span>.</span><span style="color:#8fa1b3;">build</span><span>({ +</span><span> format: &#39;</span><span style="color:#a3be8c;">iife</span><span>&#39;, +</span><span> entryPoints: [</span><span style="color:#8fa1b3;">resolve</span><span>(&#39;</span><span style="color:#a3be8c;">index.js</span><span>&#39;)], +</span><span> bundle: </span><span style="color:#d08770;">true</span><span>, +</span><span> outfile: </span><span style="color:#8fa1b3;">resolve</span><span>(&#39;</span><span style="color:#a3be8c;">dist/app.js</span><span>&#39;) +</span><span> ...</span><span style="color:#bf616a;">config +</span><span> }); +</span><span>} +</span></code></pre> +<p>As you see, <code>bundle.js</code> will contain all of our default configs. Let's refactor <code>scripts/build.js</code> to specifically create one minified build:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#65737e;">// scripts/build.js +</span><span style="color:#b48ead;">import </span><span>{ </span><span style="color:#bf616a;">bundle </span><span>} </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">./bundle.js</span><span>&#39;; +</span><span> +</span><span style="color:#8fa1b3;">bundle</span><span>({ minify: </span><span style="color:#d08770;">true </span><span>}) +</span><span> .</span><span style="color:#96b5b4;">then</span><span>(() </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">log</span><span>(&#39;</span><span style="color:#a3be8c;">Bundled!</span><span>&#39;); +</span><span> }) +</span><span> .</span><span style="color:#96b5b4;">catch</span><span>((</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>); +</span><span> process.</span><span style="color:#96b5b4;">exit</span><span>(</span><span style="color:#d08770;">1</span><span>); +</span><span> }); +</span></code></pre> +<p>Our build script should now function like before. Let's create <code>scripts/dev.js</code> now:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#65737e;">// scripts/dev.js +</span><span style="color:#b48ead;">import </span><span>{ </span><span style="color:#bf616a;">bundle </span><span>} </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">./bundle.js</span><span>&#39;; +</span><span> +</span><span style="color:#8fa1b3;">bundle</span><span>({ +</span><span> minify: </span><span style="color:#d08770;">false</span><span>, +</span><span> sourcemap: </span><span style="color:#d08770;">true</span><span>, +</span><span> watch: { +</span><span> </span><span style="color:#8fa1b3;">onRebuild</span><span>(</span><span style="color:#bf616a;">error</span><span>) { +</span><span> </span><span style="color:#b48ead;">if </span><span>(</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>); +</span><span> </span><span style="color:#b48ead;">else </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">log</span><span>(&#39;</span><span style="color:#a3be8c;">Bundled!</span><span>&#39;); +</span><span> } +</span><span> } +</span><span>}).</span><span style="color:#96b5b4;">catch</span><span>((</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>) +</span><span> process.</span><span style="color:#96b5b4;">exit</span><span>(</span><span style="color:#d08770;">1</span><span>); +</span><span>}); +</span></code></pre> +<p>Add the <code>dev</code> script to your <code>package.json</code>:</p> +<pre data-lang="json" style="background-color:#2b303b;color:#c0c5ce;" class="language-json "><code class="language-json" data-lang="json"><span>&quot;</span><span style="color:#a3be8c;">scripts</span><span>&quot;: { +</span><span> &quot;</span><span style="color:#a3be8c;">build</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">node ./scripts/build.js</span><span>&quot;, +</span><span> &quot;</span><span style="color:#a3be8c;">dev</span><span>&quot;: &quot;</span><span style="color:#a3be8c;">node ./scripts/dev.js</span><span>&quot; +</span><span>} +</span></code></pre> +<p>And now <code>npm run dev</code> will watch and rebundle your app on every file change.</p> +<h2 id="what-about-the-server"><a class="zola-anchor" href="#what-about-the-server" aria-label="Anchor link for: what-about-the-server">#</a>What about the server?</h2> +<p>You very well could use esbuild's &quot;serve&quot; mode in your <code>scripts/dev.js</code> script if you'd like to. You would have to adjust the scripts we've created so that &quot;dev&quot; mode uses <code>esbuild.serve</code> instead of <code>esbuild.build</code>. While I like that esbuild has a built-in server, it does not support live-reload, which is a nice feature to have. You could implement your own live reload using <code>esbuild.serve</code>, but a simpler solution would be to include some kind of server in our project as a dev dependency. I've found that <a href="https://github.com/nativew/serve">nativew/serve</a> was a fine candidate for this. At <a href="https://packagephobia.com/result?p=create-serve">18.7kb</a> with 0 dependencies, it was a guilt-free inclusion. Install with npm as normal.</p> +<p><strong>Update (12/18/2021):</strong> Since writing this article, I've published a fork of lukejacksonn's <a href="https://github.com/lukejacksonn/servor">servor</a> project titled <a href="https://github.com/kevinfiol/servbot">servbot</a>, which is smaller in scope and intended to be used with existing JS build tools. My move away from <strong>nativew/serve</strong> was motivated by its lack of SPA support. The instructions below have been updated for <strong>servbot</strong>:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">npm</span><span> install</span><span style="color:#bf616a;"> --save-dev</span><span> servbot +</span></code></pre> +<p>Now let's modify our <code>scripts/dev.js</code>:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#65737e;">// scripts/dev.js +</span><span style="color:#b48ead;">import </span><span style="color:#bf616a;">servbot </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">servbot</span><span>&#39;; +</span><span style="color:#b48ead;">import </span><span>{ </span><span style="color:#bf616a;">bundle </span><span>} </span><span style="color:#b48ead;">from </span><span>&#39;</span><span style="color:#a3be8c;">./bundle.js</span><span>&#39;; +</span><span> +</span><span style="color:#65737e;">// create server +</span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">server </span><span>= </span><span style="color:#8fa1b3;">servbot</span><span>({ +</span><span> root: &#39;</span><span style="color:#a3be8c;">dist</span><span>&#39;, +</span><span> reload: </span><span style="color:#d08770;">true</span><span>, +</span><span> fallback: &#39;</span><span style="color:#a3be8c;">index.html</span><span>&#39; </span><span style="color:#65737e;">// fallback to index.html for SPA routes +</span><span>}); +</span><span> +</span><span style="color:#65737e;">// start our server at localhost:8000 +</span><span style="color:#bf616a;">server</span><span>.</span><span style="color:#8fa1b3;">listen</span><span>(</span><span style="color:#d08770;">8000</span><span>); +</span><span> +</span><span style="color:#8fa1b3;">bundle</span><span>({ +</span><span> minify: </span><span style="color:#d08770;">false</span><span>, +</span><span> sourcemap: </span><span style="color:#d08770;">true</span><span>, +</span><span> watch: { +</span><span> </span><span style="color:#8fa1b3;">onRebuild</span><span>(</span><span style="color:#bf616a;">error</span><span>) { +</span><span> </span><span style="color:#b48ead;">if </span><span>(</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>); +</span><span> </span><span style="color:#b48ead;">else </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">log</span><span>(&#39;</span><span style="color:#a3be8c;">Bundled!</span><span>&#39;); +</span><span> </span><span style="color:#bf616a;">server</span><span>.</span><span style="color:#96b5b4;">reload</span><span>(); </span><span style="color:#65737e;">// &lt;-- This will live reload on every rebuild +</span><span> } +</span><span> } +</span><span>}).</span><span style="color:#96b5b4;">catch</span><span>((</span><span style="color:#bf616a;">error</span><span>) </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#ebcb8b;">console</span><span>.</span><span style="color:#96b5b4;">error</span><span>(</span><span style="color:#bf616a;">error</span><span>) +</span><span> process.</span><span style="color:#96b5b4;">exit</span><span>(</span><span style="color:#d08770;">1</span><span>); +</span><span>}); +</span></code></pre> +<p>Re-run <code>npm run dev</code> and we'll have our live-reloading dev server up:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">$</span><span> npm run dev +</span><span> +</span><span style="color:#bf616a;">[servbot]</span><span> Server started: http://localhost:8000 +</span></code></pre> +<h2 id="conclusion"><a class="zola-anchor" href="#conclusion" aria-label="Anchor link for: conclusion">#</a>Conclusion</h2> +<p>If for whatever reason you've made it this far and are not convinced and maybe want a more batteries-included solution, I highly recommend <a href="https://vitejs.dev/">Vite</a> from Vue.js creator, Evan You. Vite actually uses esbuild for its own development mode to bundle vendor packages. Otherwise, I hope this has encouraged you to dig deeper into esbuild and to not be afraid to get your hands dirty in writing custom Node scripts to do your bundling. Sometimes what webpack and rollup do under the hood can seem like black magic since it's all abstracted away from you, basking in the comfort of a small config json file at the root of your project. You can cut away at a lot of that cruft by using simpler tools like esbuild, and get perf benefits and a better understanding of your tooling to boot!</p> + + + + A minimal RSS Feed Reader + 2021-10-12T00:00:00+00:00 + 2021-10-12T00:00:00+00:00 + + https://kevinfiol.com/blog/a-minimal-rss-feed-reader/ + <h1 id="a-minimal-rss-feed-reader"><a class="zola-anchor" href="#a-minimal-rss-feed-reader" aria-label="Anchor link for: a-minimal-rss-feed-reader">#</a>A minimal RSS Feed Reader</h1> +<p><strong>TL;DR:</strong> Visit <a href="https://kevinfiol.com/reader/">kevinfiol.com/reader</a> for my new daily RSS reader, updated hourly.</p> +<p>Since mid-2020, I had been using <a href="https://www.inoreader.com/">Inoreader</a> as my main RSS/Atom feed reader. Inoreader offers a generous free tier, giving you a maximum of 150 feeds per account, as well as a bunch of QoL features like search, bookmarking, and a dashboard with reasonable amounts of customization. The free tier is ad-supported which is understandable. For the most part, the ads are unintrusive. Using an adblocker such as uBlock Origin ocassionally results in a popup reminder by Inoreader that their free tier is ad-supported, kindly asking you to disable your adblock.</p> +<p>Last year, I had also come across George Mandis' <a href="https://github.com/georgemandis/bubo-rss">Bubo Reader</a>, an &quot;irrationally minimalist, static RSS feed reader you can instantly deploy on Netlify, Glitch or your own server.&quot; George has a great introductory blogpost on his site <a href="https://george.mand.is/2019/11/introducing-bubo-rss-an-absurdly-minimalist-rss-feed-reader/">over here</a> which I recommend reading if the description I gave seemed interesting at all. TL;DR: Bubo Reader is nothing but a static .html page that gets rebuilt and redeployed via a Node.js script. The script will be run at a set interval, fetch the latest posts from feeds (defined in a .json file), and <em>boom</em> you got a new <code>index.html</code> file with a couple <code>&lt;ul&gt;</code> lists of the latest articles.</p> +<p>When I first checked out George's <a href="https://bubo-rss-demo.netlify.app/">demo</a> for Bubo Reader, I simultaneously thought &quot;wow this is cool!&quot; and also &quot;wow this is crappy!&quot;. My latter thought stemmed from the fact that the demo is really <em>irrationally</em> minimal.</p> +<p>The genius of Bubo Reader is summarized in a few points that I realized slowly over the past year:</p> +<ul> +<li><strong>A feed reader doesn't need to be updated too frequently.</strong> Inoreader will refresh your feeds and even update the page dynamically if there are any new items. But why the desperation for new content to consume? I realized that Inoreader enabled my bad habit of seeking the dopamine boost that comes with getting something &quot;new.&quot; You know what I'm talking about -- it's the same reason why immediately after closing your reddit tab, your first instinct is to Ctrl+T and go back to reddit. It's an unhealthy craving because there is always some new article to skim, comments section to meander about, or funny gif to laugh at instead of doing something productive. In George's Bubo Reader example, the feed is updated every 15 minutes. Personally, I find that 1 hour is the perfect inverval.</li> +<li><strong>A feed reader doesn't really need a bookmarks manager.</strong> I had quit Pocket and given up on Instapaper. I thought maybe my feed reader can be my bookmarks tool. The issue was that Inoreader is clumsy to bookmark articles or content that you find <em>outside</em> of your feed, and I wouldn't be surprised if other readers had the same issue. In addition, every modern browser has a bookmarking feature, and inevitably, your bookmarks will become split between your browser's built in bookmarks, and your feed reader's bookmarks. I gave up on this division. Firefox now handles all of my bookmarks and it syncs between devices using a Firefox Account.</li> +<li><strong>A feed reader doesn't need to be able to scrape article contents.</strong> Probably 6 times out of 10, Inoreader would mess up the content scraping anyway, which in the age of SPAs and paywalls, is not surprising. Even when it scraped things properly, I still prefered to read the article on the site it originated on with Firefox's reader mode.</li> +<li><strong>A feed reader doesn't need client-side JavaScript.</strong> Shocking, I know. There are certainly some niceties that can only be had with JavaScript, but I found George's use of <code>details</code> and <code>summary</code> elements to be exactly what I needed.</li> +<li><strong>I don't need a mobile app.</strong> I don't like staring at my phone for long periods of time. In general, I think it's not a great habit. While Bubo Reader can be viewed in a browser, I don't use it that way. If I did, I could easily put some time in to make my version mobile responsive.</li> +</ul> +<p>Last month, I <a href="https://github.com/kevinfiol/reader">forked</a> Bubo Reader and made several personalized changes and improvements. In addition to a dark mode, I took inspiration from the <a href="https://john-doe.neocities.org/">John Doe</a> webpage that was a bit popular on Hacker News some time ago, using the CSS <code>:target</code> selector to create a &quot;sidebar&quot; for my reader. In addition, I adjusted the build script to sort feeds by the most latest updated.</p> +<p>The end result can be found at <a href="https://kevinfiol.com/reader/">kevinfiol.com/reader</a>.</p> + + + + Mithril.js + esbuild + JSX + 2021-03-18T00:00:00+00:00 + 2021-03-18T00:00:00+00:00 + + https://kevinfiol.com/blog/mithriljs-esbuild-jsx/ + <h1 id="mithril-js-esbuild-jsx"><a class="zola-anchor" href="#mithril-js-esbuild-jsx" aria-label="Anchor link for: mithril-js-esbuild-jsx">#</a>Mithril.js + esbuild + JSX</h1> +<p><strong>EDIT 7/18/2022:</strong> esbuild has since added support for <a href="https://github.com/evanw/esbuild/issues/1217">string literals as JSX fragments</a>, meaning much of what I wrote below is now unnecessary. To use JSX with Mithril and esbuild, all you need to do is set <code>jsxFragment: '&quot;[&quot;'</code> in your esbuild config. See <a href="https://github.com/kevinfiol/newt/blob/master/scripts/bundle.js">here</a> for an example.</p> +<p>I recently bootstrapped a <a href="https://mithril.js.org">Mithril.js</a> project using <a href="https://esbuild.github.io/">esbuild</a> for my bundling purposes. If you don't already know, esbuild is a next-gen bundler written in Go by <a href="https://github.com/evanw">Evan Wallace</a> that is magnitudes faster than rollup, webpack, or parcel (all of which are written in JS/TS).</p> +<p>esbuild comes with JSX support out of the box. While I don't normally use JSX, I decided to create a demo for <a href="https://mithril.netlify.app">mithril.netlify.app</a> showing off that JSX works just fine in a Mithril application. However, I ran into one major issue -- esbuild wasn't compiling JSX fragments correctly when providing <code>m.fragment</code> as the JSX fragment pragma. </p> +<p>After some digging around, I found <a href="https://gitter.im/mithriljs/mithril.js?at=5b98ce1c51a02e2a261ac656">this comment</a> by <a href="https://github.com/isiahmeadows">Claudia Meadows</a>.</p> +<p>In short, there's no support for Mithril fragments as Components currently. esbuild (as well as transpilers like Sucrase) compiles JSX using the provided jsx pragma + jsx fragment method in the form of:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#bf616a;">React</span><span>.</span><span style="color:#96b5b4;">createElement</span><span>(</span><span style="color:#bf616a;">React</span><span>.</span><span style="color:#bf616a;">Fragment</span><span>, </span><span style="color:#d08770;">null</span><span>, &quot;</span><span style="color:#a3be8c;">Stuff</span><span>&quot;); +</span></code></pre> +<p>See <a href="https://esbuild.github.io/api/#jsx-fragment">here</a> for more details.</p> +<p>Which in Mithril's case, can't work with <code>m.fragment</code>. Following Claudia's advice, defining a simple Fragment component as so worked for me. I just put this in my <code>index.js</code> file near the top:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#bf616a;">m</span><span>.</span><span style="color:#bf616a;">Fragment </span><span>= { </span><span style="color:#8fa1b3;">view</span><span>: </span><span style="color:#bf616a;">vnode </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">vnode</span><span>.</span><span style="color:#bf616a;">children </span><span>}; +</span></code></pre> +<p>Then I just set <code>jsxFragment</code> to <code>m.Fragment</code> instead of <code>m.fragment</code> in my esbuild config and voilà! Fragments work as you'd expect.</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">var </span><span style="color:#bf616a;">JSX </span><span>= { +</span><span> </span><span style="color:#8fa1b3;">view</span><span>: </span><span style="color:#b48ead;">function</span><span>() { +</span><span> </span><span style="color:#b48ead;">return </span><span>( +</span><span> &lt;&gt; +</span><span> &lt;h2&gt;</span><span style="color:#bf616a;">JSX</span><span>&lt;/</span><span style="color:#bf616a;">h2</span><span>&gt; +</span><span> &lt;p&gt;</span><span style="color:#bf616a;">You could use JSX with Mithril</span><span>.</span><span style="color:#bf616a;">js </span><span style="color:#b48ead;">as </span><span>well.&lt;/p&gt; +</span><span> &lt;p&gt;</span><span style="color:#bf616a;">Be aware that this requires a build</span><span>-</span><span style="color:#bf616a;">step</span><span>.&lt;/</span><span style="color:#bf616a;">p</span><span>&gt; +</span><span> &lt;</span><span style="color:#bf616a;">p style</span><span>={{ color: &#39;</span><span style="color:#a3be8c;">red</span><span>&#39; }}&gt; +</span><span> </span><span style="color:#bf616a;">Attributes work </span><span style="color:#b48ead;">as </span><span>expected. +</span><span> &lt;/</span><span style="color:#bf616a;">p</span><span>&gt; +</span><span> &lt;p&gt;</span><span style="color:#bf616a;">This application uses </span><span>&lt;</span><span style="color:#bf616a;">a href</span><span>=&quot;</span><span style="color:#a3be8c;">https://esbuild.github.io/</span><span>&quot;&gt;</span><span style="color:#bf616a;">esbuild</span><span>&lt;/</span><span style="color:#bf616a;">a</span><span>&gt; </span><span style="color:#bf616a;">to convert JSX</span><span>.&lt;/</span><span style="color:#bf616a;">p</span><span>&gt; +</span><span> &lt;/&gt; +</span><span> ); +</span><span> } +</span><span>}; +</span></code></pre> +<p>For reference, you can see my full esbuild config and my bundle scripts <a href="https://github.com/kevinfiol/mithril-pres/tree/master/scripts">here</a>. Direct any questions to <a href="mailto:me@kevinfiol.com">me@kevinfiol.com</a> and I'd be happy to answer them.</p> + + + + Binding Mouse Button + Scroll Wheel to System Volume Control + 2021-01-22T00:00:00+00:00 + 2021-01-22T00:00:00+00:00 + + https://kevinfiol.com/blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/ + <h1 id="binding-mouse-button-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux"><a class="zola-anchor" href="#binding-mouse-button-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux" aria-label="Anchor link for: binding-mouse-button-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux">#</a>Binding Mouse Button + Scroll Wheel to System Volume Control (on Windows or Ubuntu Linux)</h1> +<h2 id="some-context"><a class="zola-anchor" href="#some-context" aria-label="Anchor link for: some-context">#</a>Some Context</h2> +<p>About six years ago, I purchased a ROCCAT Savu gaming mouse to serve as my daily driver. The mouse itself was mediocre, but the bundled Windows-only software included a feature that I enabled on a whim that allowed the user to hold a button on the side of the mouse and use the scroll wheel to control the system volume. I didn't think much of the feature. A couple years later when my Savu finally died, I replaced it with a Logitech G203, only to find that controlling the system volume with the scroll wheel had become second nature.</p> +<h2 id="windows"><a class="zola-anchor" href="#windows" aria-label="Anchor link for: windows">#</a>Windows</h2> +<p>Fortunately, Logitech's software included ways to bind keys to mouse buttons, and using an <a href="https://gist.github.com/kevinfiol/e7a915a3ed6f1f3e6d5f745633b61617">Autohotkey script</a> to fake an <code>F13</code> key press, I was able to bind my mouse button to a non-existent key. Afterwards, I simply launch another <a href="https://gist.github.com/kevinfiol/9214d92033fc6a6784a607c97aa50838">Autohotkey script</a> on system startup to have system-wide volume control bound to my mouse.</p> +<h2 id="linux"><a class="zola-anchor" href="#linux" aria-label="Anchor link for: linux">#</a>Linux</h2> +<p>The state of consumer-grade peripheral software on Linux is getting better by the day, but still severely lacking compared to Windows. For the most part, you should be fine with <a href="https://github.com/libratbag/piper/">Piper</a> for your gaming mouse needs on Linux. However, Piper itself is insufficient for our goals.</p> +<p>In the end, I was able to achieve similar functionality to the Autohotkey script above using <code>xbindkeys</code> and <code>xdotool</code>, both of which you can install using your package manager:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#65737e;"># Ubuntu +</span><span style="color:#bf616a;">sudo</span><span> apt update +</span><span style="color:#bf616a;">sudo</span><span> apt install xbindkeys xdotool +</span></code></pre> +<p>Create <code>~/.xbindkeysrc</code> in your home directory and paste:</p> +<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span>&quot;xdotool keydown ctrl&quot; +</span><span> b:8 +</span><span> +</span><span>&quot;xdotool keyup ctrl&quot; +</span><span> release + control + b:8 +</span><span> +</span><span>&quot;pactl -- set-sink-volume 0 -5%&quot; +</span><span> control + b:5 +</span><span> +</span><span>&quot;pactl -- set-sink-volume 0 +5%&quot; +</span><span> control + b:4 +</span></code></pre> +<p>Run <code>killall xbindkeys &amp;&amp; xbindkeys</code> to restart xbindkeys.</p> +<p>A few things to note:</p> +<ul> +<li> +<p>You may find xbindkeys keycodes using <code>xbindkeys --key</code> or mouse button codes using <code>xev</code>.</p> +</li> +<li> +<p>I am binding the side button on my mouse <code>b:8</code> to the Control key on my keyboard using <code>xdotool</code>. This may or may not work for you if you already bind your Control key to something else. What this means in practice is that holding your mouse button is essentially like holding the Control key.</p> +<ul> +<li>This is a particular point of frustration on Linux, as it seems xbindkeys is very selective of what keys can be used as modifiers. The manpage lists <code>Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock), Mod3 (CapsLock), Mod4 (Super), Mod5 (Scroll)</code> as available modifiers.</li> +</ul> +</li> +<li> +<p>The commands <code>pactl -- set-sink-volume 0 -5%</code> and <code>pactl -- set-sink-volume 0 +5%</code> assume you are using the PulseAudio sound driver. These commands may not work for you if you're using the ALSA sound driver, in which case, you may use commands like <code>amixer -q sset Master 5%-</code> and <code>amixer -q sset Master 5%+</code> respectively. If neither of these work, try <code>amixer -q -D pulse sset Master 5%+</code> and <code>amixer -q -D pulse sset Master 5%-</code>, or research how to control your master volume by command line on your system.</p> +</li> +</ul> +<h2 id="update-or-how-to-bind-the-super-key-03-08-2022"><a class="zola-anchor" href="#update-or-how-to-bind-the-super-key-03-08-2022" aria-label="Anchor link for: update-or-how-to-bind-the-super-key-03-08-2022">#</a>Update, or, how to bind the Super key (03/08/2022)</h2> +<p>A little over a year later, I discovered <a href="https://github.com/hanschen/ksuperkey">ksuperkey</a>, and further <a href="https://github.com/jixunmoe/xfce-superkey">xfce-superkey</a> (I am an XFCE user). Last year, I avoided binding to the Super key because more often than not, this will interfere with existing keybinds in DEs where the Super key opens the Applications menu. This is the case in XFCE where the Super key is used to open the Whisker Menu. While you can simply rebind your Applications shortcut to something other than <code>Super</code>, I personally find it hard to deprogram this instinct. The above utilities allow you to keep <code>Super</code> as your sole shortcut to <code>Applications</code> but also allow you to use it in other keyboard combinations. <strong>Note:</strong> if you use XFCE, you still have to unbind Whisker Menu from <code>Super</code> in your Keyboard settings -- don't worry though, you'll still be able to use <code>Super</code> after running <code>xfce-superkey</code>. After installing the above utility, I changed my <code>.xbindkeysrc</code> to:</p> +<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span>&quot;xdotool keydown Super_R keydown ctrl&quot; +</span><span> b:8 +</span><span> +</span><span>&quot;xdotool keyup Super_R keyup ctrl&quot; +</span><span> release + Mod4 + control + b:8 +</span><span> +</span><span>&quot;pactl -- set-sink-volume 0 -5%&quot; +</span><span> Mod4 + control + b:4 +</span><span> +</span><span>&quot;pactl -- set-sink-volume 0 +5%&quot; +</span><span> Mod4 + control + b:5 +</span></code></pre> +<h2 id="helpful-related-reading"><a class="zola-anchor" href="#helpful-related-reading" aria-label="Anchor link for: helpful-related-reading">#</a>Helpful related reading</h2> +<ul> +<li><a href="https://linux.die.net/man/1/xbindkeys">Xbindkeys manpage</a></li> +<li><a href="https://wiki.archlinux.org/index.php/Xbindkeys">ArchWiki article on xbindkeys</a></li> +<li><a href="https://askubuntu.com/questions/627555/how-to-map-modifiers-e-g-ctrl-to-mouse-thumb-buttons-using-xbindkeys">AskUbuntu question with helpful suggestions</a></li> +<li><a href="https://web.archive.org/web/20200107023614/https://blog.hanschen.org/2009/10/13/mouse-shortcuts-with-xbindkeys/">Helpful blog article on using mouse buttons with xbindkeys</a></li> +</ul> + + + + Getting rid of the Credential Helper Selector on Git for Windows + 2020-09-18T00:00:00+00:00 + 2020-09-18T00:00:00+00:00 + + https://kevinfiol.com/blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/ + <h1 id="getting-rid-of-the-credential-helper-selector-on-git-for-windows"><a class="zola-anchor" href="#getting-rid-of-the-credential-helper-selector-on-git-for-windows" aria-label="Anchor link for: getting-rid-of-the-credential-helper-selector-on-git-for-windows">#</a>Getting rid of the Credential Helper Selector on Git for Windows</h1> +<p>If you've ever been tormented by the following pop-up when trying to push or pull from an HTTPS Git origin:</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;credential_helper&#x2F;helper.jpg" alt="Windows Credential Helper Selector" /> +<p>There may be a way out of your misery. Initially I thought that if I added my Git credentials for the respective remote origin directly into my <code>.gitconfig</code> file, Git for Windows would stop prompting me every time I wanted to push or pull. Nope. And even more painful is that <strong>for some unknown reason</strong> the pop-up would appear <em>twice</em> no matter what -- even if I selected <code>Always use this from now on</code>.</p> +<h2 id="how-to"><a class="zola-anchor" href="#how-to" aria-label="Anchor link for: how-to">#</a>How to</h2> +<p>First off, you can simply choose to not install the Helper Selector by unchecking a box during the installation process of Git for Windows. This is assuming you are installing Git in this manner, and also that you are willing to reinstall Git for Windows entirely or re-run the installer. But what if this doesn't apply to you?</p> +<p>I installed Git using <a href="https://scoop.sh">scoop.sh</a>, so my installation process took place entirely via CLI. However, I guess this option also assumes you want the Credential Helper since I don't remember ever specifying I wanted it. So what now?</p> +<h3 id="unset-the-credential-helper-system-wide"><a class="zola-anchor" href="#unset-the-credential-helper-system-wide" aria-label="Anchor link for: unset-the-credential-helper-system-wide">#</a>Unset the credential helper system-wide</h3> +<p>A simple way to disable any default system-wide helper is to run the following command</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> config</span><span style="color:#bf616a;"> --system --unset</span><span> credential.helper +</span></code></pre> +<h3 id="setting-your-credentials-on-an-individual-repository-basis"><a class="zola-anchor" href="#setting-your-credentials-on-an-individual-repository-basis" aria-label="Anchor link for: setting-your-credentials-on-an-individual-repository-basis">#</a>Setting your credentials on an individual repository basis</h3> +<p>Now that you've disabled the system-wide helper, you can manage your credentials on a repository-basis. <a href="https://git-scm.com/docs/gitcredentials#_avoiding_repetition">Git provides two built-in solutions</a>. I chose to use the <code>store</code> helper on my repos.</p> +<p>Navigate to your repository and run:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> config credential.helper store +</span></code></pre> +<p>This will then prompt you for your remote credentials. Now try running a <code>git pull</code> and marvel at not having to be bothered by a pop-up!</p> +<h2 id="why-are-you-using-windows"><a class="zola-anchor" href="#why-are-you-using-windows" aria-label="Anchor link for: why-are-you-using-windows">#</a>Why are you using Windows?</h2> +<p>I never claimed to make wise decisions. But yes, this issue is nonexistent on my Ubuntu-based laptop, and probably on your Macbook Pro too.</p> + + + + Making your numeric keypad work on a Xubuntu 20.04 VM (VirtualBox) + 2020-08-18T00:00:00+00:00 + 2020-08-18T00:00:00+00:00 + + https://kevinfiol.com/blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/ + <h1 id="making-your-numeric-keypad-work-on-a-xubuntu-20-04-vm-virtualbox"><a class="zola-anchor" href="#making-your-numeric-keypad-work-on-a-xubuntu-20-04-vm-virtualbox" aria-label="Anchor link for: making-your-numeric-keypad-work-on-a-xubuntu-20-04-vm-virtualbox">#</a>Making your numeric keypad work on a Xubuntu 20.04 VM (VirtualBox)</h1> +<p>I fought with this for a good 2 hours before I finally got it working. First step is to install <code>numlockx</code>, if it's not already installed:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> apt update +</span><span style="color:#bf616a;">sudo</span><span> apt install numlockx +</span></code></pre> +<p>Enable your Num Lock in your VM:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">numlockx</span><span> on +</span></code></pre> +<p>Now in Xubuntu, go to your Whisker Menu (or whatever launcher/menu you're using) and navigate to <code>Settings -&gt; Accessibility -&gt; Mouse</code> and disable <code>Use mouse emulation</code>. </p> +<p>If you're on vanilla Ubuntu (GNOME), or a DE other than XFCE, you may be looking for a menu called <code>Universal Access</code>, wherein you'll want to disable a feature called <code>Control the pointer using the keypad</code>.</p> +<p>You may need to log out and back in to confirm this works.</p> + + + + Hosting Your Invidious Instance on a VPS + 2020-08-02T00:00:00+00:00 + 2020-08-02T00:00:00+00:00 + + https://kevinfiol.com/blog/hosting-your-invidious-instance-on-a-vps/ + <h1 id="hosting-your-invidious-instance-on-a-vps"><a class="zola-anchor" href="#hosting-your-invidious-instance-on-a-vps" aria-label="Anchor link for: hosting-your-invidious-instance-on-a-vps">#</a>Hosting Your Invidious Instance on a VPS</h1> +<p><strong>Update 2022: This post is likely outdated. I recommend checking the official installation instructions found on the <a href="https://github.com/iv-org/invidious">Github repo</a>.</strong></p> +<p><a href="https://github.com/iv-org/invidious">Invidious</a> is an alternative front-end to YouTube with an emphasis on privacy and low system resource usage. It is wonderful free software that not only does away with the annoyances of Google's bloated, ad-ridden video site, but also adds plenty of QoL features.</p> +<p>This weekend I spent some time setting up my own instance of Invidious to share with friends. Here's a quick rundown on what I did:</p> +<h2 id="1-pick-a-server"><a class="zola-anchor" href="#1-pick-a-server" aria-label="Anchor link for: 1-pick-a-server">#</a>1. Pick a server</h2> +<p>I went with the $5/mo Nanode over at <a href="https://linode.com">Linode</a>. It's packing a grand total 1GB of RAM, a single CPU, and 25GB of storage. More than enough to run our instance, but not enough to actually compile the damn codebase (we'll get to this in a bit).</p> +<h2 id="2-get-a-domain-or-not"><a class="zola-anchor" href="#2-get-a-domain-or-not" aria-label="Anchor link for: 2-get-a-domain-or-not">#</a>2. Get a domain (or not)</h2> +<p>I wanted a simple and short domain name for myself and my buddies to be able to use instead of typing an IP address in the address bar every time. Getting a domain isn't terribly important especially if you're hosting this just for your own use.</p> +<p>For the record, I used Namecheap to purchase my domain. I found <a href="https://web.archive.org/web/20200803032836/https://merelycurious.me/post/connecting-namecheap-domain-to-linode">this guide</a> particularly helpful in setting up my domain with my Linode VPS.</p> +<h2 id="3-pick-a-linux-distribution-for-your-vps"><a class="zola-anchor" href="#3-pick-a-linux-distribution-for-your-vps" aria-label="Anchor link for: 3-pick-a-linux-distribution-for-your-vps">#</a>3. Pick a Linux Distribution for your VPS</h2> +<p>Again, not terribly important what you pick. If you plan to use <a href="https://github.com/tmiland/Invidious-Updater">Invidious Updater</a>, know that it only supports Debian, Ubuntu, CentOS, Fedora, and Arch. Originally I attempted to use it on an Alpine Linux installation, but the script promptly failed.</p> +<p>Also, the Invidious docs only provide installation instructions for Arch Linux and Debian/Ubuntu. I went with <strong>Arch Linux</strong>.</p> +<h2 id="4-pick-how-you-re-going-to-install-invidious"><a class="zola-anchor" href="#4-pick-how-you-re-going-to-install-invidious" aria-label="Anchor link for: 4-pick-how-you-re-going-to-install-invidious">#</a>4. Pick how you're going to install Invidious</h2> +<p>The <a href="https://github.com/iv-org/invidious/blob/master/README.md">README</a> provides 3 options:</p> +<ul> +<li>Install Invidious manually</li> +<li>Use Invidious Updater (linked above)</li> +<li>Use Docker</li> +</ul> +<p>All options are simple and easy to do. I went with <strong>1</strong>.</p> +<h2 id="5-install-it"><a class="zola-anchor" href="#5-install-it" aria-label="Anchor link for: 5-install-it">#</a>5. Install it!</h2> +<p>Install dependencies:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> pacman</span><span style="color:#bf616a;"> -Syu</span><span> base-devel shards crystal librsvg postgresql nano +</span></code></pre> +<p>Create Invidious user:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">useradd -m</span><span> invidious +</span><span style="color:#bf616a;">sudo -i -u</span><span> invidious +</span><span style="color:#bf616a;">git</span><span> clone https://github.com/iv-org/invidious +</span><span style="color:#96b5b4;">exit +</span></code></pre> +<p>Setup Postgres:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> systemctl enable postgresql +</span><span style="color:#bf616a;">sudo</span><span> systemctl start postgresql +</span><span style="color:#bf616a;">sudo -i -u</span><span> postgres +</span><span style="color:#bf616a;">psql -c </span><span>&quot;</span><span style="color:#a3be8c;">CREATE USER kemal WITH PASSWORD &#39;kemal&#39;;</span><span>&quot; </span><span style="color:#65737e;"># Change &#39;kemal&#39; here to a stronger password, and update `password` in config/config.yml +</span><span style="color:#bf616a;">createdb -O</span><span> kemal invidious +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home +</span><span style="color:#96b5b4;">exit +</span></code></pre> +<p>I was only able to run the following commands as root. Make sure the postgresql service is running:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/channels.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/videos.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/channel_videos.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/users.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/session_ids.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/nonces.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/annotations.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/playlists.sql +</span><span style="color:#bf616a;">psql</span><span> invidious kemal &lt; /home/invidious/invidious/config/sql/playlist_videos.sql +</span></code></pre> +<p>The next steps to install Invidious involve compiling the project code. On my measly 1GB of RAM, the compilation choked. In order to prepare for this, I used <code>systemd-swap</code> to create a swapfile. There are other ways to create a swapfile or a swap partition on Linux. See: <a href="https://wiki.archlinux.org/index.php/Swap">Swap on Arch Linux Wiki</a>. I found using <code>systemd-swap</code> the simplest. <a href="https://web.archive.org/web/20200803033711/https://ricostacruz.com/til/after-installing-arch-linux">This guide by Ricosta Cruz</a> was very helpful.</p> +<p>I did as follows:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> pacman</span><span style="color:#bf616a;"> -Syu</span><span> systemd-swap +</span></code></pre> +<p>Then I edited the config file to enable <code>zram_enabled=1</code> and <code>swapfc_enabled=1</code>:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> nano /etc/systemd/swap.conf +</span></code></pre> +<p>Then enable <code>systemd-swap.service</code>:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> systemctl enable</span><span style="color:#bf616a;"> --now</span><span> systemd-swap +</span></code></pre> +<p>Finally add the swapfile to <code>/etc/fstab</code> so it'll be used on every boot. Add this: <code>/swapfile none swap defaults 0 0</code> to the end of the file:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> nano /etc/fstab +</span></code></pre> +<p>Finally, you won't run out of RAM to setup Invidious. Let's go back and finally install it:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo -i -u</span><span> invidious +</span><span style="color:#96b5b4;">cd</span><span> invidious +</span><span style="color:#bf616a;">shards</span><span> update &amp;&amp; </span><span style="color:#bf616a;">shards</span><span> install +</span><span style="color:#bf616a;">crystal</span><span> build src/invidious.cr</span><span style="color:#bf616a;"> --release +</span><span style="color:#bf616a;">./invidious </span><span style="color:#65737e;"># test compiled binary, stop with ctrl c +</span><span style="color:#96b5b4;">exit +</span></code></pre> +<p>It's installed! Now some administrative stuff. Let's setup the systemd service so that Invidious runs in the background:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service +</span><span style="color:#bf616a;">sudo</span><span> systemctl enable invidious.service +</span><span style="color:#bf616a;">sudo</span><span> systemctl start invidious.service +</span></code></pre> +<p>And lets rotate the logs so that they don't balloon in size:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> echo &quot;</span><span style="color:#a3be8c;">/home/invidious/invidious/invidious.log { +</span><span style="color:#a3be8c;">rotate 4 +</span><span style="color:#a3be8c;">weekly +</span><span style="color:#a3be8c;">notifempty +</span><span style="color:#a3be8c;">missingok +</span><span style="color:#a3be8c;">compress +</span><span style="color:#a3be8c;">minsize 1048576 +</span><span style="color:#a3be8c;">}</span><span>&quot; | </span><span style="color:#bf616a;">tee</span><span> /etc/logrotate.d/invidious.logrotate +</span><span> +</span><span style="color:#bf616a;">sudo</span><span> chmod 0644 /etc/logrotate.d/invidious.logrotate +</span></code></pre> +<p>You now got a running Invidious instance! Navigate to your VPS's IP address on port 3000 to see it up and running. Type <code>http://&lt;VPS_IP_ADDRESS&gt;:3000</code> into your browser's address bar, and get to watching some videos!</p> +<h2 id="6-optional-setting-up-nginx"><a class="zola-anchor" href="#6-optional-setting-up-nginx" aria-label="Anchor link for: 6-optional-setting-up-nginx">#</a>6. (Optional) Setting up nginx</h2> +<p>When I bought my domain, I intended to use it for more than just Invidious. In my case, I wanted a subdomain to serve as my Invidious URL, while I can use the main domain to host a &quot;hub&quot; of sorts to other services.</p> +<p>So for example:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">http://tube.mydomain.com</span><span> -&gt; Invidious Service +</span><span style="color:#bf616a;">http://mydomain.com</span><span> -&gt; Homepage +</span></code></pre> +<p>I was able to do this easily using nginx reverse proxies. Here are the steps I took.</p> +<p>Install nginx:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">pacman -Syu</span><span> nginx-mainline +</span></code></pre> +<p>Enable and start nginx service:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">sudo</span><span> systemctl enable nginx.service +</span><span style="color:#bf616a;">sudo</span><span> systemctl start nginx.service +</span></code></pre> +<p>Configure <code>/etc/nginx/nginx.conf</code>. Add this additional <code>server</code> entry somewhere under <code>http</code>:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">http </span><span>{ +</span><span> ... +</span><span> +</span><span> server { +</span><span> server_name tube.mydomain.com; +</span><span> location / { +</span><span> proxy_pass http://127.0.0.1:3000; +</span><span> } +</span><span> } +</span><span> +</span><span> ... +</span><span>} +</span></code></pre> +<p>Next addition is completely optional if you want your root domain to point to a kind of homepage. This is what I wanted, so I'm putting it here partly to document it for myself. I changed the existing, default <code>http.server</code> entry to point to custom <code>html</code> I had written:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">http </span><span>{ +</span><span> server { +</span><span> server_name mydomain.com +</span><span> +</span><span> location / { +</span><span> root /sites/mydomain.com +</span><span> index index.html index.htm +</span><span> } +</span><span> +</span><span> ... </span><span style="color:#65737e;"># the rest remained unchanged from the default +</span><span> } +</span><span> +</span><span> ... +</span><span>} +</span></code></pre> +<h2 id="7-optional-enabling-https"><a class="zola-anchor" href="#7-optional-enabling-https" aria-label="Anchor link for: 7-optional-enabling-https">#</a>7. (Optional) Enabling HTTPS</h2> +<p>I used <a href="https://certbot.eff.org/">EFF's Certbot for this</a>. It is painfully easy to use. Note that if you choose to, it <em>will</em> make modifications to your <code>nginx.conf</code> for you.</p> +<p>You must enable an option in Invidious's config if you want assets to only be transferred via HTTPS. More information can be found <a href="https://github.com/iv-org/invidious/wiki/Configuration">here</a>.</p> +<hr /> +<p>That's all. Hopefully you found this helpful. If you got any questions, shoot me an <a href="mailto:me@kevinfiol.com">email</a>. And always, if you liked this post, hit Like and Subscribe! (haha).</p> + + + + Books + 2020-07-02T00:00:00+00:00 + 2020-07-02T00:00:00+00:00 + + https://kevinfiol.com/blog/books/ + <h1 id="books"><a class="zola-anchor" href="#books" aria-label="Anchor link for: books">#</a>Books</h1> +<p>A collection of (free) web books, guides, and references by category that I've found over the years. Suggestions welcome.</p> +<h2 id="general-programming"><a class="zola-anchor" href="#general-programming" aria-label="Anchor link for: general-programming">#</a>General Programming</h2> +<ul> +<li><a href="https://learnxinyminutes.com/">Learn X in Y Minutes</a> +<ul> +<li><em>A collection of &quot;tours&quot; for every popular programming language. Intended for those with programming experience to quickly learn new languages.</em></li> +</ul> +</li> +<li><a href="https://www.craftinginterpreters.com/contents.html">Crafting Interpreters</a> +<ul> +<li><em>A book on designing your own language interpreter. By Robert Nystrom, creator of programming languages such as Wren, Finch, and Magpie.</em></li> +</ul> +</li> +<li><a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html">Structure and Interpretation of Computer Programs</a> +<ul> +<li><em>A legendary text book. Not an easy read. Also see the <a href="https://sicp.comp.nus.edu.sg/">JavaScript Adaptation</a>.</em></li> +</ul> +</li> +<li><a href="https://natureofcode.com/book/">Nature of Code</a> +<ul> +<li><em>&quot;This book focuses on a range of programming strategies and techniques behind computer simulations of natural systems, from elementary concepts in mathematics and physics to more advanced algorithms that enable sophisticated visual results.&quot;</em></li> +</ul> +</li> +</ul> +<h2 id="c-c"><a class="zola-anchor" href="#c-c" aria-label="Anchor link for: c-c">#</a>C/C++</h2> +<ul> +<li><a href="https://www.buildyourownlisp.com/">Build Your Own Lisp</a> +<ul> +<li><em>&quot;If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you.&quot;</em></li> +</ul> +</li> +<li><a href="https://viewsourcecode.org/snaptoken/kilo/index.html">Build Your Own Text Editor</a> +<ul> +<li><em>A walkthrough tutorial on how to build a text editor with C.</em></li> +</ul> +</li> +<li><a href="https://beej.us/guide/bgc/html/split/">Beej's Guide to C Programming</a> +<ul> +<li><em>&quot;This is a rather comprehensive guide to C for folks who already know how to program in another language. The first half of the book is written in a tutorial style, while the second half is a reference section complete with examples (inspired by the incomparable Turbo C Bible). The goal is to keep this up-to-date with the latest C standards.&quot;</em></li> +</ul> +</li> +<li><a href="https://cppbyexample.com/">C++ By Example</a> +<ul> +<li><em>&quot;Here you will find clear and up to date C++ code examples with concise and straightforward explanations.&quot;</em></li> +</ul> +</li> +</ul> +<h2 id="network-programming"><a class="zola-anchor" href="#network-programming" aria-label="Anchor link for: network-programming">#</a>Network Programming</h2> +<ul> +<li><a href="https://beej.us/guide/bgnet/html/">Beej's Guide to Network Programming</a> +<ul> +<li><em>&quot;This document should give the average competent C programmer the edge s/he needs to get a grip on this networking noise.&quot;</em></li> +</ul> +</li> +<li><a href="https://iximiuz.com/en/posts/computer-networking-101/">Ethernet and IP Networking 101</a> +<ul> +<li><em>A software engineer's attempt at understanding and explaining networking in basic terms.</em></li> +</ul> +</li> +</ul> +<h2 id="html-css"><a class="zola-anchor" href="#html-css" aria-label="Anchor link for: html-css">#</a>HTML/CSS</h2> +<ul> +<li><a href="https://marksheet.io/">MarkSheet</a> +<ul> +<li><em>An introduction to creating webpages with HTML &amp; CSS.</em></li> +</ul> +</li> +<li><a href="https://learn.shayhowe.com/html-css/">Learn to Code HTML &amp; CSS</a> +<ul> +<li><em>Yet another introduction to creating webpage with HTML &amp; CSS. Great for beginners. Good alternative to the famous Jon Duckett book.</em></li> +</ul> +</li> +<li><a href="https://learn.shayhowe.com/advanced-html-css/">Learn to Code Advanced HTML &amp; CSS</a> +<ul> +<li><em>Shay Howe's second online book on HTML &amp; CSS. Logical next step if you finished the book directly above.</em></li> +</ul> +</li> +<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML">Mozilla Developer Network: HTML</a> +<ul> +<li><em>Good guide, but may be a bit dense. Great reference material.</em></li> +</ul> +</li> +<li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS">Mozilla Developer Network: CSS</a> +<ul> +<li><em>Like the HTML guide. Great reference material.</em></li> +</ul> +</li> +<li><a href="https://thomasorus.com/html-tips.html">HTML Tips</a> +<ul> +<li><em>A collection of beginner and advanced tips on HTML &amp; CSS by <a href="https://github.com/thomasorus">Thomasorus</a>.</em></li> +</ul> +</li> +<li><a href="https://learn-the-web.algonquindesign.ca/topics/html-semantics-cheat-sheet/">HTML semantics cheat sheet</a> +<ul> +<li><em>A semantic HTML cheat sheet. Use semantic HTML to make your sites more accessible and consistent in functionality across devices.</em></li> +</ul> +</li> +</ul> +<h2 id="javascript"><a class="zola-anchor" href="#javascript" aria-label="Anchor link for: javascript">#</a>JavaScript</h2> +<ul> +<li><a href="https://leanpub.com/javascriptallongesix/read">JavaScript Allongé</a> +<ul> +<li><em>A guide to Functional Programming, using JavaScript.</em></li> +</ul> +</li> +<li><a href="https://mostly-adequate.gitbooks.io/mostly-adequate-guide/">Mostly Adequate Guide to Functional Programming</a> +<ul> +<li><em>Yet another guide to Functional Programming, using JavaScript.</em></li> +</ul> +</li> +<li><a href="https://github.com/getify/You-Dont-Know-JS">You Don't Know JavaScript</a> +<ul> +<li><em>A series of books focusing on the underlying core mechanisms of JavaScript.</em></li> +</ul> +</li> +<li><a href="https://github.com/getify/Functional-Light-JS">Functional Light JS</a> +<ul> +<li><em>A pragmatic look at Functional Programming with JavaScript. By Kyle Simpson, writer of the You Don't Know JavaScript series.</em></li> +</ul> +</li> +<li><a href="https://randycoulman.com/blog/categories/thinking-in-ramda/">Thinking in Ramda</a> +<ul> +<li><em>A brief, accessible and effective introduction to functional programming using the Ramda JavaScript library. A series of blog posts.</em></li> +</ul> +</li> +<li><a href="https://exploringjs.com/impatient-js/index.html">JavaScript for Impatient Programmers</a> +<ul> +<li><em>A modern guide to JavaScript for those with existing programming knowledge.</em></li> +</ul> +</li> +<li><a href="https://exploringjs.com/deep-js/">Deep JavaScript</a> +<ul> +<li><em>More JavaScript knowledge by the great Dr. Axel Rauschmayer.</em></li> +</ul> +</li> +<li><a href="https://github.com/ryanmcdermott/clean-code-javascript">Clean Code JavaScript</a> +<ul> +<li><em>A guide to the software engineering principles of Robert C. Martin, using JavaScript.</em></li> +</ul> +</li> +<li><a href="https://github.com/leonardomso/33-js-concepts">33 JavaScript Concepts</a> +<ul> +<li><em>Essential concepts for the experienced JavaScript developer.</em></li> +</ul> +</li> +<li><a href="http://jsforcats.com/">JavaScript for Cats</a> +<ul> +<li><em>A short, beginner-friendly intro to programming with JavaScript.</em></li> +</ul> +</li> +<li><a href="https://eloquentjavascript.net/">Eloquent JavaScript</a> +<ul> +<li><em>More comprehensive introduction to JavaScript &amp; General Programming.</em></li> +</ul> +</li> +<li><a href="https://javascript.info/">The Modern JavaScript Tutorial</a> +<ul> +<li><em>Comprehensive JavaScript reference.</em></li> +</ul> +</li> +<li><a href="https://addyosmani.com/resources/essentialjsdesignpatterns/book/">Learning JavaScript Design Patterns</a> +<ul> +<li><em><strong>Update 2022</strong>: This book's site has now been updated to a new, stylish guide website (patterns.dev) with a React slant. I am not a fan of the heavier website, nor the unagnostic React approach. The classic collection of design patterns for JavaScript can still be found on <a href="https://www.patterns.dev/posts/classic-design-patterns/">this page</a> or better yet at the <a href="https://archive.ph/93tHk">archive link</a>.</em></li> +</ul> +</li> +<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">Mozilla Developer Network: JavaScript</a> +<ul> +<li><em>The gold standard of JavaScript references.</em></li> +</ul> +</li> +<li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript">MDN: A re-introduction to JavaScript</a> +<ul> +<li><em>A great introduction to JavaScript even for those with programming experience outside of JavaScript.</em></li> +</ul> +</li> +<li><a href="https://htmldom.dev/">How to manage HTML DOM with vanilla JavaScript only</a> +<ul> +<li><em>As the title implies, a collection of &quot;common tasks of managing HTML DOM with vanilla JavaScript.</em></li> +</ul> +</li> +<li><a href="http://book.mixu.net/node/single.html">Mixu's Node book</a> +<ul> +<li><em>A dated (2012), but beginner friendly introduction to server-side JavaScript with Node.js.</em></li> +</ul> +</li> +</ul> +<h2 id="c"><a class="zola-anchor" href="#c" aria-label="Anchor link for: c">#</a>C#</h2> +<ul> +<li><a href="https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/">Intro to C#</a> +<ul> +<li><em>An introduction to programming using the C# language.</em></li> +</ul> +</li> +<li><a href="https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/">Tour of C#</a> +<ul> +<li><em>A brief crash course on C# intended for those with some programming experience.</em></li> +</ul> +</li> +</ul> +<h2 id="php"><a class="zola-anchor" href="#php" aria-label="Anchor link for: php">#</a>PHP</h2> +<ul> +<li><a href="https://phpapprentice.com/">PHP Apprentice</a> +<ul> +<li><em>A beginner-friendly introduction to programming in PHP with best practices in mind.</em></li> +</ul> +</li> +<li><a href="https://phptherightway.com/">PHP: The Right Way</a> +<ul> +<li><em>Less of a tutorial, more of a collection of PHP best practices.</em></li> +</ul> +</li> +<li><a href="https://paragonie.com/blog/2017/12/2018-guide-building-secure-php-software">2018 Guide to building secure PHP</a> +<ul> +<li><em>A guide to common PHP vulnerabilities.</em></li> +</ul> +</li> +</ul> +<h2 id="python"><a class="zola-anchor" href="#python" aria-label="Anchor link for: python">#</a>Python</h2> +<ul> +<li><a href="https://automatetheboringstuff.com/">Automate The Boring Stuff With Python</a> +<ul> +<li><em>An excellent and pragmatic introduction to programming using Python 3. Perfect for beginners.</em></li> +</ul> +</li> +<li><a href="https://python101.pythonlibrary.org/">Python 101</a> +<ul> +<li><em>A more general introduction to programming with Python. Good for beginners.</em></li> +</ul> +</li> +<li><a href="https://python.swaroopch.com/">A Byte of Python</a> +<ul> +<li><em>Another intro to programming using Python for those who know &quot;how to save text files.&quot; Beginner-friendly.</em></li> +</ul> +</li> +<li><a href="https://diveintopython3.net/">Dive Into Python 3</a> +<ul> +<li><em>As the title suggests, this is a deep dive into Python 3, highlighting differences from Python 2. Good reference.</em></li> +</ul> +</li> +</ul> +<h2 id="rust"><a class="zola-anchor" href="#rust" aria-label="Anchor link for: rust">#</a>Rust</h2> +<ul> +<li><a href="https://doc.rust-lang.org/book/">The Rust Programming Language</a> +<ul> +<li><em>Official Rust Book.</em></li> +</ul> +</li> +<li><a href="https://doc.rust-lang.org/stable/rust-by-example/">Rust By Example</a> +<ul> +<li><em>An official collection of runnable examples in Rust.</em></li> +</ul> +</li> +<li><a href="https://rust-lang-nursery.github.io/rust-cookbook/intro.html">Rust Cookbook</a> +<ul> +<li><em>&quot;A collection of simple examples that demonstrate good practices to accomplish common programming tasks, using the crates of the Rust ecosystem.&quot;</em></li> +</ul> +</li> +</ul> +<h2 id="elixir"><a class="zola-anchor" href="#elixir" aria-label="Anchor link for: elixir">#</a>Elixir</h2> +<ul> +<li><a href="https://elixirschool.com/en/">Elixir School</a> +<ul> +<li><em>Comprehensive reference for Elixir.</em></li> +</ul> +</li> +</ul> +<h2 id="haskell"><a class="zola-anchor" href="#haskell" aria-label="Anchor link for: haskell">#</a>Haskell</h2> +<ul> +<li><a href="http://learnyouahaskell.com/">Learn You A Haskell for Great Good</a> +<ul> +<li><em>An introduction to Functional Programming with Haskell. Aimed at those with previous programming knowledge.</em></li> +</ul> +</li> +</ul> +<h2 id="ml"><a class="zola-anchor" href="#ml" aria-label="Anchor link for: ml">#</a>ML</h2> +<ul> +<li><a href="http://www.cs.cornell.edu/courses/cs3110/2019sp/textbook/">Functional Programming in OCaml</a> +<ul> +<li><em>An introduction to Functional Programming with OCaml, adapted from Cornell CS3110.</em></li> +</ul> +</li> +</ul> +<h2 id="racket"><a class="zola-anchor" href="#racket" aria-label="Anchor link for: racket">#</a>Racket</h2> +<ul> +<li><a href="https://beautifulracket.com/">Beautiful Racket</a> +<ul> +<li><em>&quot;An introduction to language-oriented programming using Racket.&quot;</em></li> +</ul> +</li> +</ul> +<h2 id="game-development"><a class="zola-anchor" href="#game-development" aria-label="Anchor link for: game-development">#</a>Game Development</h2> +<ul> +<li><a href="https://cs50.harvard.edu/games/">Harvard CS50 Introduction to Game Development</a> +<ul> +<li><em>A free course with lectures, slides, and source code on developing games using Love2D.</em></li> +</ul> +</li> +<li><a href="https://gameprogrammingpatterns.com/contents.html">Game Programming Patterns</a> +<ul> +<li><em>A collection of game development-related design patterns. By the great Robert Nystrom.</em></li> +</ul> +</li> +<li><a href="https://github.com/adnzzzzZ/blog/issues/30">BYTEPATH</a> +<ul> +<li><em>A book published as a series of Github issues. Guides the user in creating a game using Lua and Love2D, with plenty of exercises. Intended for those with programming experience.</em></li> +</ul> +</li> +<li><a href="https://sheepolution.com/learn/book/contents">How to LÖVE</a> +<ul> +<li><em>A gentle introduction to programming <strong>and</strong> game development using Lua and the Love2D game library.</em></li> +</ul> +</li> +</ul> +<h2 id="game-design"><a class="zola-anchor" href="#game-design" aria-label="Anchor link for: game-design">#</a>Game Design</h2> +<ul> +<li><a href="https://www.riotgames.com/en/urf-academy/curriculum-guide">Riot Games Game Design Curriculum</a> +<ul> +<li><em>&quot;Riot Games’ Game Design Curriculum is an entry-level course that teaches high school students the fundamental elements of game design using a framework and interactive workshops created by our own game designers.&quot;</em></li> +</ul> +</li> +</ul> +<h2 id="math"><a class="zola-anchor" href="#math" aria-label="Anchor link for: math">#</a>Math</h2> +<ul> +<li><a href="http://calculusmadeeasy.org/">Calculus Made Easy</a> +<ul> +<li><em>An accessible and pragmatic introduction to Calculus. Originally published in 1910 by Silvanus P. Thompson.</em></li> +</ul> +</li> +</ul> +<h2 id="electrical-engineering"><a class="zola-anchor" href="#electrical-engineering" aria-label="Anchor link for: electrical-engineering">#</a>Electrical Engineering</h2> +<ul> +<li> +<p><a href="https://www.allaboutcircuits.com/textbook/">All About Circuits</a></p> +<ul> +<li><em>&quot;Starts from the very basic fundamentals of electricity, and builds up to quite complex circuits and their workings.&quot;</em></li> +</ul> +</li> +<li> +<p><a href="https://archive.md/WTsUc">All About Electronic Circuits for Kids</a></p> +<ul> +<li><em>Not a book, but a short introduction to Electronic Circuits for kids, along with a collection of useful links accessible to young learners.</em></li> +</ul> +</li> +</ul> +<h2 id="literature"><a class="zola-anchor" href="#literature" aria-label="Anchor link for: literature">#</a>Literature</h2> +<ul> +<li> +<p><a href="https://standardebooks.org/ebooks/">Standard E-Books</a></p> +<ul> +<li><em>A collection of literature in the public domain, available in multiple formats, with standardized and readable typography.</em></li> +</ul> +</li> +<li> +<p><a href="http://www.hplovecraft.com/writings/texts/">Electronic Texts of H.P. Lovecraft</a></p> +<ul> +<li><em>Collecton of HP Lovecraft writings. A browser plugin or feature to improve readability is recommended (e.g. Firefox Reader Mode).</em></li> +</ul> +</li> +</ul> +<h2 id="cooking"><a class="zola-anchor" href="#cooking" aria-label="Anchor link for: cooking">#</a>Cooking</h2> +<ul> +<li><a href="https://en.wikibooks.org/wiki/Cookbook:Table_of_Contents">The Wikimedia Cookbook</a> +<ul> +<li><em>A collection of recipes from a number of nationalities and cultures. Editable open-content.</em></li> +</ul> +</li> +</ul> +<h2 id="tech-interview-prep"><a class="zola-anchor" href="#tech-interview-prep" aria-label="Anchor link for: tech-interview-prep">#</a>Tech Interview Prep</h2> +<ul> +<li><a href="https://www.techinterviewhandbook.org/software-engineering-interview-guide/">Tech Interview Handbook</a></li> +<li><a href="https://www.frontendinterviewhandbook.com/introduction/">Front End Interview Handbook</a></li> +<li><a href="https://www.techinterviewhandbook.org/grind75">Grind 75</a> +<ul> +<li><em>Not a book. This is a customizable study plan for grinding Leetcode problems.</em></li> +</ul> +</li> +</ul> +<h2 id="misc"><a class="zola-anchor" href="#misc" aria-label="Anchor link for: misc">#</a>Misc.</h2> +<ul> +<li><a href="https://www.gutenberg.org/">Project Gutenberg</a> +<ul> +<li><em>An online library of over 60,000 public domain books, ranging on topics from literature, to cookbooks, and history.</em></li> +</ul> +</li> +<li><a href="https://en.wikibooks.org/wiki/Main_Page">Wikibooks</a> +<ul> +<li><em>As the title suggests, these are open-content wiki-like textbooks on a myriad of subjects.</em></li> +</ul> +</li> +</ul> + + + + I'm on Netlify + 2020-01-29T00:00:00+00:00 + 2020-01-29T00:00:00+00:00 + + https://kevinfiol.com/blog/im-on-netlify/ + <h1 id="i-m-on-netlify"><a class="zola-anchor" href="#i-m-on-netlify" aria-label="Anchor link for: i-m-on-netlify">#</a>I'm on Netlify</h1> +<p>First of all, happy birthday to my big bro! He's 29 today. Wishing him good fortune, good health, good food, etc.</p> +<p>On topic: I had been using Github Pages as my homepage solution for years now. Six years to be exact, which means since I was a senior finishing my undergrad. One of the reasons I began using it was that it was one of the only (if not, most popular) freely available static-site hosting solutions, and incredibly developer friendly. The same cannot be said in the year 2020.</p> +<p>Update: As of May 2021, I am back to Github Pages, being deployed via Github Actions. My reasoning for switching back was some inherent latency I discovered while using pages deployed on Netlify. Github Pages is snappier, in my experience.</p> + + + + Hard Symlinks on Windows + 2019-08-05T00:00:00+00:00 + 2019-08-05T00:00:00+00:00 + + https://kevinfiol.com/blog/hard-symlinks-on-windows/ + <h1 id="hard-symlinks-on-windows"><a class="zola-anchor" href="#hard-symlinks-on-windows" aria-label="Anchor link for: hard-symlinks-on-windows">#</a>Hard Symlinks on Windows</h1> +<p>Posting this here to remind me.</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">mklink</span><span> /H link.exe C:</span><span style="color:#96b5b4;">\t</span><span>ool</span><span style="color:#96b5b4;">\b</span><span>in</span><span style="color:#96b5b4;">\o</span><span>riginal.exe +</span></code></pre> + + + + Simple State Management in Mithril.js + 2019-07-31T00:00:00+00:00 + 2019-07-31T00:00:00+00:00 + + https://kevinfiol.com/blog/simple-state-management-in-mithriljs/ + <h1 id="simple-state-management-in-mithril-js"><a class="zola-anchor" href="#simple-state-management-in-mithril-js" aria-label="Anchor link for: simple-state-management-in-mithril-js">#</a>Simple State Management in Mithril.js</h1> +<p><a href="https://mithril.js.org">Mithril.js</a> is a lightweight JavaScript framework that has become a staple in my development stack after I discovered it two years ago. At the time, I was looking for a simpler, zero-dependency alternative to <a href="https://reactjs.org/">React.js</a> that could help me learn modern JavaScript UI development without needing to simultaneously learn and understand various build tools and framework plugins.</p> +<p>I've since learned React and have come to appreciate it for its influence on modern web development. However, I find that Mithril, a framework that sits at half the size of React whilst containing more features, has remained my go-to.</p> +<h2 id="using-simple-variables"><a class="zola-anchor" href="#using-simple-variables" aria-label="Anchor link for: using-simple-variables">#</a>Using simple variables</h2> +<p>When it comes to state management, Mithril is as unopinionated as they come. You can use Redux, Mobx, Cerebral, some implementation of the SAM pattern, or best of all -- just a plain ol' JavaScript object! Mithril comes with a global, auto-redraw system. The virtual DOM created by Mithril will diff against and synchronize the DOM whenever changes are made to your data layer. Most commonly, the redraws are triggered after an event handler defined in your Mithril application is called. But you can also manually trigger a DOM update with <code>m.redraw</code>.</p> +<p>What this means in practice is that you are free to structure your data however you'd like, and Mithril takes care of the rest. Below is an example of a simple Counter application written with Mithril:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">let </span><span style="color:#bf616a;">count </span><span>= </span><span style="color:#d08770;">0</span><span>; +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">Counter </span><span>= { +</span><span> </span><span style="color:#8fa1b3;">view</span><span>: () </span><span style="color:#b48ead;">=&gt; +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">div</span><span>&#39;, +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">h1</span><span>&#39;, &#39;</span><span style="color:#a3be8c;">Counter</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">p</span><span>&#39;, </span><span style="color:#bf616a;">count</span><span>), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { </span><span style="color:#8fa1b3;">onclick</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">count </span><span>+= </span><span style="color:#d08770;">1 </span><span>}, &#39;</span><span style="color:#a3be8c;">+</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { </span><span style="color:#8fa1b3;">onclick</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">count </span><span>-= </span><span style="color:#d08770;">1 </span><span>}, &#39;</span><span style="color:#a3be8c;">-</span><span>&#39;) +</span><span> ) +</span><span>}; +</span><span> +</span><span style="color:#bf616a;">m</span><span>.</span><span style="color:#8fa1b3;">mount</span><span>(document.body, </span><span style="color:#bf616a;">Counter</span><span>); +</span></code></pre> +<p><a href="https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J5YxAAR0ArgwkBeCQAYA3AB00GoXEkBBAA76FE4BokSAbhBgB3RBIAUASgUA+M+YlYHAcgAmEBY+FB6eXr6EAIzBEj4AwrSyjABOPk4haGHm3j76MTIM6aGeOQBG0sTE9DHAEvTUUBDUANb2zm5SiXIA1IqREuyx3WkZWeE+5ZXVFCZ1aA1NrY4u8q6dSRIAtH0DMz6bacVOGqzqmmhY+FhdxA5+tNTSOAz4pbR+AJ4zBvpOKpQgOAwWDUYgQegIHiRABMiGhAA5NkpEEo2BwQJgcHh8NQ4AIaPRGMweGwALpURpoZqQ1AYrh4LAQYiEZLQAHSZLkHgkYj6OCIAD0Atk+maAHMcbQsALGczWVAAALQ-BKfAAZhlTJZ0CuEDQ+H4AOIH303EB1FZ+lErFJrCAA">Live Example</a></p> +<p>Our state is just a single primitive variable! For small applications, simple widgets or one-off UI components, the above solution is largely sufficient. What's important about implementing your state management solution is to understand that there is no silver bullet. You will be able to predict your needs more accurately as you work across multiple projects and grow organically. <a href="https://redux.js.org/">Redux</a> is a brilliant solution for modern UI state management, but the 9/10 times I have attempted to use it out of a desire to do things &quot;the right way&quot;, it was absolute overkill. I advise reading <a href="https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367">this blog post</a> by Dan Abramov, the creator of Redux.</p> +<h2 id="using-pojos-for-state-actions"><a class="zola-anchor" href="#using-pojos-for-state-actions" aria-label="Anchor link for: using-pojos-for-state-actions">#</a>Using POJOs for state &amp; actions</h2> +<p>While the above solution is simple and likely sufficient for small use-cases, it introduces one problem - we are modifying the state directly from within the view. It won't take long before this approach proves unwieldy, and you're scanning your templates trying to find where you wrote the logic that is altering your state in (potentially) unpredictable ways.</p> +<p>We can introduce indirection and a more versatile state container using plain JavaScript objects. Our <code>Counter</code> component becomes more terse, yet more expressive:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">const </span><span style="color:#bf616a;">state </span><span>= { count: </span><span style="color:#d08770;">0 </span><span>}; +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">actions </span><span>= { +</span><span> </span><span style="color:#8fa1b3;">increment</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>+= </span><span style="color:#d08770;">1</span><span>, +</span><span> </span><span style="color:#8fa1b3;">decrement</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>-= </span><span style="color:#d08770;">1 +</span><span>}; +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">Counter </span><span>= { +</span><span> </span><span style="color:#8fa1b3;">view</span><span>: () </span><span style="color:#b48ead;">=&gt; +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">div</span><span>&#39;, +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">h1</span><span>&#39;, &#39;</span><span style="color:#a3be8c;">Counter</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">p</span><span>&#39;, </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count</span><span>), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">increment </span><span>}, &#39;</span><span style="color:#a3be8c;">+</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">decrement </span><span>}, &#39;</span><span style="color:#a3be8c;">-</span><span>&#39;) +</span><span> ) +</span><span>}; +</span><span> +</span><span style="color:#bf616a;">m</span><span>.</span><span style="color:#8fa1b3;">mount</span><span>(document.body, </span><span style="color:#bf616a;">Counter</span><span>); +</span></code></pre> +<p><a href="https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4hcYgAIJGRpIC8k4JLoBXBokkAGSawDcAHTRHxUjNWIR6cBUqOTJENNQBOMHBskAKAJQKAfNLEsjD4agySANSKAIwU9pIAJjCu7iKavgFBIWG06lIAtLFG+kYm1lIAwnnCLrbACQBuEDAA7hl+8v4JDlheAOSJEI398WgOE5J9-YQxo5L91fkwLv0+Y5O9AwAO8zKMufnrPRPTAEaqxMT088r01FAQ1ADWmuaW1vhOqR5S7AuRNYbTbnS7XNC3ST3R4vN4WKxoOD4ZI-ES6CgLAprE4+EqGYxoLD4LA1YheRK0aiqX74M60RIATwxS1qPj0lBAcBgsHh1jwWkQWgKMQA7IgAMwAJjYHBAmBweDCcAENHojGYPDYAF0qI80M8EChOAqeFgIMRCC5oBzVC5yDwSMRtnBEAB6V3qbbPADmuSwrrNFqtUAAApL8Fp8OKA+bLdBiU58PwOcQGdtuJzXBBtqJWFrWEA">Live Example</a></p> +<h2 id="using-factory-functions-to-reproduce-state-actions"><a class="zola-anchor" href="#using-factory-functions-to-reproduce-state-actions" aria-label="Anchor link for: using-factory-functions-to-reproduce-state-actions">#</a>Using factory functions to reproduce state &amp; actions</h2> +<p>As your application grows in size, it might be preferable that your state and actions are easily testable and replicable from the beginning. Further, instead of relying on lexical scoping for your actions to have access to your state, we can use a combination of dependency injection and closures so that an instance of your actions will always directly reference a specific state object. We can easily achieve this with factory functions that provide your initial state and actions that directly reference a single state object.</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">State </span><span>= () </span><span style="color:#b48ead;">=&gt; </span><span>({ count: </span><span style="color:#d08770;">0 </span><span>}); +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">Actions </span><span>= </span><span style="color:#bf616a;">state </span><span style="color:#b48ead;">=&gt; </span><span>({ +</span><span> </span><span style="color:#8fa1b3;">increment</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>+= </span><span style="color:#d08770;">1</span><span>, +</span><span> </span><span style="color:#8fa1b3;">decrement</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>-= </span><span style="color:#d08770;">1 +</span><span>}); +</span></code></pre> +<p>From there, it is dead simple to reproduce your state and actions objects respectively:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">const </span><span style="color:#bf616a;">state </span><span>= </span><span style="color:#8fa1b3;">State</span><span>(); +</span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">actions </span><span>= </span><span style="color:#8fa1b3;">Actions</span><span>(</span><span style="color:#bf616a;">state</span><span>); +</span></code></pre> +<p>Passing these to a Mithril component is trivial using the <code>attrs</code> property (near-equivalent to <code>props</code> in React) and object destructuring. Notice that our Counter component remains virtually unchanged:</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">const </span><span style="color:#bf616a;">Counter </span><span>= { +</span><span> </span><span style="color:#8fa1b3;">view</span><span>: ({ </span><span style="color:#bf616a;">attrs</span><span>: { </span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions </span><span>} }) </span><span style="color:#b48ead;">=&gt; +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">div</span><span>&#39;, +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">h1</span><span>&#39;, &#39;</span><span style="color:#a3be8c;">Counter</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">p</span><span>&#39;, </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count</span><span>), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">increment </span><span>}, &#39;</span><span style="color:#a3be8c;">+</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">decrement </span><span>}, &#39;</span><span style="color:#a3be8c;">-</span><span>&#39;) +</span><span> ) +</span><span>}; +</span><span> +</span><span style="color:#bf616a;">m</span><span>.</span><span style="color:#8fa1b3;">mount</span><span>(document.body, { +</span><span> </span><span style="color:#8fa1b3;">view</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#8fa1b3;">m</span><span>(</span><span style="color:#bf616a;">Counter</span><span>, { </span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions </span><span>}) +</span><span>}); +</span></code></pre> +<p><a href="https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4hcYgAIAysQyNJAXkkAKAJRKAfKuCS6AVwaJJABkms1AbgA6aW+KkBBasQj04SyRPkwtO25KSEGjUAE4wOEaqGora3oz4BgySANTKAIwUAZIAJjBhESLG6n7xMIm0hlIAtBm2FjZ2Ie5SZYGesj7qjQ6SGC5uaB7Kzq7uKmVWtvYtkgDClcKhnsDZAG4QMADuxbryxKFwxrplFH0D7ubmMZrZgVgqAOQ5EGuPWWjt7Q+PhOnvkkeCyqMFCjzUHy+9yeAAcAWUKlUIXdvk8AEb6YjEegA3T0ahQCDUADWxn6YyG+GCBUiUnYgJS4MhUJ+GKxOLOeJChJJZIulLyNJE5jOj2q4JRanqjVsWHwWEWxBUOVo1H0tPwaNoOQAnpz1psdtE-A9gUtOV45IwzuTBh4LPUrJQQHAYLB+QgeOkAMyIABMAFY2BwQJgcHhEnABDR6IxmDw2ABdKiEtDEz2oUNcPBYCDEQihaDO-Shcg8EjEGFHAD01cMMOJAHMKlhq7n84WoAABP34Ez4b1tvMF6Dy4L4fjO4g6mHcF1hCAw0SsROsIA">Live Example</a></p> +<p>(P.S. Credit goes to <a href="https://github.com/porsager">porsager</a> who shared this brilliant solution in the Mithril.js Gitter, nicknamed &quot;Mitosis&quot;, named after the equally awesome <a href="http://meiosis.js.org/">Meiosis Pattern by foxdonut</a>). <strong>This is my preferred approach to state management in Mithril.</strong> Passing your state and actions to child components would work as you'd expect. Simply pass your state and actions objects further down as <code>attrs</code>, or more wisely, be selective of what you choose to expose to child components.</p> +<h2 id="factory-functions-with-stateless-components"><a class="zola-anchor" href="#factory-functions-with-stateless-components" aria-label="Anchor link for: factory-functions-with-stateless-components">#</a>Factory functions with stateless components</h2> +<p>You could also take an approach where your application is composed of solely stateless components. That is, every component is a pure, deterministic function. <a href="https://github.com/JorgeBucaran/hyperapp">Hyperapp</a> is a JavaScript framework that does not allow for local state in components. Instead, every component returns a portion of your UI that reflects the global state. While I highly recommend checking out Hyperapp (it's only 1kb gzipped!), this post is about Mithril, and you can use a similar approach with Mithril.</p> +<pre data-lang="js" style="background-color:#2b303b;color:#c0c5ce;" class="language-js "><code class="language-js" data-lang="js"><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">State </span><span>= () </span><span style="color:#b48ead;">=&gt; </span><span>({ count: </span><span style="color:#d08770;">0 </span><span>}); +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">Actions </span><span>= </span><span style="color:#bf616a;">state </span><span style="color:#b48ead;">=&gt; </span><span>({ +</span><span> </span><span style="color:#8fa1b3;">increment</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>+= </span><span style="color:#d08770;">1</span><span>, +</span><span> </span><span style="color:#8fa1b3;">decrement</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>-= </span><span style="color:#d08770;">1 +</span><span>}); +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">Counter </span><span>= (</span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions</span><span>) </span><span style="color:#b48ead;">=&gt; +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">div</span><span>&#39;, +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">h1</span><span>&#39;, &#39;</span><span style="color:#a3be8c;">Counter</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">p</span><span>&#39;, </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count</span><span>), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">increment </span><span>}, &#39;</span><span style="color:#a3be8c;">+</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">decrement </span><span>}, &#39;</span><span style="color:#a3be8c;">-</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">Child</span><span>(</span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions</span><span>) +</span><span> ); +</span><span> +</span><span style="color:#b48ead;">const </span><span style="color:#8fa1b3;">Child </span><span>= (</span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions</span><span>) </span><span style="color:#b48ead;">=&gt; +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">div</span><span>&#39;, +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">h2</span><span>&#39;, &#39;</span><span style="color:#a3be8c;">Child</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">p</span><span>&#39;, </span><span style="color:#bf616a;">state</span><span>.</span><span style="color:#bf616a;">count </span><span>* </span><span style="color:#d08770;">2</span><span>), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">increment </span><span>}, &#39;</span><span style="color:#a3be8c;">+</span><span>&#39;), +</span><span> </span><span style="color:#8fa1b3;">m</span><span>(&#39;</span><span style="color:#a3be8c;">button</span><span>&#39;, { onclick: </span><span style="color:#bf616a;">actions</span><span>.</span><span style="color:#bf616a;">decrement </span><span>}, &#39;</span><span style="color:#a3be8c;">-</span><span>&#39;), +</span><span> ); +</span><span> +</span><span style="color:#bf616a;">m</span><span>.</span><span style="color:#8fa1b3;">mount</span><span>(document.body, () </span><span style="color:#b48ead;">=&gt; </span><span>{ +</span><span> </span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">state </span><span>= </span><span style="color:#8fa1b3;">State</span><span>(); +</span><span> </span><span style="color:#b48ead;">const </span><span style="color:#bf616a;">actions </span><span>= </span><span style="color:#8fa1b3;">Actions</span><span>(</span><span style="color:#bf616a;">state</span><span>); +</span><span> +</span><span> </span><span style="color:#b48ead;">return </span><span>{ </span><span style="color:#8fa1b3;">view</span><span>: () </span><span style="color:#b48ead;">=&gt; </span><span style="color:#8fa1b3;">Counter</span><span>(</span><span style="color:#bf616a;">state</span><span>, </span><span style="color:#bf616a;">actions</span><span>) }; +</span><span>}); +</span></code></pre> +<p><a href="https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4hcYgAIAysQyNJAXkkAKAJRKAfKuCS6AVwaJJABkms1AbgA6aW+KkBBasQj04SyRPkwtO25KSEGjUAE4wOEaqGora3oz4BgySANTKAIwUAZIAJjBhESLG6n7xMIm0hlIAtBm2FjZ2Ie5SAMKVwqGeKmUUkhgubmhwMZrZWCoA5DkQAG6TWWiBgROThOkLkpPtVTChk2qLy5KrAA6bZRVVh9krUwBG+sTE9Ju69NRQENQA1sYDrnc+GCBUiUnYWxSByOy1Wj2erz67xCX1+-0GQLyoJE5j6k2q0NuklahGgOR6ckYfQBQxG2TUtka9haxNJUBy3V6-Qxw1G4ymM3mMLuawATJttmycoSlrCpuc+pcklIAFSSUU3WUi+EvNBvSQfVF-bmA4bAkLhMG4yEy45wp66-WG77GmmY-KWnEQ-G2yQMtBMtBYfBYDrEFQ5WjUfRg-D3Wg5ACefRKsUkwGyDi8lN8gWUsh86kagSzbuGnmcprgFJ8Vls2XCxH0oSWulmEBgAHdiqNiWG9jWqSbaRpWI0GpQQHAYLAeQgeCZECZqgBmdKIFdsDggTA4PCJOACGj0RjMHhsAC6VC+aB+89QO64eCwEGIhFC0EnzfIPBIxFOcCIAA9EBhinD8ADmFRYEBL5vh+UAAAKivgJj4CusGvu+0AhsE+D8JOxCJqc3BTmEECnKIrAXqwQA">Live Example</a></p> +<h2 id="conclusion"><a class="zola-anchor" href="#conclusion" aria-label="Anchor link for: conclusion">#</a>Conclusion</h2> +<p>In the end, always do what feels right to you and makes more sense given your team and/or project. If this has been helpful or if you have any questions, <a href="mailto:me@kevinfiol.com">drop me an email!</a></p> + + + + Brew Candy Review + 2019-06-17T00:00:00+00:00 + 2019-06-17T00:00:00+00:00 + + https://kevinfiol.com/blog/brew-candy-review/ + <h1 id="brew-candy-review"><a class="zola-anchor" href="#brew-candy-review" aria-label="Anchor link for: brew-candy-review">#</a>Brew Candy Review</h1> +<p>For my birthday, a very dear friend of mine sent me these Brew Candies. She had requested that I let her know how they are, so I resolved to put together a brief review and summary of my experience eating these beer-inspired candies.</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;1.jpg" alt="brew candy bag" /> +<p>I love beer. And maybe because of this, I was very skeptical of these candies. Can you truly replicate the nuances of flavor found in beers such as IPAs and stouts? Perhaps if you jampack your candy with an overbearing bitterness reminiscent of hops.</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;2.jpg" alt="brew candy bag with three pieces of candy" /> +<p>The package includes three flavors:</p> +<ul> +<li>Hoppy IPA</li> +<li>Honey Ale</li> +<li>Roasty Stout</li> +</ul> +<p>Being a stout-lover, I chose to leave what I presumed to be the best for last.</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;3.jpg" alt="brew candy back of bag" /> +<p>Curious (or not) enough, these candies contain no alcohol! Which makes it safe for you to distribute to your underage cousins without legal repercussions. Anyway here are my thoughts on these beer treats.</p> +<h2 id="hoppy-ipa"><a class="zola-anchor" href="#hoppy-ipa" aria-label="Anchor link for: hoppy-ipa">#</a>Hoppy IPA</h2> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;4.jpg" alt="brew candy hoppy ipa flavor" /> +<p>What's instantly recognizable from these candies is that they seem to resemble, albeit crudely, the shape of a hop. Or at least... I think it's supposed to be a hop. Either way, it's an admirable feature, and the texture at least adds to the novelty of the packaging.</p> +<p>Onto the taste test!</p> +<p>The Hoppy IPA variant is mildly sweet, but with a sharp hoppy flavor that lingers on the tongue. As you'd imagine, it has a strong bittery aftertaste. Does not taste like a beer per say, but it is recognizable instantly. A taste not too different from other hard candies, surprisingly. Can easily disguise this among other kid-oriented candies. An interesting flavor, but not particularly great. Overall a <strong>6/10</strong>.</p> +<h2 id="honey-ale"><a class="zola-anchor" href="#honey-ale" aria-label="Anchor link for: honey-ale">#</a>Honey Ale</h2> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;5.jpg" alt="brew candy honey ale flavor" /> +<p>Has the bitterness of a hoppy beer, but distinctively honey flavor that is not overshadowed by the hoppiness. You may be able to hide this among other honey flavored candies and get away with it. Might be a great gateway drug to trick people into liking IPAs even! A subtle sweetness, and none of the biting aftertaste found in the Hoppy IPA flavor. May be one of my more favorite honey-flavored candies I have tried. I give it a <strong>8/10</strong>!</p> +<h2 id="roasty-stout"><a class="zola-anchor" href="#roasty-stout" aria-label="Anchor link for: roasty-stout">#</a>Roasty Stout</h2> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;brew_candy&#x2F;6.jpg" alt="brew candy roasty stout flavor" /> +<p>I love stouts, porters, and any kind of coffee-flavored dark beers, so this flavor was right up my alley. This near-perfectly replicates the flavor of a coffee stout in candy form. Easily my favorite of the three flavors, so much that I've probably already eaten most of these from the bag. If you're trying to convince someone who already likes coffee caramels (or similar candies) to try some dark beers, this might be a good stepping stone. I wouldn't mind if Brew Candy made bags full of this stuff. More please. <strong>9/10</strong>.</p> +<h2 id="conclusion"><a class="zola-anchor" href="#conclusion" aria-label="Anchor link for: conclusion">#</a>Conclusion</h2> +<p>Overall, this was a fun taste test. I've never written reviews for food items (or much anything really), so excuse me if you think this review sucks. I want to give a big thanks to my very thoughtful friend who gave me the opportunity to try these, and I look forward to finishing the rest of the bag. If you'd like to leave a comment, just scroll down and leave one in the non-existent comment box below! Or, you know, just e-mail me at <a href="mailto:me@kevinfiol.com">me@kevinfiol.com</a>.</p> + + + + Validating Checksum on Windows + 2019-06-04T00:00:00+00:00 + 2019-06-04T00:00:00+00:00 + + https://kevinfiol.com/blog/validating-checksum-on-windows/ + <h1 id="validating-checksum-on-windows"><a class="zola-anchor" href="#validating-checksum-on-windows" aria-label="Anchor link for: validating-checksum-on-windows">#</a>Validating Checksum on Windows</h1> +<p>This is a common command that I constantly seem to forget and have to look up over and over again. Posting it here so I never have to search for it again.</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">certutil.exe -hashfile </span><span>&quot;</span><span style="color:#a3be8c;">data.iso</span><span>&quot; MD5 +</span></code></pre> + + + + Git Cheatsheet + 2019-05-22T00:00:00+00:00 + 2019-05-22T00:00:00+00:00 + + https://kevinfiol.com/blog/git-cheatsheet/ + <h1 id="git-cheatsheet"><a class="zola-anchor" href="#git-cheatsheet" aria-label="Anchor link for: git-cheatsheet">#</a>Git Cheatsheet</h1> +<p>This is a collection of <code>git</code> commands that I use frequently. May or may not be useful to you, but it's useful to me, dammit.</p> +<h2 id="git-add-interactive-mode"><a class="zola-anchor" href="#git-add-interactive-mode" aria-label="Anchor link for: git-add-interactive-mode">#</a>Git Add Interactive Mode</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> add</span><span style="color:#bf616a;"> -i +</span></code></pre> +<h2 id="clone-repository-respective-branch"><a class="zola-anchor" href="#clone-repository-respective-branch" aria-label="Anchor link for: clone-repository-respective-branch">#</a>Clone repository / respective branch:</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">$</span><span> git clone</span><span style="color:#bf616a;"> -b </span><span>&lt;branch name&gt; &lt;host&gt; +</span></code></pre> +<h2 id="delete-local-and-remote-branch"><a class="zola-anchor" href="#delete-local-and-remote-branch" aria-label="Anchor link for: delete-local-and-remote-branch">#</a>Delete Local and Remote Branch</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> push origin</span><span style="color:#bf616a;"> --delete </span><span>&lt;branch_name&gt; +</span><span style="color:#bf616a;">git</span><span> branch</span><span style="color:#bf616a;"> -d </span><span>&lt;branch_name&gt; +</span></code></pre> +<h2 id="merge-to-master"><a class="zola-anchor" href="#merge-to-master" aria-label="Anchor link for: merge-to-master">#</a>Merge to Master</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> checkout master +</span><span style="color:#bf616a;">git</span><span> pull origin master +</span><span style="color:#bf616a;">git</span><span> merge</span><span style="color:#bf616a;"> --no-ff</span><span> test +</span><span style="color:#bf616a;">git</span><span> push origin master +</span></code></pre> +<h2 id="merge-into-some-other-branch"><a class="zola-anchor" href="#merge-into-some-other-branch" aria-label="Anchor link for: merge-into-some-other-branch">#</a>Merge into some other branch</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> checkout production +</span><span style="color:#bf616a;">git</span><span> merge development +</span><span style="color:#bf616a;">git</span><span> push origin production +</span></code></pre> +<h2 id="create-a-new-branch-and-push-it-to-the-remote-repo"><a class="zola-anchor" href="#create-a-new-branch-and-push-it-to-the-remote-repo" aria-label="Anchor link for: create-a-new-branch-and-push-it-to-the-remote-repo">#</a>Create a new branch and push it to the remote repo</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> checkout</span><span style="color:#bf616a;"> -b</span><span> myFeature dev +</span><span style="color:#bf616a;">git</span><span> push origin myFeature +</span></code></pre> +<h2 id="stashing-work-in-progress-wip-changes"><a class="zola-anchor" href="#stashing-work-in-progress-wip-changes" aria-label="Anchor link for: stashing-work-in-progress-wip-changes">#</a>Stashing Work In Progress (WIP) changes</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> stash +</span></code></pre> +<p>And to get it back:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> stash pop +</span></code></pre> +<h2 id="so-you-forked-a-repo-and-want-to-keep-your-fork-updated"><a class="zola-anchor" href="#so-you-forked-a-repo-and-want-to-keep-your-fork-updated" aria-label="Anchor link for: so-you-forked-a-repo-and-want-to-keep-your-fork-updated">#</a>So you forked a Repo and want to keep your fork updated</h2> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> remote add upstream git@github.com:company/projectyourforkedfrom.git +</span></code></pre> +<p>To update:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> fetch upstream +</span><span style="color:#bf616a;">git</span><span> rebase upstream/master +</span></code></pre> +<p>If you have commit rights to the upstream repo, you can create a local <code>upstream</code> branch and do work that will go to upstream there.</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> checkout</span><span style="color:#bf616a;"> -b</span><span> upstream upstream/master +</span></code></pre> +<h2 id="sometimes-you-want-to-locally-or-temporarily-ignore-a-file-but-don-t-want-to-add-it-to-gitignore"><a class="zola-anchor" href="#sometimes-you-want-to-locally-or-temporarily-ignore-a-file-but-don-t-want-to-add-it-to-gitignore" aria-label="Anchor link for: sometimes-you-want-to-locally-or-temporarily-ignore-a-file-but-don-t-want-to-add-it-to-gitignore">#</a>Sometimes, you want to locally (or temporarily) ignore a file but don't want to add it to <code>.gitignore</code></h2> +<p>Be careful with this, because if you ignore a file, and then do a <code>git pull</code> after the file was changed upstream, you'll get a conflict. And you'll be confused because Git will tell you to stash your changes, all the while <code>git status</code> is showing no changes.</p> +<p>Ignore it:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> update-index</span><span style="color:#bf616a;"> --assume-unchanged </span><span>&lt;file&gt; +</span></code></pre> +<p>Unignore it:</p> +<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> update-index</span><span style="color:#bf616a;"> --no-assume-unchanged </span><span>&lt;file&gt; +</span></code></pre> + + + + Bullet Pools with Timers in HaxeFlixel + 2019-05-18T00:00:00+00:00 + 2019-05-18T00:00:00+00:00 + + https://kevinfiol.com/blog/bullet-pools-with-timers-in-haxeflixel/ + <h1 id="bullet-pools-with-timers-in-haxeflixel"><a class="zola-anchor" href="#bullet-pools-with-timers-in-haxeflixel" aria-label="Anchor link for: bullet-pools-with-timers-in-haxeflixel">#</a>Bullet Pools with Timers in HaxeFlixel</h1> +<p>One of the more useful features of the flixel library is the inclusion of the <a href="http://api.haxeflixel.com/flixel/group/FlxTypedGroup.html">FlxTypedGroup</a> class, which makes it easier to organize, update, and render multiple instances of an FlxBasic object. A few getter methods provide useful information such as the length of the group, or an array of every member in an instantiated group.</p> +<p>A practical application of FlxTypedGroup can be found in the <a href="https://github.com/HaxeFlixel/flixel-demos/tree/master/Arcade/FlxTeroids/source">'Asteroids' demo</a> available via the HaxeFlixel repository. FlxTypedGroup's <code>recycle</code> method allows us to resuse bullet objects without having to destroy, recreate, and reallocate memory each time. Instead, bullets can be respawned from the queue after the pool has been &quot;expended.&quot;</p> +<blockquote> +<p>Note: In the demo example available in the HaxeFlixel repository, the properties of each bullet are initialized on the fly within <code>PlayState.hx</code>. For my example, I have created a separate <code>Bullet</code> class for the sake of convenience.</p> +</blockquote> +<p>In the current PlayState, we can create and initialize a pool called <code>bullets</code> which we will populate with bullet objects from which we can spawn bullets as we please. In this case, I will create a pool with a maximum size of 3.</p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>class PlayState extends FlxState +</span><span>{ +</span><span> public static var bullets:FlxTypedGroup&lt;Bullet&gt;; +</span><span> override public function create():Void +</span><span> { +</span><span> var poolSize:Int = 3; +</span><span> var bullet:Bullet; +</span><span> bullets = new FlxTypedGroup&lt;Bullet&gt;(poolSize); +</span><span> } +</span><span>} +</span></code></pre> +<p>From here, we can write a simple loop to create new bullet objects and simply add them to the existing group.</p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>... +</span><span>override public function create():Void +</span><span>{ +</span><span> var poolSize:Int = 3; +</span><span> var bullet:Bullet; +</span><span> bullets = new FlxTypedGroup&lt;Bullet&gt;(poolSize); +</span><span> for (i in 0...poolSize) { +</span><span> bullet = new Bullet(); +</span><span> bullets.add(bullet); +</span><span> } +</span><span>} +</span><span>... +</span></code></pre> +<p>Within our Player class, we can then just reference the main PlayState's <code>bullets</code> pool to recycle <code>bullet</code> objects. </p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>if (FlxG.keys.justPressed.Z) { +</span><span> var bullet:Bullet = PlayState.bullets.recycle(); +</span><span> // YOUR BULLET VELOCITY CODE GOES HERE +</span><span>} +</span></code></pre> +<p>After this, we just add our standard logic that handles bullet velocity, acceleration, or how, when, and where your Sprite class may spawn bullet objects. As seen in the example below, only 3 bullets may be on the screen at one time, with the earliest spawned bullet being replaced.</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;haxeflixel-bullet-timers&#x2F;1.gif" alt="asteroids animation" /> +<p>Building on the example of the original Asteroids arcade game, we can give each bullet a limited lifetime, meaning if the bullet does not collide with another asteroid or enemy sprite, it should cease to exist after a certain period of time. Otherwise, it would continue travelling endlessly.</p> +<p>I was able to do this using HaxeFlixel's <a href="http://api.haxeflixel.com/flixel/util/FlxTimer.html">FlxTimer</a> class, however, you may also use the standard <a href="http://api.haxe.org/haxe/Timer.html">Timer</a> class included in the Haxe Toolkit.</p> +<p>Within my <code>Bullet.hx</code> class, I declare <code>timer</code> and initialize it as an FlxTimer object in the class constructor. </p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>class Bullet extends FlxSprite +</span><span>{ +</span><span> public var timer:FlxTimer; +</span><span> public function new(X:Float = 0, Y:Float = 0) +</span><span> { +</span><span> super(X, Y); +</span><span> timer = new FlxTimer(); +</span><span> //YOUR OBJECT PROPERTIES GO HERE +</span><span> } +</span><span> override public function update(elapsed:Float):Void +</span><span> { +</span><span> ... +</span><span> } +</span><span>} +</span></code></pre> +<p>Instead of creating a new FlxTimer object each time a bullet is recycled, the existing one is simply reset when needed.</p> +<p>Now back in the <code>Player.hx</code> class, we simply set and start the FlxTimer object for each bullet as they fire. The <code>start</code> method of an FlxTimer object <a href="http://api.haxeflixel.com/flixel/util/FlxTimer.html#start">takes three arguments</a>: </p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>start(Time:Float = 1, ?OnComplete:FlxTimer‑&gt;Void, Loops:Int = 1):FlxTimer +</span></code></pre> +<blockquote> +<p><strong>Time:Float</strong> How many seconds it takes for the timer to go off. If 0 then timer will fire OnComplete callback only once at the first call of update method (which means that Loops argument will be ignored).</p> +</blockquote> +<blockquote> +<p><strong>OnComplete:FlxTimer-&gt;Void</strong> Optional, triggered whenever the time runs out, once for each loop. Callback should be formed &quot;onTimer(Timer:FlxTimer);&quot;</p> +</blockquote> +<blockquote> +<p><strong>Loops:Int</strong> How many times the timer should go off. 0 means &quot;looping forever&quot;.</p> +</blockquote> +<p>In the example below, I pass <code>2.0</code> for <code>Time</code>, an anonymous function for <code>OnComplete</code> that switches the bullets <code>exists</code> flag to <code>false</code>, and <code>1</code> for <code>Loops</code> so that the function only triggers once.</p> +<pre data-lang="haxe" style="background-color:#2b303b;color:#c0c5ce;" class="language-haxe "><code class="language-haxe" data-lang="haxe"><span>if (FlxG.keys.justPressed.Z) { +</span><span> var bullet:Bullet = PlayState.bullets.recycle(); +</span><span> bullet.timer.start( +</span><span> 2.0, +</span><span> function (Timer:FlxTimer) { +</span><span> bullet.exists = false; +</span><span> }, +</span><span> 1 +</span><span> ); +</span><span>} +</span></code></pre> +<p>So now, not only do you limit the amount of bullets that can be on the screen at once, but you can limit the duration for said bullets! It's a very neat and useful mechanic for balancing your game that can be applied to any pool of FlxBasic objects you may need, whether it be enemies, ammunition, or environmental objects.</p> +<img loading="lazy" src="&#x2F;img&#x2F;blog&#x2F;haxeflixel-bullet-timers&#x2F;2.gif" alt="asteroids animation" /> + + diff --git a/blog/a-minimal-rss-feed-reader/index.html b/blog/a-minimal-rss-feed-reader/index.html new file mode 100644 index 0000000..918111f --- /dev/null +++ b/blog/a-minimal-rss-feed-reader/index.html @@ -0,0 +1 @@ + A minimal RSS Feed Reader
October 12, 2021

#A minimal RSS Feed Reader

TL;DR: Visit kevinfiol.com/reader for my new daily RSS reader, updated hourly.

Since mid-2020, I had been using Inoreader as my main RSS/Atom feed reader. Inoreader offers a generous free tier, giving you a maximum of 150 feeds per account, as well as a bunch of QoL features like search, bookmarking, and a dashboard with reasonable amounts of customization. The free tier is ad-supported which is understandable. For the most part, the ads are unintrusive. Using an adblocker such as uBlock Origin ocassionally results in a popup reminder by Inoreader that their free tier is ad-supported, kindly asking you to disable your adblock.

Last year, I had also come across George Mandis' Bubo Reader, an "irrationally minimalist, static RSS feed reader you can instantly deploy on Netlify, Glitch or your own server." George has a great introductory blogpost on his site over here which I recommend reading if the description I gave seemed interesting at all. TL;DR: Bubo Reader is nothing but a static .html page that gets rebuilt and redeployed via a Node.js script. The script will be run at a set interval, fetch the latest posts from feeds (defined in a .json file), and boom you got a new index.html file with a couple <ul> lists of the latest articles.

When I first checked out George's demo for Bubo Reader, I simultaneously thought "wow this is cool!" and also "wow this is crappy!". My latter thought stemmed from the fact that the demo is really irrationally minimal.

The genius of Bubo Reader is summarized in a few points that I realized slowly over the past year:

  • A feed reader doesn't need to be updated too frequently. Inoreader will refresh your feeds and even update the page dynamically if there are any new items. But why the desperation for new content to consume? I realized that Inoreader enabled my bad habit of seeking the dopamine boost that comes with getting something "new." You know what I'm talking about -- it's the same reason why immediately after closing your reddit tab, your first instinct is to Ctrl+T and go back to reddit. It's an unhealthy craving because there is always some new article to skim, comments section to meander about, or funny gif to laugh at instead of doing something productive. In George's Bubo Reader example, the feed is updated every 15 minutes. Personally, I find that 1 hour is the perfect inverval.
  • A feed reader doesn't really need a bookmarks manager. I had quit Pocket and given up on Instapaper. I thought maybe my feed reader can be my bookmarks tool. The issue was that Inoreader is clumsy to bookmark articles or content that you find outside of your feed, and I wouldn't be surprised if other readers had the same issue. In addition, every modern browser has a bookmarking feature, and inevitably, your bookmarks will become split between your browser's built in bookmarks, and your feed reader's bookmarks. I gave up on this division. Firefox now handles all of my bookmarks and it syncs between devices using a Firefox Account.
  • A feed reader doesn't need to be able to scrape article contents. Probably 6 times out of 10, Inoreader would mess up the content scraping anyway, which in the age of SPAs and paywalls, is not surprising. Even when it scraped things properly, I still prefered to read the article on the site it originated on with Firefox's reader mode.
  • A feed reader doesn't need client-side JavaScript. Shocking, I know. There are certainly some niceties that can only be had with JavaScript, but I found George's use of details and summary elements to be exactly what I needed.
  • I don't need a mobile app. I don't like staring at my phone for long periods of time. In general, I think it's not a great habit. While Bubo Reader can be viewed in a browser, I don't use it that way. If I did, I could easily put some time in to make my version mobile responsive.

Last month, I forked Bubo Reader and made several personalized changes and improvements. In addition to a dark mode, I took inspiration from the John Doe webpage that was a bit popular on Hacker News some time ago, using the CSS :target selector to create a "sidebar" for my reader. In addition, I adjusted the build script to sort feeds by the most latest updated.

The end result can be found at kevinfiol.com/reader.

\ No newline at end of file diff --git a/blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/index.html b/blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/index.html new file mode 100644 index 0000000..b9a8155 --- /dev/null +++ b/blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/index.html @@ -0,0 +1,26 @@ + Binding Mouse Button + Scroll Wheel to System Volume Control
January 22, 2021

#Binding Mouse Button + Scroll Wheel to System Volume Control (on Windows or Ubuntu Linux)

#Some Context

About six years ago, I purchased a ROCCAT Savu gaming mouse to serve as my daily driver. The mouse itself was mediocre, but the bundled Windows-only software included a feature that I enabled on a whim that allowed the user to hold a button on the side of the mouse and use the scroll wheel to control the system volume. I didn't think much of the feature. A couple years later when my Savu finally died, I replaced it with a Logitech G203, only to find that controlling the system volume with the scroll wheel had become second nature.

#Windows

Fortunately, Logitech's software included ways to bind keys to mouse buttons, and using an Autohotkey script to fake an F13 key press, I was able to bind my mouse button to a non-existent key. Afterwards, I simply launch another Autohotkey script on system startup to have system-wide volume control bound to my mouse.

#Linux

The state of consumer-grade peripheral software on Linux is getting better by the day, but still severely lacking compared to Windows. For the most part, you should be fine with Piper for your gaming mouse needs on Linux. However, Piper itself is insufficient for our goals.

In the end, I was able to achieve similar functionality to the Autohotkey script above using xbindkeys and xdotool, both of which you can install using your package manager:

# Ubuntu
+sudo apt update
+sudo apt install xbindkeys xdotool
+

Create ~/.xbindkeysrc in your home directory and paste:

"xdotool keydown ctrl"
+    b:8
+
+"xdotool keyup ctrl"
+    release + control + b:8
+
+"pactl -- set-sink-volume 0 -5%"
+    control + b:5
+
+"pactl -- set-sink-volume 0 +5%"
+    control + b:4
+

Run killall xbindkeys && xbindkeys to restart xbindkeys.

A few things to note:

  • You may find xbindkeys keycodes using xbindkeys --key or mouse button codes using xev.

  • I am binding the side button on my mouse b:8 to the Control key on my keyboard using xdotool. This may or may not work for you if you already bind your Control key to something else. What this means in practice is that holding your mouse button is essentially like holding the Control key.

    • This is a particular point of frustration on Linux, as it seems xbindkeys is very selective of what keys can be used as modifiers. The manpage lists Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock), Mod3 (CapsLock), Mod4 (Super), Mod5 (Scroll) as available modifiers.
  • The commands pactl -- set-sink-volume 0 -5% and pactl -- set-sink-volume 0 +5% assume you are using the PulseAudio sound driver. These commands may not work for you if you're using the ALSA sound driver, in which case, you may use commands like amixer -q sset Master 5%- and amixer -q sset Master 5%+ respectively. If neither of these work, try amixer -q -D pulse sset Master 5%+ and amixer -q -D pulse sset Master 5%-, or research how to control your master volume by command line on your system.

#Update, or, how to bind the Super key (03/08/2022)

A little over a year later, I discovered ksuperkey, and further xfce-superkey (I am an XFCE user). Last year, I avoided binding to the Super key because more often than not, this will interfere with existing keybinds in DEs where the Super key opens the Applications menu. This is the case in XFCE where the Super key is used to open the Whisker Menu. While you can simply rebind your Applications shortcut to something other than Super, I personally find it hard to deprogram this instinct. The above utilities allow you to keep Super as your sole shortcut to Applications but also allow you to use it in other keyboard combinations. Note: if you use XFCE, you still have to unbind Whisker Menu from Super in your Keyboard settings -- don't worry though, you'll still be able to use Super after running xfce-superkey. After installing the above utility, I changed my .xbindkeysrc to:

"xdotool keydown Super_R keydown ctrl"
+    b:8
+
+"xdotool keyup Super_R keyup ctrl"
+    release + Mod4 + control + b:8
+
+"pactl -- set-sink-volume 0 -5%"
+    Mod4 + control + b:4
+
+"pactl -- set-sink-volume 0 +5%"
+    Mod4 + control + b:5
+
\ No newline at end of file diff --git a/blog/books/index.html b/blog/books/index.html new file mode 100644 index 0000000..fc6ddd8 --- /dev/null +++ b/blog/books/index.html @@ -0,0 +1 @@ + Books
July 02, 2020

#Books

A collection of (free) web books, guides, and references by category that I've found over the years. Suggestions welcome.

#General Programming

  • Learn X in Y Minutes
    • A collection of "tours" for every popular programming language. Intended for those with programming experience to quickly learn new languages.
  • Crafting Interpreters
    • A book on designing your own language interpreter. By Robert Nystrom, creator of programming languages such as Wren, Finch, and Magpie.
  • Structure and Interpretation of Computer Programs
  • Nature of Code
    • "This book focuses on a range of programming strategies and techniques behind computer simulations of natural systems, from elementary concepts in mathematics and physics to more advanced algorithms that enable sophisticated visual results."

#C/C++

  • Build Your Own Lisp
    • "If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you."
  • Build Your Own Text Editor
    • A walkthrough tutorial on how to build a text editor with C.
  • Beej's Guide to C Programming
    • "This is a rather comprehensive guide to C for folks who already know how to program in another language. The first half of the book is written in a tutorial style, while the second half is a reference section complete with examples (inspired by the incomparable Turbo C Bible). The goal is to keep this up-to-date with the latest C standards."
  • C++ By Example
    • "Here you will find clear and up to date C++ code examples with concise and straightforward explanations."

#Network Programming

#HTML/CSS

#JavaScript

#C#

  • Intro to C#
    • An introduction to programming using the C# language.
  • Tour of C#
    • A brief crash course on C# intended for those with some programming experience.

#PHP

#Python

  • Automate The Boring Stuff With Python
    • An excellent and pragmatic introduction to programming using Python 3. Perfect for beginners.
  • Python 101
    • A more general introduction to programming with Python. Good for beginners.
  • A Byte of Python
    • Another intro to programming using Python for those who know "how to save text files." Beginner-friendly.
  • Dive Into Python 3
    • As the title suggests, this is a deep dive into Python 3, highlighting differences from Python 2. Good reference.

#Rust

#Elixir

#Haskell

#ML

#Racket

  • Beautiful Racket
    • "An introduction to language-oriented programming using Racket."

#Game Development

  • Harvard CS50 Introduction to Game Development
    • A free course with lectures, slides, and source code on developing games using Love2D.
  • Game Programming Patterns
    • A collection of game development-related design patterns. By the great Robert Nystrom.
  • BYTEPATH
    • A book published as a series of Github issues. Guides the user in creating a game using Lua and Love2D, with plenty of exercises. Intended for those with programming experience.
  • How to LÖVE
    • A gentle introduction to programming and game development using Lua and the Love2D game library.

#Game Design

  • Riot Games Game Design Curriculum
    • "Riot Games’ Game Design Curriculum is an entry-level course that teaches high school students the fundamental elements of game design using a framework and interactive workshops created by our own game designers."

#Math

  • Calculus Made Easy
    • An accessible and pragmatic introduction to Calculus. Originally published in 1910 by Silvanus P. Thompson.

#Electrical Engineering

  • All About Circuits

    • "Starts from the very basic fundamentals of electricity, and builds up to quite complex circuits and their workings."
  • All About Electronic Circuits for Kids

    • Not a book, but a short introduction to Electronic Circuits for kids, along with a collection of useful links accessible to young learners.

#Literature

  • Standard E-Books

    • A collection of literature in the public domain, available in multiple formats, with standardized and readable typography.
  • Electronic Texts of H.P. Lovecraft

    • Collecton of HP Lovecraft writings. A browser plugin or feature to improve readability is recommended (e.g. Firefox Reader Mode).

#Cooking

  • The Wikimedia Cookbook
    • A collection of recipes from a number of nationalities and cultures. Editable open-content.

#Tech Interview Prep

#Misc.

  • Project Gutenberg
    • An online library of over 60,000 public domain books, ranging on topics from literature, to cookbooks, and history.
  • Wikibooks
    • As the title suggests, these are open-content wiki-like textbooks on a myriad of subjects.
\ No newline at end of file diff --git a/blog/brew-candy-review/index.html b/blog/brew-candy-review/index.html new file mode 100644 index 0000000..ad56b25 --- /dev/null +++ b/blog/brew-candy-review/index.html @@ -0,0 +1 @@ + Brew Candy Review
June 17, 2019

#Brew Candy Review

For my birthday, a very dear friend of mine sent me these Brew Candies. She had requested that I let her know how they are, so I resolved to put together a brief review and summary of my experience eating these beer-inspired candies.

brew candy bag

I love beer. And maybe because of this, I was very skeptical of these candies. Can you truly replicate the nuances of flavor found in beers such as IPAs and stouts? Perhaps if you jampack your candy with an overbearing bitterness reminiscent of hops.

brew candy bag with three pieces of candy

The package includes three flavors:

  • Hoppy IPA
  • Honey Ale
  • Roasty Stout

Being a stout-lover, I chose to leave what I presumed to be the best for last.

brew candy back of bag

Curious (or not) enough, these candies contain no alcohol! Which makes it safe for you to distribute to your underage cousins without legal repercussions. Anyway here are my thoughts on these beer treats.

#Hoppy IPA

brew candy hoppy ipa flavor

What's instantly recognizable from these candies is that they seem to resemble, albeit crudely, the shape of a hop. Or at least... I think it's supposed to be a hop. Either way, it's an admirable feature, and the texture at least adds to the novelty of the packaging.

Onto the taste test!

The Hoppy IPA variant is mildly sweet, but with a sharp hoppy flavor that lingers on the tongue. As you'd imagine, it has a strong bittery aftertaste. Does not taste like a beer per say, but it is recognizable instantly. A taste not too different from other hard candies, surprisingly. Can easily disguise this among other kid-oriented candies. An interesting flavor, but not particularly great. Overall a 6/10.

#Honey Ale

brew candy honey ale flavor

Has the bitterness of a hoppy beer, but distinctively honey flavor that is not overshadowed by the hoppiness. You may be able to hide this among other honey flavored candies and get away with it. Might be a great gateway drug to trick people into liking IPAs even! A subtle sweetness, and none of the biting aftertaste found in the Hoppy IPA flavor. May be one of my more favorite honey-flavored candies I have tried. I give it a 8/10!

#Roasty Stout

brew candy roasty stout flavor

I love stouts, porters, and any kind of coffee-flavored dark beers, so this flavor was right up my alley. This near-perfectly replicates the flavor of a coffee stout in candy form. Easily my favorite of the three flavors, so much that I've probably already eaten most of these from the bag. If you're trying to convince someone who already likes coffee caramels (or similar candies) to try some dark beers, this might be a good stepping stone. I wouldn't mind if Brew Candy made bags full of this stuff. More please. 9/10.

#Conclusion

Overall, this was a fun taste test. I've never written reviews for food items (or much anything really), so excuse me if you think this review sucks. I want to give a big thanks to my very thoughtful friend who gave me the opportunity to try these, and I look forward to finishing the rest of the bag. If you'd like to leave a comment, just scroll down and leave one in the non-existent comment box below! Or, you know, just e-mail me at me@kevinfiol.com.

\ No newline at end of file diff --git a/blog/bullet-pools-with-timers-in-haxeflixel/index.html b/blog/bullet-pools-with-timers-in-haxeflixel/index.html new file mode 100644 index 0000000..72d7a98 --- /dev/null +++ b/blog/bullet-pools-with-timers-in-haxeflixel/index.html @@ -0,0 +1,52 @@ + Bullet Pools with Timers in HaxeFlixel
May 18, 2019

#Bullet Pools with Timers in HaxeFlixel

One of the more useful features of the flixel library is the inclusion of the FlxTypedGroup class, which makes it easier to organize, update, and render multiple instances of an FlxBasic object. A few getter methods provide useful information such as the length of the group, or an array of every member in an instantiated group.

A practical application of FlxTypedGroup can be found in the 'Asteroids' demo available via the HaxeFlixel repository. FlxTypedGroup's recycle method allows us to resuse bullet objects without having to destroy, recreate, and reallocate memory each time. Instead, bullets can be respawned from the queue after the pool has been "expended."

Note: In the demo example available in the HaxeFlixel repository, the properties of each bullet are initialized on the fly within PlayState.hx. For my example, I have created a separate Bullet class for the sake of convenience.

In the current PlayState, we can create and initialize a pool called bullets which we will populate with bullet objects from which we can spawn bullets as we please. In this case, I will create a pool with a maximum size of 3.

class PlayState extends FlxState
+{
+	public static var bullets:FlxTypedGroup<Bullet>;
+	override public function create():Void
+	{
+		var poolSize:Int = 3;
+		var bullet:Bullet;
+		bullets = new FlxTypedGroup<Bullet>(poolSize);
+	}
+}
+

From here, we can write a simple loop to create new bullet objects and simply add them to the existing group.

...
+override public function create():Void
+{
+	var poolSize:Int = 3;
+	var bullet:Bullet;
+	bullets = new FlxTypedGroup<Bullet>(poolSize);
+	for (i in 0...poolSize) {
+		bullet = new Bullet();
+		bullets.add(bullet);
+	}
+}
+...
+

Within our Player class, we can then just reference the main PlayState's bullets pool to recycle bullet objects.

if (FlxG.keys.justPressed.Z) {
+	var bullet:Bullet = PlayState.bullets.recycle();
+	// YOUR BULLET VELOCITY CODE GOES HERE
+}
+

After this, we just add our standard logic that handles bullet velocity, acceleration, or how, when, and where your Sprite class may spawn bullet objects. As seen in the example below, only 3 bullets may be on the screen at one time, with the earliest spawned bullet being replaced.

asteroids animation

Building on the example of the original Asteroids arcade game, we can give each bullet a limited lifetime, meaning if the bullet does not collide with another asteroid or enemy sprite, it should cease to exist after a certain period of time. Otherwise, it would continue travelling endlessly.

I was able to do this using HaxeFlixel's FlxTimer class, however, you may also use the standard Timer class included in the Haxe Toolkit.

Within my Bullet.hx class, I declare timer and initialize it as an FlxTimer object in the class constructor.

class Bullet extends FlxSprite
+{
+	public var timer:FlxTimer;
+	public function new(X:Float = 0, Y:Float = 0) 
+	{
+		super(X, Y);
+		timer = new FlxTimer();
+		//YOUR OBJECT PROPERTIES GO HERE
+	}
+	override public function update(elapsed:Float):Void
+	{
+		...
+	}
+}
+

Instead of creating a new FlxTimer object each time a bullet is recycled, the existing one is simply reset when needed.

Now back in the Player.hx class, we simply set and start the FlxTimer object for each bullet as they fire. The start method of an FlxTimer object takes three arguments:

start(Time:Float = 1, ?OnComplete:FlxTimer‑>Void, Loops:Int = 1):FlxTimer
+

Time:Float How many seconds it takes for the timer to go off. If 0 then timer will fire OnComplete callback only once at the first call of update method (which means that Loops argument will be ignored).

OnComplete:FlxTimer->Void Optional, triggered whenever the time runs out, once for each loop. Callback should be formed "onTimer(Timer:FlxTimer);"

Loops:Int How many times the timer should go off. 0 means "looping forever".

In the example below, I pass 2.0 for Time, an anonymous function for OnComplete that switches the bullets exists flag to false, and 1 for Loops so that the function only triggers once.

if (FlxG.keys.justPressed.Z) {
+	var bullet:Bullet = PlayState.bullets.recycle();
+	bullet.timer.start(
+		2.0,
+		function (Timer:FlxTimer) {
+			bullet.exists = false;
+		},
+		1
+	);
+}
+

So now, not only do you limit the amount of bullets that can be on the screen at once, but you can limit the duration for said bullets! It's a very neat and useful mechanic for balancing your game that can be applied to any pool of FlxBasic objects you may need, whether it be enemies, ammunition, or environmental objects.

asteroids animation
\ No newline at end of file diff --git a/blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/index.html b/blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/index.html new file mode 100644 index 0000000..3e96086 --- /dev/null +++ b/blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/index.html @@ -0,0 +1,3 @@ + Getting rid of the Credential Helper Selector on Git for Windows
September 18, 2020

#Getting rid of the Credential Helper Selector on Git for Windows

If you've ever been tormented by the following pop-up when trying to push or pull from an HTTPS Git origin:

Windows Credential Helper Selector

There may be a way out of your misery. Initially I thought that if I added my Git credentials for the respective remote origin directly into my .gitconfig file, Git for Windows would stop prompting me every time I wanted to push or pull. Nope. And even more painful is that for some unknown reason the pop-up would appear twice no matter what -- even if I selected Always use this from now on.

#How to

First off, you can simply choose to not install the Helper Selector by unchecking a box during the installation process of Git for Windows. This is assuming you are installing Git in this manner, and also that you are willing to reinstall Git for Windows entirely or re-run the installer. But what if this doesn't apply to you?

I installed Git using scoop.sh, so my installation process took place entirely via CLI. However, I guess this option also assumes you want the Credential Helper since I don't remember ever specifying I wanted it. So what now?

#Unset the credential helper system-wide

A simple way to disable any default system-wide helper is to run the following command

git config --system --unset credential.helper
+

#Setting your credentials on an individual repository basis

Now that you've disabled the system-wide helper, you can manage your credentials on a repository-basis. Git provides two built-in solutions. I chose to use the store helper on my repos.

Navigate to your repository and run:

git config credential.helper store
+

This will then prompt you for your remote credentials. Now try running a git pull and marvel at not having to be bothered by a pop-up!

#Why are you using Windows?

I never claimed to make wise decisions. But yes, this issue is nonexistent on my Ubuntu-based laptop, and probably on your Macbook Pro too.

\ No newline at end of file diff --git a/blog/git-cheatsheet/index.html b/blog/git-cheatsheet/index.html new file mode 100644 index 0000000..895ce84 --- /dev/null +++ b/blog/git-cheatsheet/index.html @@ -0,0 +1,22 @@ + Git Cheatsheet
May 22, 2019

#Git Cheatsheet

This is a collection of git commands that I use frequently. May or may not be useful to you, but it's useful to me, dammit.

#Git Add Interactive Mode

git add -i
+

#Clone repository / respective branch:

$ git clone -b <branch name> <host>
+

#Delete Local and Remote Branch

git push origin --delete <branch_name>
+git branch -d <branch_name>
+

#Merge to Master

git checkout master
+git pull origin master
+git merge --no-ff test
+git push origin master
+

#Merge into some other branch

git checkout production
+git merge development
+git push origin production
+

#Create a new branch and push it to the remote repo

git checkout -b myFeature dev
+git push origin myFeature
+

#Stashing Work In Progress (WIP) changes

git stash
+

And to get it back:

git stash pop
+

#So you forked a Repo and want to keep your fork updated

git remote add upstream git@github.com:company/projectyourforkedfrom.git
+

To update:

git fetch upstream
+git rebase upstream/master
+

If you have commit rights to the upstream repo, you can create a local upstream branch and do work that will go to upstream there.

git checkout -b upstream upstream/master
+

#Sometimes, you want to locally (or temporarily) ignore a file but don't want to add it to .gitignore

Be careful with this, because if you ignore a file, and then do a git pull after the file was changed upstream, you'll get a conflict. And you'll be confused because Git will tell you to stash your changes, all the while git status is showing no changes.

Ignore it:

git update-index --assume-unchanged <file>
+

Unignore it:

git update-index --no-assume-unchanged <file>
+
\ No newline at end of file diff --git a/blog/hard-symlinks-on-windows/index.html b/blog/hard-symlinks-on-windows/index.html new file mode 100644 index 0000000..d91cb79 --- /dev/null +++ b/blog/hard-symlinks-on-windows/index.html @@ -0,0 +1,2 @@ + Hard Symlinks on Windows
August 05, 2019

#Hard Symlinks on Windows

Posting this here to remind me.

mklink /H link.exe C:\tool\bin\original.exe
+
\ No newline at end of file diff --git a/blog/hosting-your-invidious-instance-on-a-vps/index.html b/blog/hosting-your-invidious-instance-on-a-vps/index.html new file mode 100644 index 0000000..4a2c90a --- /dev/null +++ b/blog/hosting-your-invidious-instance-on-a-vps/index.html @@ -0,0 +1,76 @@ + Hosting Your Invidious Instance on a VPS
August 02, 2020

#Hosting Your Invidious Instance on a VPS

Update 2022: This post is likely outdated. I recommend checking the official installation instructions found on the Github repo.

Invidious is an alternative front-end to YouTube with an emphasis on privacy and low system resource usage. It is wonderful free software that not only does away with the annoyances of Google's bloated, ad-ridden video site, but also adds plenty of QoL features.

This weekend I spent some time setting up my own instance of Invidious to share with friends. Here's a quick rundown on what I did:

#1. Pick a server

I went with the $5/mo Nanode over at Linode. It's packing a grand total 1GB of RAM, a single CPU, and 25GB of storage. More than enough to run our instance, but not enough to actually compile the damn codebase (we'll get to this in a bit).

#2. Get a domain (or not)

I wanted a simple and short domain name for myself and my buddies to be able to use instead of typing an IP address in the address bar every time. Getting a domain isn't terribly important especially if you're hosting this just for your own use.

For the record, I used Namecheap to purchase my domain. I found this guide particularly helpful in setting up my domain with my Linode VPS.

#3. Pick a Linux Distribution for your VPS

Again, not terribly important what you pick. If you plan to use Invidious Updater, know that it only supports Debian, Ubuntu, CentOS, Fedora, and Arch. Originally I attempted to use it on an Alpine Linux installation, but the script promptly failed.

Also, the Invidious docs only provide installation instructions for Arch Linux and Debian/Ubuntu. I went with Arch Linux.

#4. Pick how you're going to install Invidious

The README provides 3 options:

  • Install Invidious manually
  • Use Invidious Updater (linked above)
  • Use Docker

All options are simple and easy to do. I went with 1.

#5. Install it!

Install dependencies:

sudo pacman -Syu base-devel shards crystal librsvg postgresql nano
+

Create Invidious user:

useradd -m invidious
+sudo -i -u invidious
+git clone https://github.com/iv-org/invidious
+exit
+

Setup Postgres:

sudo systemctl enable postgresql
+sudo systemctl start postgresql
+sudo -i -u postgres
+psql -c "CREATE USER kemal WITH PASSWORD 'kemal';" # Change 'kemal' here to a stronger password, and update `password` in config/config.yml
+createdb -O kemal invidious
+psql invidious kemal < /home
+exit
+

I was only able to run the following commands as root. Make sure the postgresql service is running:

psql invidious kemal < /home/invidious/invidious/config/sql/channels.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/videos.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/channel_videos.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/users.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/session_ids.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/nonces.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/annotations.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/playlists.sql
+psql invidious kemal < /home/invidious/invidious/config/sql/playlist_videos.sql
+

The next steps to install Invidious involve compiling the project code. On my measly 1GB of RAM, the compilation choked. In order to prepare for this, I used systemd-swap to create a swapfile. There are other ways to create a swapfile or a swap partition on Linux. See: Swap on Arch Linux Wiki. I found using systemd-swap the simplest. This guide by Ricosta Cruz was very helpful.

I did as follows:

sudo pacman -Syu systemd-swap
+

Then I edited the config file to enable zram_enabled=1 and swapfc_enabled=1:

sudo nano /etc/systemd/swap.conf
+

Then enable systemd-swap.service:

sudo systemctl enable --now systemd-swap
+

Finally add the swapfile to /etc/fstab so it'll be used on every boot. Add this: /swapfile none swap defaults 0 0 to the end of the file:

sudo nano /etc/fstab
+

Finally, you won't run out of RAM to setup Invidious. Let's go back and finally install it:

sudo -i -u invidious
+cd invidious
+shards update && shards install
+crystal build src/invidious.cr --release
+./invidious # test compiled binary, stop with ctrl c
+exit
+

It's installed! Now some administrative stuff. Let's setup the systemd service so that Invidious runs in the background:

sudo cp /home/invidious/invidious/invidious.service /etc/systemd/system/invidious.service
+sudo systemctl enable invidious.service
+sudo systemctl start invidious.service
+

And lets rotate the logs so that they don't balloon in size:

sudo echo "/home/invidious/invidious/invidious.log {
+rotate 4
+weekly
+notifempty
+missingok
+compress
+minsize 1048576
+}" | tee /etc/logrotate.d/invidious.logrotate
+
+sudo chmod 0644 /etc/logrotate.d/invidious.logrotate
+

You now got a running Invidious instance! Navigate to your VPS's IP address on port 3000 to see it up and running. Type http://<VPS_IP_ADDRESS>:3000 into your browser's address bar, and get to watching some videos!

#6. (Optional) Setting up nginx

When I bought my domain, I intended to use it for more than just Invidious. In my case, I wanted a subdomain to serve as my Invidious URL, while I can use the main domain to host a "hub" of sorts to other services.

So for example:

http://tube.mydomain.com -> Invidious Service
+http://mydomain.com -> Homepage
+

I was able to do this easily using nginx reverse proxies. Here are the steps I took.

Install nginx:

pacman -Syu nginx-mainline
+

Enable and start nginx service:

sudo systemctl enable nginx.service
+sudo systemctl start nginx.service
+

Configure /etc/nginx/nginx.conf. Add this additional server entry somewhere under http:

http {
+  ...
+
+  server {
+    server_name tube.mydomain.com;
+    location / {
+      proxy_pass http://127.0.0.1:3000;
+    }
+  }
+  
+  ...
+}
+

Next addition is completely optional if you want your root domain to point to a kind of homepage. This is what I wanted, so I'm putting it here partly to document it for myself. I changed the existing, default http.server entry to point to custom html I had written:

http {
+  server {
+    server_name mydomain.com
+
+    location / {
+      root /sites/mydomain.com
+      index index.html index.htm
+    }
+
+    ... # the rest remained unchanged from the default
+  }
+  
+  ...
+}
+

#7. (Optional) Enabling HTTPS

I used EFF's Certbot for this. It is painfully easy to use. Note that if you choose to, it will make modifications to your nginx.conf for you.

You must enable an option in Invidious's config if you want assets to only be transferred via HTTPS. More information can be found here.


That's all. Hopefully you found this helpful. If you got any questions, shoot me an email. And always, if you liked this post, hit Like and Subscribe! (haha).

\ No newline at end of file diff --git a/blog/im-on-netlify/index.html b/blog/im-on-netlify/index.html new file mode 100644 index 0000000..e6e0738 --- /dev/null +++ b/blog/im-on-netlify/index.html @@ -0,0 +1 @@ + I'm on Netlify
January 29, 2020

#I'm on Netlify

First of all, happy birthday to my big bro! He's 29 today. Wishing him good fortune, good health, good food, etc.

On topic: I had been using Github Pages as my homepage solution for years now. Six years to be exact, which means since I was a senior finishing my undergrad. One of the reasons I began using it was that it was one of the only (if not, most popular) freely available static-site hosting solutions, and incredibly developer friendly. The same cannot be said in the year 2020.

Update: As of May 2021, I am back to Github Pages, being deployed via Github Actions. My reasoning for switching back was some inherent latency I discovered while using pages deployed on Netlify. Github Pages is snappier, in my experience.

\ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..e02d8aa --- /dev/null +++ b/blog/index.html @@ -0,0 +1 @@ +Redirect

Click here to be redirected. \ No newline at end of file diff --git a/blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/index.html b/blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/index.html new file mode 100644 index 0000000..21d1f6e --- /dev/null +++ b/blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/index.html @@ -0,0 +1,4 @@ + Making your numeric keypad work on a Xubuntu 20.04 VM (VirtualBox)

August 18, 2020

#Making your numeric keypad work on a Xubuntu 20.04 VM (VirtualBox)

I fought with this for a good 2 hours before I finally got it working. First step is to install numlockx, if it's not already installed:

sudo apt update
+sudo apt install numlockx
+

Enable your Num Lock in your VM:

numlockx on
+

Now in Xubuntu, go to your Whisker Menu (or whatever launcher/menu you're using) and navigate to Settings -> Accessibility -> Mouse and disable Use mouse emulation.

If you're on vanilla Ubuntu (GNOME), or a DE other than XFCE, you may be looking for a menu called Universal Access, wherein you'll want to disable a feature called Control the pointer using the keypad.

You may need to log out and back in to confirm this works.

\ No newline at end of file diff --git a/blog/mithriljs-esbuild-jsx/index.html b/blog/mithriljs-esbuild-jsx/index.html new file mode 100644 index 0000000..71be6a6 --- /dev/null +++ b/blog/mithriljs-esbuild-jsx/index.html @@ -0,0 +1,18 @@ + Mithril.js + esbuild + JSX
March 18, 2021

#Mithril.js + esbuild + JSX

EDIT 7/18/2022: esbuild has since added support for string literals as JSX fragments, meaning much of what I wrote below is now unnecessary. To use JSX with Mithril and esbuild, all you need to do is set jsxFragment: '"["' in your esbuild config. See here for an example.

I recently bootstrapped a Mithril.js project using esbuild for my bundling purposes. If you don't already know, esbuild is a next-gen bundler written in Go by Evan Wallace that is magnitudes faster than rollup, webpack, or parcel (all of which are written in JS/TS).

esbuild comes with JSX support out of the box. While I don't normally use JSX, I decided to create a demo for mithril.netlify.app showing off that JSX works just fine in a Mithril application. However, I ran into one major issue -- esbuild wasn't compiling JSX fragments correctly when providing m.fragment as the JSX fragment pragma.

After some digging around, I found this comment by Claudia Meadows.

In short, there's no support for Mithril fragments as Components currently. esbuild (as well as transpilers like Sucrase) compiles JSX using the provided jsx pragma + jsx fragment method in the form of:

React.createElement(React.Fragment, null, "Stuff");
+

See here for more details.

Which in Mithril's case, can't work with m.fragment. Following Claudia's advice, defining a simple Fragment component as so worked for me. I just put this in my index.js file near the top:

m.Fragment = { view: vnode => vnode.children };
+

Then I just set jsxFragment to m.Fragment instead of m.fragment in my esbuild config and voilà! Fragments work as you'd expect.

var JSX = {
+    view: function() {
+        return (
+            <>
+                <h2>JSX</h2>
+                <p>You could use JSX with Mithril.js as well.</p>
+                <p>Be aware that this requires a build-step.</p>
+                <p style={{ color: 'red' }}>
+                    Attributes work as expected.
+                </p>
+                <p>This application uses <a href="https://esbuild.github.io/">esbuild</a> to convert JSX.</p>
+            </>
+        );
+    }
+};
+

For reference, you can see my full esbuild config and my bundle scripts here. Direct any questions to me@kevinfiol.com and I'd be happy to answer them.

\ No newline at end of file diff --git a/blog/modern-bundling-with-esbuild/index.html b/blog/modern-bundling-with-esbuild/index.html new file mode 100644 index 0000000..c7cf0fe --- /dev/null +++ b/blog/modern-bundling-with-esbuild/index.html @@ -0,0 +1,111 @@ + Modern bundling with esbuild
October 20, 2021

#Modern bundling with esbuild

These days, you can get a pretty robust build setup for a modern browser app using just esbuild. The benefits of using esbuild over rollup, webpack, or parcel are numerous, but the few that stand out to me are:

  • esbuild ships as a static binary; in practice this means adding it as a dependency won't bloat your project with npm packages
  • that lack of npm packages also means less dependabot alerts, since the less dependencies your project relies on, the less likely it is to be vulnerable to security concerns
  • esbuild's bundle times are much faster than rollup/webpack/parcel
  • esbuild includes support for TypeScript and JSX transpilation

That's a lot of bang for your buck for a single dev dependency.

#Dead-simple setup

First off, install esbuild in your project if you haven't already.

npm install --save-dev esbuild
+

You can use esbuild via CLI or its Node API. For tiny apps where your build config is practically non-existent, using the CLI is fine. You can simply define a script in your package.json file and be ready to go.

"scripts": {
+  "build": "esbuild index.js --bundle --minify --outfile=./dist/app.js"
+}
+

Define a script like the one above, run npm run build, and your lightning-fast build is there, minified in all its glory. This isn't terribly different than what you can already do with webpack, but when was the last time you saw webpack's dependency graph? And that doesn't even include webpack-cli. Not to rag on webpack; it is an immensely powerful tool that many great projects rely on, but unless you're already tangled in that web (heh), I'd suggest steering clear.

esbuild also includes a built-in watch mode. No extra plugins needed! Let's go ahead and define another script:

"scripts": {
+  "build": "esbuild index.js --outfile=dist/app.js --bundle --minify",
+  "dev": "esbuild index.js --outfile=dist/app.js --bundle --sourcemap --watch"
+}
+

Make changes to index.js and you'll see that dist/app.js is re-bundled automatically. It's even got source map support! Alternatively, we could take things a step further and utilize esbuild's built-in server. Let's change the dev script a bit:

"scripts": {
+  "build": "esbuild index.js --outfile=dist/app.js --bundle --minify",
+  "dev": "esbuild src/index.jsx --outfile=dist/app.js --servedir=dist --bundle"
+}
+

After running dev, you'll see in your terminal that a server has been started. Navigate to localhost:8000 to see the contents of your dist folder hosted locally.

$ npm run dev
+
+ > Local:   http://127.0.0.1:8000/
+ > Network: http://192.168.1.12:8000/
+ > Network: http://172.11.100.1:8000/
+ > Network: http://192.168.1.3:8000/
+

If you're wondering where your generated output files are, no worries: esbuild's serve mode serves the bundled files directly from memory. They are never written to your disk unless you intentionally omit the servedir variable.

#Using the Build API

Configuring our buildstep via CLI flags can get unwieldy over time. With other bundlers, you get the benefit of config files, e.g., rollup.config.js or webpack.config.js. With esbuild, we can just use plain old Node scripts plus the existing Node APIs to configure our builds. Start by creating a new .js file under a directory for scripts, scripts/build.js. Then, change our existing build script in our package.json:

"scripts": {
+  "build": "node ./scripts/build.js"
+}
+

This doesn't do anything yet, because scripts/build.js is empty. Let's fix that by translating our previous build CLI call to a Node script. That will look something like this:

// scripts/build.js
+import esbuild from 'esbuild';
+import { resolve } from 'path';
+
+esbuild.bundle({
+  format: 'iife',
+  entryPoints: [resolve('index.js')],
+  bundle: true,
+  outfile: resolve('dist/app.js')
+}).catch((error) => {
+  console.error(error);
+  process.exit(1);
+});
+

Running npm run build should function the same as before, but now we have more control over our bundles! But what about our dev script? And what if we want to reduce code duplication? After all, build and dev are very similar with just a couple different options.

Let's create a new file in our scripts folder, called scripts/bundle.js that will contain the config that both build.js and dev.js will use.

// scripts/bundle.js
+import esbuild from 'esbuild';
+import { resolve } from 'path';
+
+export function bundle(config = {}) {
+  return esbuild.build({
+    format: 'iife',
+    entryPoints: [resolve('index.js')],
+    bundle: true,
+    outfile: resolve('dist/app.js')
+    ...config
+  });
+}
+

As you see, bundle.js will contain all of our default configs. Let's refactor scripts/build.js to specifically create one minified build:

// scripts/build.js
+import { bundle } from './bundle.js';
+
+bundle({ minify: true })
+  .then(() => {
+    console.log('Bundled!');
+  })
+  .catch((error) => {
+    console.error(error);
+    process.exit(1);
+  });
+

Our build script should now function like before. Let's create scripts/dev.js now:

// scripts/dev.js
+import { bundle } from './bundle.js';
+
+bundle({
+  minify: false,
+  sourcemap: true,
+  watch: {
+    onRebuild(error) {
+      if (error) console.error(error);
+      else console.log('Bundled!');
+    }
+  }
+}).catch((error) => {
+  console.error(error)
+  process.exit(1);
+});
+

Add the dev script to your package.json:

"scripts": {
+  "build": "node ./scripts/build.js",
+  "dev": "node ./scripts/dev.js"
+}
+

And now npm run dev will watch and rebundle your app on every file change.

#What about the server?

You very well could use esbuild's "serve" mode in your scripts/dev.js script if you'd like to. You would have to adjust the scripts we've created so that "dev" mode uses esbuild.serve instead of esbuild.build. While I like that esbuild has a built-in server, it does not support live-reload, which is a nice feature to have. You could implement your own live reload using esbuild.serve, but a simpler solution would be to include some kind of server in our project as a dev dependency. I've found that nativew/serve was a fine candidate for this. At 18.7kb with 0 dependencies, it was a guilt-free inclusion. Install with npm as normal.

Update (12/18/2021): Since writing this article, I've published a fork of lukejacksonn's servor project titled servbot, which is smaller in scope and intended to be used with existing JS build tools. My move away from nativew/serve was motivated by its lack of SPA support. The instructions below have been updated for servbot:

npm install --save-dev servbot
+

Now let's modify our scripts/dev.js:

// scripts/dev.js
+import servbot from 'servbot';
+import { bundle } from './bundle.js';
+
+// create server
+const server = servbot({
+  root: 'dist',
+  reload: true,
+  fallback: 'index.html' // fallback to index.html for SPA routes
+});
+
+// start our server at localhost:8000
+server.listen(8000);
+
+bundle({
+  minify: false,
+  sourcemap: true,
+  watch: {
+    onRebuild(error) {
+      if (error) console.error(error);
+      else console.log('Bundled!');
+      server.reload(); // <-- This will live reload on every rebuild
+    }
+  }
+}).catch((error) => {
+  console.error(error)
+  process.exit(1);
+});
+

Re-run npm run dev and we'll have our live-reloading dev server up:

$ npm run dev
+
+[servbot] Server started: http://localhost:8000
+

#Conclusion

If for whatever reason you've made it this far and are not convinced and maybe want a more batteries-included solution, I highly recommend Vite from Vue.js creator, Evan You. Vite actually uses esbuild for its own development mode to bundle vendor packages. Otherwise, I hope this has encouraged you to dig deeper into esbuild and to not be afraid to get your hands dirty in writing custom Node scripts to do your bundling. Sometimes what webpack and rollup do under the hood can seem like black magic since it's all abstracted away from you, basking in the comfort of a small config json file at the root of your project. You can cut away at a lot of that cruft by using simpler tools like esbuild, and get perf benefits and a better understanding of your tooling to boot!

\ No newline at end of file diff --git a/blog/simple-state-management-in-mithriljs/index.html b/blog/simple-state-management-in-mithriljs/index.html new file mode 100644 index 0000000..9bb3f6b --- /dev/null +++ b/blog/simple-state-management-in-mithriljs/index.html @@ -0,0 +1,83 @@ + Simple State Management in Mithril.js
July 31, 2019

#Simple State Management in Mithril.js

Mithril.js is a lightweight JavaScript framework that has become a staple in my development stack after I discovered it two years ago. At the time, I was looking for a simpler, zero-dependency alternative to React.js that could help me learn modern JavaScript UI development without needing to simultaneously learn and understand various build tools and framework plugins.

I've since learned React and have come to appreciate it for its influence on modern web development. However, I find that Mithril, a framework that sits at half the size of React whilst containing more features, has remained my go-to.

#Using simple variables

When it comes to state management, Mithril is as unopinionated as they come. You can use Redux, Mobx, Cerebral, some implementation of the SAM pattern, or best of all -- just a plain ol' JavaScript object! Mithril comes with a global, auto-redraw system. The virtual DOM created by Mithril will diff against and synchronize the DOM whenever changes are made to your data layer. Most commonly, the redraws are triggered after an event handler defined in your Mithril application is called. But you can also manually trigger a DOM update with m.redraw.

What this means in practice is that you are free to structure your data however you'd like, and Mithril takes care of the rest. Below is an example of a simple Counter application written with Mithril:

let count = 0;
+
+const Counter = {
+  view: () =>
+    m('div',
+      m('h1', 'Counter'),
+      m('p', count),
+      m('button', { onclick: () => count += 1 }, '+'),
+      m('button', { onclick: () => count -= 1 }, '-')
+    )
+};
+
+m.mount(document.body, Counter);
+

Live Example

Our state is just a single primitive variable! For small applications, simple widgets or one-off UI components, the above solution is largely sufficient. What's important about implementing your state management solution is to understand that there is no silver bullet. You will be able to predict your needs more accurately as you work across multiple projects and grow organically. Redux is a brilliant solution for modern UI state management, but the 9/10 times I have attempted to use it out of a desire to do things "the right way", it was absolute overkill. I advise reading this blog post by Dan Abramov, the creator of Redux.

#Using POJOs for state & actions

While the above solution is simple and likely sufficient for small use-cases, it introduces one problem - we are modifying the state directly from within the view. It won't take long before this approach proves unwieldy, and you're scanning your templates trying to find where you wrote the logic that is altering your state in (potentially) unpredictable ways.

We can introduce indirection and a more versatile state container using plain JavaScript objects. Our Counter component becomes more terse, yet more expressive:

const state = { count: 0 };
+
+const actions = {
+  increment: () => state.count += 1,
+  decrement: () => state.count -= 1
+};
+
+const Counter = {
+  view: () =>
+    m('div',
+      m('h1', 'Counter'),
+      m('p', state.count),
+      m('button', { onclick: actions.increment }, '+'),
+      m('button', { onclick: actions.decrement }, '-')
+    )
+};
+
+m.mount(document.body, Counter);
+

Live Example

#Using factory functions to reproduce state & actions

As your application grows in size, it might be preferable that your state and actions are easily testable and replicable from the beginning. Further, instead of relying on lexical scoping for your actions to have access to your state, we can use a combination of dependency injection and closures so that an instance of your actions will always directly reference a specific state object. We can easily achieve this with factory functions that provide your initial state and actions that directly reference a single state object.

const State = () => ({ count: 0 });
+
+const Actions = state => ({
+  increment: () => state.count += 1,
+  decrement: () => state.count -= 1
+});
+

From there, it is dead simple to reproduce your state and actions objects respectively:

const state   = State();
+const actions = Actions(state);
+

Passing these to a Mithril component is trivial using the attrs property (near-equivalent to props in React) and object destructuring. Notice that our Counter component remains virtually unchanged:

const Counter = {
+  view: ({ attrs: { state, actions } }) =>
+    m('div',
+      m('h1', 'Counter'),
+      m('p', state.count),
+      m('button', { onclick: actions.increment }, '+'),
+      m('button', { onclick: actions.decrement }, '-')
+    )
+};
+
+m.mount(document.body, {
+  view: () => m(Counter, { state, actions })
+});
+

Live Example

(P.S. Credit goes to porsager who shared this brilliant solution in the Mithril.js Gitter, nicknamed "Mitosis", named after the equally awesome Meiosis Pattern by foxdonut). This is my preferred approach to state management in Mithril. Passing your state and actions to child components would work as you'd expect. Simply pass your state and actions objects further down as attrs, or more wisely, be selective of what you choose to expose to child components.

#Factory functions with stateless components

You could also take an approach where your application is composed of solely stateless components. That is, every component is a pure, deterministic function. Hyperapp is a JavaScript framework that does not allow for local state in components. Instead, every component returns a portion of your UI that reflects the global state. While I highly recommend checking out Hyperapp (it's only 1kb gzipped!), this post is about Mithril, and you can use a similar approach with Mithril.

const State = () => ({ count: 0 });
+
+const Actions = state => ({
+  increment: () => state.count += 1,
+  decrement: () => state.count -= 1
+});
+
+const Counter = (state, actions) =>
+  m('div',
+    m('h1', 'Counter'),
+    m('p', state.count),
+    m('button', { onclick: actions.increment }, '+'),
+    m('button', { onclick: actions.decrement }, '-'),
+    Child(state, actions)
+  );
+
+const Child = (state, actions) =>
+  m('div',
+    m('h2', 'Child'),
+    m('p', state.count * 2),
+    m('button', { onclick: actions.increment }, '+'),
+    m('button', { onclick: actions.decrement }, '-'),
+  );
+
+m.mount(document.body, () => {
+  const state   = State();
+  const actions = Actions(state);
+
+  return { view: () => Counter(state, actions) };
+});
+

Live Example

#Conclusion

In the end, always do what feels right to you and makes more sense given your team and/or project. If this has been helpful or if you have any questions, drop me an email!

\ No newline at end of file diff --git a/blog/validating-checksum-on-windows/index.html b/blog/validating-checksum-on-windows/index.html new file mode 100644 index 0000000..64a99cd --- /dev/null +++ b/blog/validating-checksum-on-windows/index.html @@ -0,0 +1,2 @@ + Validating Checksum on Windows
June 04, 2019

#Validating Checksum on Windows

This is a common command that I constantly seem to forget and have to look up over and over again. Posting it here so I never have to search for it again.

certutil.exe -hashfile "data.iso" MD5
+
\ No newline at end of file diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..57880bd --- /dev/null +++ b/css/main.css @@ -0,0 +1,289 @@ +:root { + --font-size: 16px; + --font-family: monospace; + --content-padding: 2rem; + + --post-font-family: "PT Serif", "URW Bookman L", "Georgia", serif; + --post-font-size: 17px; + --post-line-height: 2rem; + + --img-max-width: 85%; + + --color: #111; + --bg-color: #fffff8; + + --link-color: #4e5192; + --link-hover-color: #30325b; + + --code-font-size: 14px; + --pre-line-height: 1.5em; + --code-bg-color: #202020; + --line-color: #dedede; +} +@media (prefers-color-scheme: dark) { + body:not([data-theme="l"]) { + --color: #ccc; + --bg-color: #151515; + + --link-color: #abb5ea; + --link-hover-color: #d5dcff; + --line-color: #333; + } +} +[data-theme="d"] { + --color: #ccc; + --bg-color: #151515; + + --link-color: #abb5ea; + --link-hover-color: #d5dcff; + --line-color: #333; +} +@media (max-width: 768px) { + :root { + --content-padding: 0.75rem; + --img-max-width: 100%; + --post-font-size: 16px; + --post-line-height: 1.75rem; + } + + .archive-link + .archive-link { + margin-top: 1rem; + } +} +@media (max-width: 1200px) { + .toc { + display: none; + } +} +/*dark mode switch*/ +.dark-mode-container { + position: fixed; + top: 0; + right: 0; + padding: 0.5em; +} +#darkSwitch { + display: none; +} +.dark-mode-btn { + opacity: 55%; + user-select: none; +} +.dark-mode-btn:hover { + opacity: 85%; +} +/* Main */ +h1, +h2, +h3 { + font-weight: 400; +} +body { + font-family: var(--font-family); + font-size: var(--font-size); + background: var(--bg-color); + color: var(--color); +} +.main-content { + padding: var(--content-padding); +} +a { + color: var(--link-color); + text-decoration: none; +} +a:focus, +a:hover { + color: var(--link-hover-color); + text-decoration: underline; +} +pre { + font-size: var(--code-font-size); + line-height: var(--pre-line-height); + padding: 1em; + overflow-x: auto; +} +p > code { + font-size: var(--code-font-size); + background-color: var(--code-bg-color); + color: white; + padding: 0.15em 0.3em; +} +.page-content h1 { + font-size: 1.75em; + border-bottom: 1px solid var(--line-color); + padding-bottom: 1rem; +} +.page-content p, +.page-content table, +.page-content ul { + font-family: var(--post-font-family); + font-size: var(--post-font-size); + line-height: var(--post-line-height); +} +.page-content img { + max-width: var(--img-max-width); + display: block; + margin: 2em auto; + border: 3px solid rgba(0, 0, 0, 0.2); + height: auto; + fill: currentColor; +} +.page-content a:not(.zola-anchor) { + font-weight: bold; +} +.page-content li { + margin-bottom: 1rem; +} +.controls { + position: fixed; + bottom: 0; + right: 0; + opacity: 0; +} +.controls:hover { + opacity: 1; +} +.zola-anchor { + position: absolute; + margin-left: -20px; + opacity: 0.1; + border-bottom: 0; + box-shadow: 0 0 0; +} +h1 > .zola-anchor { + display: none; +} +.zola-anchor:hover, +:where(h2, h3, h4, h5, h6):hover > .zola-anchor { + opacity: 1; + border-bottom: 0; + box-shadow: 0 0 0; +} +.archive-link { + margin: 0.4rem 0; + line-height: 1.4; +} +.toc-header { + display: none; +} +.toc { + opacity: 0.25; + position: fixed; + top: 14%; + left: 1%; + white-space: nowrap; + max-width: 15%; + max-height: 600px; + overflow-y: hidden; +} +.toc:hover { + opacity: 0.8; + overflow-y: auto; +} +.toc ul { + margin: 0; + padding-right: 0; + padding-left: 12px; + padding-top: 0.2em; +} +.toc li { + text-overflow: ellipsis; + overflow-x: hidden; + padding: 0.2em; +} +.light-subdue { + color: #9b9b9b; +} +.line { + margin-top: 1rem; + margin-bottom: 1rem; + border-bottom: 1px solid var(--line-color); +} +hr { + border-style: solid; + border-color: var(--line-color); + border-width: 0 0 1px 0; +} +/*! Basscss | http://basscss.com | MIT License */ +.h1 { + font-size: 2rem; +} +.h2 { + font-size: 1.5rem; +} +.h3 { + font-size: 1.25rem; +} +.h4 { + font-size: 1rem; +} +.h5 { + font-size: 0.875rem; +} +.center { + text-align: center; +} +.list-reset { + list-style: none; + padding-left: 0; +} +.block { + display: block; +} +.inline-block { + display: inline-block; +} +.table { + display: table; +} +.max-width-2 { + max-width: 32rem; +} +.max-width-3 { + max-width: 48rem; +} +.m0 { + margin: 0; +} +.mt0 { + margin-top: 0; +} +.mb0 { + margin-bottom: 0; +} +.mb1 { + margin-bottom: 0.5rem; +} +.my1 { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +.mt2 { + margin-top: 1rem; +} +.mr2 { + margin-right: 1rem; +} +.mx-auto { + margin-right: auto; +} +.mx-auto { + margin-left: auto; +} +.p0 { + padding: 0; +} +.p1 { + padding: 0.5rem; +} +.pb1 { + padding-bottom: 0.5rem; +} +.py1 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.py3 { + padding-top: 2rem; + padding-bottom: 2rem; +} diff --git a/css/resume.css b/css/resume.css new file mode 100644 index 0000000..ad7d92d --- /dev/null +++ b/css/resume.css @@ -0,0 +1,54 @@ +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +hr { + height: 1px; + border: 0; + border-top: 1px solid #e0e0e0 +} + +a { + color: #373969; +} + +ul { + padding-left: 11pt; +} + +.resume { + font-family: 'IBM Plex Mono', monospace; + font-size: 11pt; + line-height: 16pt; + max-width: 920px; + margin: 3em auto +} + +@media (max-width: 992px) { + .resume { + padding: 0 1em; + font-size: 10pt + } +} + +@media print { + @page { + size: auto; + margin: 0 + } + body { + background-color: none !important; + margin: 2rem 2rem 2rem 1rem !important; + } + .resume { + line-height: 12pt !important; + font-size: 9pt; + } + #work-experience + ul { + page-break-after: always; + } + #open-source { + margin-top: 2rem; + } +} diff --git a/img/blog/brew_candy/1.jpg b/img/blog/brew_candy/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3364bd60f0d249514734a345676acd1378cb130f GIT binary patch literal 81629 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 hj<;P$h`V+ula`9>h(we)AE?bB&?&X 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 literal 0 HcmV?d00001 diff --git a/img/blog/brew_candy/3.jpg b/img/blog/brew_candy/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..146b676cd5bebdbb0481947ea9951a78eb3bc431 GIT binary patch literal 61420 zcmb4~WmFu?7N`dg?k>UIoxy@T1PE?H26vZ040i^1cOTqIaCeskcXvzPm-&F0ryJ}a}UQKoN@5SFg0a%K%3bFtg7#M&&^bhcR1Cdt7+r|F4$J>LA3AaXfP(+z|7jP@zxJnM0e|aq za&vR${D-+XIiX?z6}5MN#wQGbOAG3HXod*%qOXPhpBljpYT^8c0rgt2fAtxR1yoQA z?r)~}!<5jW{HH&m!$^zsFFUwUJ4ssa|6*t^Y^fFW1eL*tUaG8M{$l8WhV8O~{fpuF zc>n;bzdZz}DFfxdJq`Cx5y}XE$w0jgJ7|UUukN%J;$IB=rzuvi{_8obe|os|Pd>`u z`MjT?jP`F^0G1Me*Z+^_wD$fhqqYAx|IyXj`I~8=zSr9Qn_GPV0O$<QAGTz_vaM0ec#Q&RNR-r8U z5064w>K_?dC`$ht>awHU5X+{lkBBwf={- z|A&qKr|p`5_oKShpH>0@P7aPXCjUf>KT*K~WaeQ-Dag*n&Pl2ER)v?HOMnX+8rV6x zx!Co%DEYW3-9c{df5!}SCr5W1M-L|tH#TP*b9WC{5Wv*K-3h??PvSM>fvQ@V0=RfN z`2;yRxd7a}(jaqasNo0vTgC?!{!@`M=wSg1i!dvkHVj3qW&i+g9{{V31Aqz6`F}*G zKYD*U@y|fF_`k{ghNgdHQva62CH>njRPWC?hu07igm&>iGw+|-_E*UtyYR4oWN`la z4INvE_|RVf9XU-lL0-V`6@U}~9uAsd|D56B;Smr~5D^g&5Yb*CBcWiRVPasQp`&AB z6X0TE;bWtt<6Jz3#l9LjV6A%#-{V@UqRYgQVL`6hICBj0-BKrSMzrO>p zU%?u|^uxhW17NXX;ILtS_X5bEu0i+{GX71_NB|41B+@HrDG4+P{S{FDErk}sK}&xx z1JK~0zQKaSf*RO3n=IaUu$qo=j+9-y&Y3ReL#cYKP$@&564P{_?b?-2cjK`}T(U~l3? zs3Rf@%Z{X&a``eubzQS(&#QF1wXWNXpT4~~=UU9rms~ExwbJjG*H?R*MVFdmfxVuy zXAiqb$&qwj{phc$C1pBeJYt8lPFLHg%sUl6SDDA6uMV=dK5H-ONQaT=ghkFOBHK;4 z0m{kE4*Lb>uHk(`_>)v228mw01MDX(X)<>Uxi0og0)2i;8N8kGRCPV_&B~-A^C#-@ zgbMT`mGGiARyXL*=`WO*RUh|Eaz2Bx&9za&X>BOeax+kj8B%k00cYXA+AqRuvRyq!rF<1VhI zD-R^q*Wql5?6DC1-IGp?@}l6RRO!t!{y z<-Mv-7b4ZeZ89-PeS3RlS1|3Kt*$0V-CITdi8_U_CB#RE17Bo?sPMH4%|?T# zL{4-?DiC1!v~)bu=J-hW9{1Iir~q31!*VUv*kpVuE(9Koo-X%Vz+MTJ^csU7K_9+S zI3Z7@Z0pC~5jYTqj}25UQ*TlBQ{l{JXx;1xQN#=LN{sT~}Oj3_yDu=3wiKu$jZA)t+Gn@D5jr8vtf5&>Z24$~u@HFUw>`Vp%5H9KceS@0 z;XIo!{m7hlL%@IWaNBU<8#TF8*P3Ceu`jq@!Y`Orj-S%uNgn7il5hyp*=!4Nh~4LU z{I(Zj!f2?L?fV-LtfoUsXgE7Qj!YW}w$f*??{Lp@m$Y>=mreqUhVAWTA+vP~a>sE< zq$yr~ZMBW5eh8^K>**7JL(ZM+E>yBy8>3a36&!`mFg?`m*s`CF^q!gqAy(l_6IUBJ zGtc6#=0UWwEI0M5V{mwr4A@6lpnPPg@+x`iBd?k^kFZ;l#piW)WZLmG2eFT4@-E7O zmCS75s^`}G<$7~)X&7f<{4B)#i^5XrVSvQa?L&vzz|4%ux>s{W7VnKw@ND7aK^8`c zu#H$3;F0Y;Y7wbWCAxC$-g|ci;k6Ltw$yn|As>&clAGr7Hs{G!Z^q-15o2XlKO=r8$F`v_ zT~%+MoZQRGZ#ZiIl(us%qxNe5wx@N-h`!}YseYnmXu0Rpqk&=PmcGSzZ{P^5IK>6F zBom@(;fQxg$GJ`;VT|uYJkU~!$txV0{!M(&(KoZM*X6pkDVyHd$Z8u!jc z*;DoQ)BS`-mhy`;rC5xcn_X`+lvYMRM6_&_r80~vP`by`#(HX1hD6MUs&XP5zpFo_ zsj~F?Pzjb-K1G|h%%|N-$fs14w?Cue&PerXT?>e8zv)0JtK!VW7pmwJRI+W71#-7) zmyK4fvp19;WKHCGPZ$(YREX)TksIT-U9H)DcdpP$0&CD_hAqJrX*{_QkYzT(JT z8L{mInX{;o4GvvSW1RMTNk+<#egR7jDF}9iLF)URWl2M9D)(^rM`rAO8rB#l;UmO$qdg*rPK46y+$2^CGV4;21z)A4h)z~T6yDg_ z22t;wm|z$iJ;=Xk9)xzYpk(AE}VS05Araj?( zR75vhw6Q1BMOZHjhda1JNcWO$=32BltKc-eRv(^nBJ>m1!ke#bbi9B-QF-1upv%dJx67*DMb@0hpgKIlJF-z=Oro$`Y8>FB;Q8<=n`7gE8*<%z0c zT}P=b6I&EEj-%=poX6OC!~ZTZHD`kk#vOekHPf)AZMHseVJT}DLbi32NITN0I4V}n zd%R!1eJC)|qol{Kyu5gAb^oLAA=^rriGT6{I%pW=aV*G>M7)LPmWBPSn)>fPa196& zh=}S<2^vSyeyT&w8~NO4=CPX@KbvMy9je6Tk4pVHLH7?oa_zE_W-YByYl&*AIS@8IYkj4UD}`y1X)#j2(T4o!w;Ml0 zoaZ~aT-kGHG9P`vOvs@^vcQ}Oets5`L?8>~$G02eLXea{&&U(g zic7lxvhw!iYE!w$RdY&D2hod$V$7Sfu$q2g(hMi}d7~>ciR_5#xR-W?dzfshhqb@X607U8_n zrWl+MMHPNCGrKw*11F_dO)0!hLJk%A1$CpU#W|x1Ah2a!t|I9uyGtvOxV^2qDBP10 z(Z+CZ%+7?sA)@E}wf%*f98pogz3L$C=&?eq0?*eXi9^MXY|_bVF@uh)&ffr`2x9LS z*9Zu?ER9HcE2}mO-`GN%fk9+}5|TBW;?$KqN$p4tp>LI+rqB#ph0sL#oYm08Vyzpn zNCm3_Zk~kg(542hPM$+!Rt+F5!#iSMN&pkdt_QRiR>RndZ zHS;H(@9SG%fe13&+h!pyHWLgCwE8|wa2X8JrR#eLKi_&j2Dp!=9Au)MLPNJ##Mgq< z@nGm;{QFtTFEPreWaBYM5ZC_wTRD{; zV8BGfkkci`8xGu_a^wyVu5a&qsT)8JL0PtGHiSMWxhO&$60+uOw8~|DIl5tC#MAA* zawYR^UsQ^7IQWf<3#yYGEC~7{tSs5+H4L{fJ$jDPSC77>nyEZN<{N{o|x!}Y?-}!y7?1ZGz zL@lW;!RNdf;O&-Mg65|>yjZgZ+8D+fyqjnOHZ8ibIx8ueLe;k2Gm@-mG;w}^sw=|s zl+=~Q1hARHH`>p@H(+H2szOGMuSc#x@BJOsAgviVt^P2w z{(*3LoQXq*HWsK5CJa|>S`Z6X=+e=uc=% zm=&X)DFv&r(y%TrU>x#;t)*uu=ckzWcLFo)rmT>%OrJwhP4DaX z9M`O>@wff&;7)zj72FTA*a!Za+`(W^+F0L82lkKYWBW(y$#G0&k`49D-EAFcQ!`T( z_G~}M3CbFQXUfOiK`kp;kCw9sSA)Bihqyw8=8}8j{6Ye3pkz+={?-o{x1;$2j%yVc zG!h_wUS|&c<}zL9(;M{-vbnS_nUf+V6%BbDPb3BO={E=QP&Z+#$#SBxkmN0 zi^DbQ$?!HetFuX5Be~25^tGCzdQ7+zb8Nh=&0F_JS7yG(M~d6mS-{&~D<`)_D`i@+ z18wX9J%hZ>G(6ZcB;RMgeD8=8Xm27uF-krN>X31_E2=q`NnBUA4=&}$!8ra(TbSh- z`NW~A&%~^&kX87}dN7aJLLnthk)h)7Lw51b?r9QV)d#j-4wUs^<2|8nO zbYA@iSaotK<>ykjnx#twnbu^+bInjH(9?oF$+H|3V%L`Cy=<7f>V`*+(0mS*-QNx@ zWt7Iq^vN8nkKyn{yIxh(l1Xu^Fa=99hyt&iXSk~rE!l*We-IVKP3V8m6#Ef$^!$rV zjr~@f+jLmhn%u2f>u~C)Czm>RfHNCWjWX?jn(%PDBu0e zVMdpyn?0W3QG3n|4Noj;j&8^0{Y5fur7c2A!^C@{qzvq2m}M!;qMxatjHN~6sgEG4oBsT(5`23 zDB|F7)v_>Talco`xO6tLS03?h^)GM1557z@8<1q^sjG~ZfyWdr9Z!`YkGJ4lN#m@1 ztI{a=8(@&|+1SR|7KuL%&on)s6=XQ+ex$e%ZaNnN-UT&Sb8M! z{$q@wx8?!aP~WfO5G#XBqa1$!3U zgo#Osp*vnP(lGzlv*}n%J4icZs|Y)3E~BE24W;QPr|{4{vaI{V4|Rg*%CBJE69Wcx zjb52|54M?#GxRf5_))5Oz)0$Ioma<-!nx$K>ZQhG{*uB0B)O)Q_g?B{7e^#n8Rz#? zeL5G$5zN6mcC5bvNQ>RgKY9ZPHvC`9fv?wT7~iMc64lfkQk|wahf}+3fx0bIEM$c( zR33ykIo}W8Slj%InEE=%lP_vxFDJa3$4>wfHB7t>k4rG zsT;I?U#cWcWib^0DfTzuH4!1(KAwxsrJQYI=w|rZ&tMfRQ}|gAeE#%}(xU8d@5WSq zo@n4)i7`#Tqu_@OH-%rPGi;jl$XDWrlSqG;VP7!FMBN#HtgTh@jP1#N%p@NuaVd2i zwA&F;?I9HlFzL!~EnwGJOZUsQ&!>;3_M*l%8mw158FdRwS&l)nJw0iSjA64WZ1}a{ zp;yHhb~=X8wavJQos0N!=}rD@u6gaK2b>rAQIN4qUGa~I;RNg9?$VqYEARJx`z?o4 zE%j9hBi|%5&jdYrD}l=&UmbK>X;#fw+gy1=?7a8fszTzK z$Fa`HObrTM9p>u32{1J#h<*fygI#Q&dKR2D?XqHCxQH}XKn88auzD{;!XRBCRId5OfyfUc$%(SX&q{9Br zw7HYCihuy0YH>d1YTqgG@^d2(#?Hn)7o2to8~huy(VC?#+-Q^wX*liXj&QR25k)F6 z$M&*oTjQwb^;MP%J28#7lZH@X6Pk-H?+NKbG0Re=kX|)gC{48QoozqH1>ORU$>7}h zeSzemSR!lGiTHpfmr=CtaM7OoYxXy6BS~qKkSnfQzLM1s3pOLLW6huRLQw0nxb__n zx~i&=rC(NC0VkGZdE-RJ(dlF2$QhgCZb6Y_aS`ek9Hp>V5ZIWvMUJ%NMQKiabZcT( zznBXmuN_c|MJL3cqukU76!q+FdQSsT}ayDK$n}L$HPh;EM#!MNc?JoR|fqp z82FV6AxbuNs)a74xX{?ypSWK~I1vMLTLS9F$OVd&%R)TkPbLKE_mEK@d`Ok#Ai!8?1r{kQ~hm)9F&7qTujbg7iR zLe|Fo8CKU!9v1xTCpOdABFEz7XxT0Um6&%;#KZ0w32d}+1GIC49CL9eBaj5m5pw3o z42-EUyp1gI{HG}!EtOK63r)}CZ1}#qc#V`TCMEaIm_ohia6qQ&JxIpbX9H%C1U!(d^NxGTtai~B2*#Eg6O zU;fhYmVoc$st4(4nep!Ts-t;G38$!U#QkZ|x_ZRrbFWB(t{4ydO4P_SY&~Cf#lJiA z$tM6ISRLWb_#llvri)6jM-=ff!>gLIJ~CIE`VwIMQmzn&E~`ulIp1Z6{${_qsZyuhL^9WmnUSN_aRw@60c^X#7n)_bTzCjMqo z+esVs_=LmnzgsS|AgB6!n{k|js?i4JloNGka;jN0QWNx<>NkoF0|n0lBD8|=pv@{vIbX(`1Em#sOV}lk1+;mm@Ur_ z+=6p12J=6BjgTf${%R$CA)Q)x1H#o=Cf%ZGcZ)cOS9;CrR12}SAlV=+JC|4VDuX>G9TeteBw|4 zV4x+hRhd!seJFX@@_I5RyBFL?HkFn5cHq7wNT~o>n~lQ5-7@_x?mVI&!ET9|Sz<~q z@WJLrUa!H|hZy#a`-|hbb0c`gxFI}3o+n+kOPXDZ+~rGWKKzVsLy00zV<9DBEU^=t zhJ?S4&Igm(AD+d>0&)+^HK`fln%-Mf-+S7&SSYG7kmzd{G-%K{kJXC$^w+`&QUjDU z7mM|$Mfoev8)L8#Q+3OwDB-{8%do9$YKHk_YBT(@Y%Zyu$+YFtPZ?)o(wnizZy?;7 zexsq6{P60e{)|46v>_Z<-GSeSK0>#4XwzU@bw0wQ@8;n9I4*d2*vhahX&#x@#=_IS z&i7ZnzeZ;&S^(|z5MpJ~V6bjfLX8B_w&vABDY}KTjG5psviHOr3*yXa83fr$tT$;v zEU5S1F!-WU;kCVDm1t@HLI5izUs>W|`_| ztlRREmFs)&ZeE3>YY#4wJLV?v^t_kU9bG~J6Ir304r_1Z_QBz8*AWd^rW210~%_xt_fS8t$l7PKUx})a6C>Gkg7xrrK#0JY^dx`@3TO`#693HahS_Y zh#lZroC$WvTFy0pAXPCol5OXFX}e8o#}yAPS97iOXYb5Jie$@(I?g`0`3)HT$o_IL zw)5VH!sg?-sVO%_MXE4JFb_}tGea?4324@?#N)*nA1UkrTv;+*9~jhoFqbip8?tR* zEzfOyArh(IReNnx2jK{oTHQ%pu6OwK8_*N9&3bG-strW-Jh-eGj}$&p?(BL1)}B>5 zX_cJcm-TWK+t%L*#&_bkpzs;%u_~1-jg$Oj@|zTY?_1Fus5s> z@sYEYsyso{k%%f{vkKiIrJ(sAeR+gdQJg5DFcm7gn=qjK35|jo+fQQzWltQq{E4RP zY}{r)#G7s(-q~h`(ftNAuUGh~OtVFC=@+uTT@F3&d6mS@p zUX&Y}N+ij_goR(;-*eG}`3;XjA;PwZMQq-LT~CPIwn^U}&4zeJ8(u z{I^tm$&i(CFO44cR#NcBb0>N}>rOe}n?A77$lIdsvk$W#!^|=>M9LN>c+&%` zWl%esdAf(9Sk_kKT~>UL2HOYXjSKrWWV?vtOCF1 z_-#1%0b>f$>I2K3pb^Rt?bOM`&ke<)?j*UP)w@JM?NHhzlE(0guYC06`VFo9GY538 zZ?iD*Cx$*QeSGtLA1xoD6gAoEWQRFP3#Oe1Sp`ePe%SUKmOn1rq$-ipTkaNMtocU! zfpR&rma7T-Wcj!zq%NMLW*bpxCyCXakjkw^DB7>qtGw>*bV1dP2f3rFiow#;k$!s; zraD~o+cz&Am60bqcQj?kB34n+X$%`g1@t{Tp}qaHPhY%n$o_L9Z>2$5iyZEHxXmu!P+pEA+I0xg<_@4gEJ+I3`JI(N)k=G{k72Z`9^G}~_gD1(*N-Rf2^bAAD|hBh7Hip?RsOiIQj`iW5@ zY@aNKR8X!dT1=ej%Ld#mMZHB$$SoX~#QQB9t8lq!?_Kc|4;DFm$J{47@bTnJ(fvMK z^30hGMcQwGuxn;b-CU+skw2eYC(*lmZ>q3@FY^4cvu?0xKtfOdy-$ty!9Q~waLWoK zu)0_cIn!*-8xE2lsA3Hcc){Gn#uC2$5wdkP*KHL$WHlq3dg6U|HX&?B?)k+eufI4> zT+N7*7HMk&hlyXAj7Em5fMwn_0>oh2*cmgzQy70biCRm`GWr0v7`x3GDE2KljU9DV ztd+-mLGUkS@LUg?MHtc8!4-Hir7bQ?sBw`n0*pqfIi;I=Ubb1Mu}gC|dA|yNU}W#j ztXY-2L;vd|cCgt2?a_LYR*t}hEm5v%C%?q4F!r;e4xhkm7O@$}*)FME!fecCr5T5wZ3 zAxYmaVZk^w^8wQ|VS?X)9SLlC9V;+Uf41FMyj3v>4pLlpQ}EtEGu&C4$jeDrts&Uu zn1HCg0Y4Sz8eqy^J5I?=Jp422or>TW-#+kMI?$g^_}2Gv|hB$ z2Niavr)-&v{9!IR=Lfc$3I@E*NbXS1%nn`uF4fc-Qb=@fC|lNkg-jSLO#k#(IL9@U zdOAF2>lAx@IZNN^2sBk`^=882GgQlM=P}f-qfH^NL$P%N+-QR@E}sH`rh>(Il99L& z&ue~f3(Ku7LJa&~JyU*4uQ#a<$Gy7I=3%1oR99$s`n^t+{PTz|dZC*{l%Bw+__;U{ zdM?jH(S#&=u+Yf+Lx`(w%k3Qx+vaD8BpbdzK{ya&m#u_|< zlbz7kW-FWuVGFw1#9hgIS~m3KeVQ056)0vAwV;?5*iLoOHS8U<1Pu$n#$i|+0Enkp zZ^cEYoG@obw|@zhCwSXxrF@j85+$Zz--GKD8ri+H>X$UxKe!e4=v`*0a~tr;6HEC# zsF(NkE`BO&jT;hklYYB$EJFpO6W2bu`W(FK_xb0pLs>UjBFn3vn=#l@MAfXSeQ2LD zGkgUGz7t!R+Tk!B%Ta%DG-iqihBV*nyMIWFTJn7NdSU8jE)(06{Vc{Z&g#eqxPd+U~`E^&kYYinv^T3U~Ol zJ=uSBA~3O_t(gt@#tZA*4|XM-}lQsxE<;cH`06L!o}pRXkQW>5*&sEIgA8U z`l_nPt(7;VjxgNJJ!(hVX(z01Uw0XTUgZpSQE}T4Pd-<$pG+nBf_RFQ>lQ>|&Qs^| zmXx2eTM113vIFcJuP3Hvl}Rg?S&$+t*k9ZhcDOB=mdu%gxUkxk6)Ir2qxcteLBYD9 zhIkaq0XdI^)4Ej!*#`$pRZ-k^M)L`6J>4GSw(8DQgZQp|H+E&l(?Gj%#GeVYPO_S~ z^ace3OgwHRKWK7!RK!RV2!+|-?C%>%D)n*OPj+Ni%UP^P*3pQxS{@{+ZY`X-u4lxj z`4AkJY%>lsd13gru@=!Hj{gQ&2Y7DGK(M?FQG@!13Qd+LjJ?b++>dWw_OJTI$;skd z1EQ5gxigZsw=?3w)yPsyU5$IDP z?6TOA9a|H(ADF~26_WZe$6=;+ z#PDSZw!-QiR4Dc2i+6RURgq5xFlJXfrW?)3Hgb1EAB8>E(_HAytZErfO)eAiNg@M} zW6@%0N3mu^8*B-l7C=3TOBSz2!V5C%AJ@u0IiyWF)*OGH1UhChrCX+-9YB5q+!Gs_ zIMo_VZ*4X0!mCw5GxLd2FQFrZc=2) zTtZJ$F>T_546f4Qk3rD)69n?Tt{fjju`)=${?Z_Qptd+pjmZhF}8w9TuXCXX^AiL?9QPpQTtYyzTI($FS#7La$tmAF`haKBe~fd6#=JjGyMmB^FT+BmQ2ik zZC}B1yiR+giZL()lWS6YXmsT*kN(9S-Qs>gGy z92hJAMY{is4BU>b>y@q3$qOscRHc99%e#xgp(W&IJOQ7u9<%QExluFoc;~nbHmO2` zgR}%*1iUUvuUx|_SUEz5mz#j=Lp6;zrzuJPtf`YEHn=3wJ&_toDhoe~oAOaFELSt? zCOzaEe*vp{OJDLqP_2cY<6UQ~Kl3dG!xjFvIg!kwA7`42`$ka5(qig7fiGyu(aJz?ei}4* zbWZ!Tc82L9lC5{VKmC&aWuO&tIHY!-erfa5m{DotmK*ES5AuNYe0Qsp+y2e8(J#Ro zj1RBbj}JCr)l$~lq6tijjN(Zv_{oU5;_3ZIrJ^ew>%huq!S3v-IuBL%`cEH=T)ln+ zzCqtVGGhavTh#x&eT2S${Cg`m3@kPr77is97d$7m1g<(Bx1{MCm(PE_dxY-z7Ki!u z1EjMg)YPvnqbF71!=d=>BV#4Kt=q?Mr&g!vkHKacv}E=ZGBIF;iF%R|1)qJVDV9Mq;JZ6TsmR(++$ZGL|vV}dOH zh)C*{UY8+!_?W?Q9&w}TZ+PpHy27zpZ%aJRj+wDC zw0d&RvcLwV{Dsk5-TY!xsrLo5 zKW*Pu2{MkTP7yr0g*y=AfP3ag;(OyKNcR;{9A7MCb7bFJGc+Ynfd^x&|61`~l&W#{ zaI$4ReYT#Sj}it4M3>}a$#G0Rc?WN($Dy}E83pNHoJ^6-)Puf4-KEsSV}@!)pc zSLKb;|6nyPXYFYI8WiRxbr!&V&x8K9amu)yq&GzNTuWY{0jruB!}{H~pwa62%Z>zX*Ruegk`xx(>nRzsefyaKoEoVX? zUH1e9$&L(md}uAMHfz?qD5NdkA@rfwvASIl_PHH#xm59B@GB=qsf(VMjtCriV@;!6 zpSMqVv#qORjEa!t{LvGTG`?&9%FcLp|>sQP( z#|v8GtBTaX`aTX><_8p+W60&4fATGN^Xpr-!V=YAau4yFOcsM|no2W~Ew$VnGxoFk zV!STb3UhU&?Wr667aUU-TV-^Y5)mNBJrQL(=z5b?(CdigGF|o9bN4X$*O@B{#DtJmRTxtn*P6Qfm zQ#{FYDGe9bzh^z{U$b6Jz3q`fX-jT^Zt17?c=GzX1UU8O=v86?*m5Fo`I3pk-8wf< zbxGeh>YTOu8~cX?ztAd`LD!#w@2K;Fg>XP|GN^Lp;g<95+)FJsV)*;@20;OOBHz2> zsMu)m_C89*2`#RN)9N^QS@@|7oG8^Y*3rfheW?3hM>0=Ft?XE@&KQ2yIhqaMCOS;V z{~!WUOQSADOK5p3UBGWbOOr>qmDnUJcgk89AIu+GNTG-CI6$pgr56PJ!NH*f;ldHW zr?UPHfTMb@2=F6Yp$uXBzJanLz8uB{VKny8H;y!FDDYOf&83MU(GRb~FIjD`9RV}e zy*8_~-c!Yp{?)&)LBnBwq8LI=HzgAHi)P3|-PinFJBeXUNFBL|JC5=ET29_Rj%I>0X#-+pATb!2)% z_L(A~6A77(6*9POeIwu_NGUc~^qPM(%a228zHhevI7Xd9P*i@T=Yh7#;%YU5OS@lbaKQ`D+2sR12=lYj{>{#<`Go2c19Z{`w>aCNiDu4xnl|xcB|LC8sii{6%|2h zJ65qnK;uCmw|qw~IziX@1k_y{96nW3!o{89`4WQtEru+vqw3YJ^^KX3IT`gcP7qLb zK5VQ{eX`2n%;KX{F+_hc)tAN*oGw>2w5=-gfYa~m@*^l%r zyh-j5XC<2RG&`jXiMRRP;U3@Ud1kFD z$LbcIM0LgK6{}D=WJm4X!Gs?b8%^tIG!nz`!uiAAt{tGog>S#4qQYCzS0pPmva4io zT0DxPWy^fHt;;unRDX**>F2(7j16?iGsIM~>%LMcvyU-ie8xVS`K9#BS*#qsJ%wu{ zv*}hWnEL}U5b0ONSjR7kq8`oc>~f(20nhR(9d_3NqCzh3)j1!z@kqP zp+wjg4wOIX?LyK*{poCzt`e!6QcH^7>R=#;^m9SjEsp#;W6-S zZZnz{-*CNI`?)lLOkIy=DDGV*_*60xIo~b7N8sdL9C4q*@L-A3>!Kxu5Io}_XyY$@ ztl3kK?ag1NvWxpKO*RfLPd;S6J7W=WW+JFxw&zdq`DwTBnGD_*ePz)R`8s} zbG`pgAb>%0Q`XSnHLSAoI|IqgBYgu>WlefsMK~!rHT0C}X99cv)SA;f8gpYz7m&%< z-vCpSZ*2{|cCum8$?!f3zm!v|<8AEKRPulIy`Y$Y*6Rh+6}dBc+La((DCU7C-+qbc z?L*$WOyz?o*9fiRl6WJFC0KfOenKO+1azwy92^V+G$Fwv{rN5r`js6v91iqB?N8js zqU7W@rIFNd`Hc6*EG`#;mdCaB+mw_!ucq4<@Wwel-9Nj>5XE8r#v-jhktq9Xw}`!+ z$q6(R&6j)itoj>({FHb6V8L>v(`$yr*HLn0Qa#9Fy{T9mRqv^kIIbQhx}XI&Ns}7s zMd{gf8{}p!Xmf31wb;m@ooRTnYrI^vk;yA{!bh%o{VFOgk;}22sZE%54Jc(KM9W;i z@3_)h?6-O$E+cbVMD(4+h)v{X*zePO>#4fF8?pqge3h*Wew}Br{hK0F)qw`20Fo4) z)=YhAzvJHkM*fC2sgDGhyLqLa<7WfKyH)0CyEisjL)zL!3r+cf<&D5OPZL>Ur){04 zoVCJia^etBSXcuH0ZmoJafkO%p}VUZ-IA>nzh^<8XZ!-2KX9Nx%eT{>E-Zr~V~dFF(~n z{E;oMLufEMV-mxnY(+(xKZ^U}@Kk=Tw3Iu?(`Lyn1Nw@4x~cIqES%N^v~dPJK*mge ztoUMA*!Z<|a^e?FgY)R!aK-)XhGvV6(lZAF-mXzYkf7FbXww)OmE&@M+l6h!{_&}^ zHT*8VrB=S>q3D4Do52eHs##*Iz-|^xqmgxR(hAZuy}0*4{8$=?UETD@vGP0LhDNtv zD;E#=mE?t8_rlLCo=M`CUQhY2)5`0)%hx(al>>KgP`=ve8!o$PO^mw6q?Ih%^^lu? zjpMca+JzCWJN5*uduCf zU2!n4wXnO<+jnl{Uq137e)8V(A4BNP(x<#ouSRDrG#^Nb%P6TBVdYqtBTUX?W5uM= zo-59tBOq}w|6Jb!hJU^`X*=O#`VHW0F{*o4tn*-GW2m~EHZ`<)Te5u1>>;Y_paPPe z&)Xv+u?3qhKfC(L9=w6?R4mtHuYswXQ#=JNbDhtxWa(=*=#q2OBj|@OhY$ zf9eGfflirew$i-S*xgdo0MgDEshAA&=o zq)=}&r*+HDJ-O`I3b>JpeWG5&S_*A$i#9q%-YuIXc7Ykq1nj=WZ*=y~UHBZST)Jd8 zm*>lM|D612p!D(Fwa(h^*2}$w=0@(=>3!*Gd~DE#yCuQ+6xOEFZ$JY4II(dR@ZDJjHHSu{sv$!DbaguW{X+zoIVnN=83l8gKr zOE%?xza$($InHmUtVHo7C!G74crp&(+F&6nRjKw(MKidud@|gaGralKftU5<+Z9IW zah#aQ412hvtaXL$f`S06G%nd3Tz~CE%TWG_s?V^FdnECv1-9)63< z=(G{@QG0aLqT+P9aA>V+lizJIsVK+tj^y@ws%>|aaXAa=m%+Aq4y)O0xgB6DDQw!9 z1fS}ITE^3UKlmX~(hh9ru9B-4hFeLY(@f9N20vzf&Wl>ubjqQ%nG#`u^;GKK9Olii zQFS`O+H2`3dpKqr?L7zgMuX@U7@cJu+o|7{;K!n_$`9hG%LMXYy8_n0;c2@;{m~mu zAb5SiksR!z0t`RY>qJrR2lk^MG zKp(2>@=$f1AvM2Igkogp3g?ocx+y9<@2&p;YfxuS*zA+4xyq)~@t7YZUAk^{S2mkL z`7H-!t`Z6@roaK!OK7xnz*P2HUe1^!JjclwY~_s2!281*DpbU=kQz(H+6~eCT`uR66479T--f$P*2DJpt?Rw+0viHR~>Qk zW>relYn)>PlDgg@rZh)|Th&KwcYr!HN-iopZYt+1TdBZQ+Sj##gC)R}YJIMNXx3Ol zlebdkqYSd!(MJ8C^mY~s zulvhrHk(DDk1}@pmDK=@4S8epPTW`hXVE>>>RQ-w6zLpKL^f)a#e*LxL~S&!W?;V| z&|x!Zr)=_sYEp2$#l^>&lqk}w;^Px=z|ZuADc5OijxLD(nbuROo2jPJ6xjMqAf=3YBrlgi-UTN5H)Ewi;glZD(#bRuGY*$xQFVvnM-INgN4eaP21Q& zICz4X%B_7fyxv2Ms-B7ukm?n|(mp2`Q0k@Lj9$)@2dlDI9Y-Hdz{o&cR_&VeQm4Sv zL^gK(+`W5la=7+VY;d!Tp+c>8vPj2O?JGB265Vq-LG`w#-7{{Jl~wnRq2!#x|p7Rod`ko zoE$F>BIRFb4&yjr?pG8WB?wE6&+_c;v_W*0Hz3pjtK`U`-b1^jm>ZF!&V~d2UbZHv{U3lh)*@i6* zC58#-Dwg%+g5gfrH#%gft4*&Th$h*zRiIsgq1F!5S^Cxf+T!1Z7pJ zQqXETZEqnRqKmEuVq+80ZpB95@XmXK9#)qHRqxBo-30gqp2!{rskYRT?n+N{9lJiy z@joawolV&$F8=`S5d(@d?M_Z~Z&bp-)-}R#W!*BV2GA~Zz%eS*MfCV?%7_WJ(O`oj z2XdCi7#tkJ_fI56J>BfV-MS$~I-urw+oA@Y;1&vUG#pt?rBQ+WP)>(f3l!eNZQwhi z$`u&q2U~2r-Oiz28@X$YI-|I=)OsdV+8D=O=%$0}(*8$(W$gB*RP?Cd@V&OiO5klv;h2H|qH@+qG5)6zSXbOmANbdo=G)y#D~` zk3o*+JCCc%lNB({)sC6IaH)q-e)2%eH1$nwDou0T=sXeiPTlNehPoY5jld|HPNyJR zVcILHxHwEtcB83QsZPBh8sgv0J9hiJ36658)2M3h;t18F>Z$={MmD3kbT+grcA8%7 z%bPr<8oM-UXUoxLRoW?2bt2gy&DW~5c7{~isWXUFJpjsOjfTbtY@Gt#I8&%`K!ylTtjs$fJZ6XX;wEjws3S5SKDDQ@aKJgZ} zwmGQo)!IMiJ$qKp3sg5~ec3k`Wb#70YLm|~(K)pCt0|Wkz;1su9aPe&&SR`5npF2z z;-=~Osh&yI!>iL2T1_qBxa815CfQkzyGS~%uk7{{ zT-+)LL26)o-EG=bY?7-sr6#t)aJADR23MiFH5u;?ypeS`4Rd4FSAt2X>yKlNGg*v2 zedxF_-LK@I_L>c=PLIDf-Y$$Lv9*Iq@`npn2tO{zJT_oyFt=4HTIV>yrTt_kx>z=L z685xph*~U!OB(=Y0^8a^6*sq^k}ZyY4EP4A=YXvqR$)T8sps8sR2uAX$xamB*^DYQ zj_tdl0@rKQr*C(z1dD)nx%sPRy)gd(h)uaqr%}?{B!@hYH%0cBzPJx}4-hTM=$rQD zIhPBX;qPT`7~$;=*0}K!sxpJz!uG_IJmng+Z8b&ZuW8Vf{{XcY70V1holh^33e#Gb6 z>siB+B4utU)Z#2}51`6>s!|l%+F^n{?_S5Mqa?V?B8%%VLmhP1AFy zUde@B!&?fb+U$Pu;@hJtJPh~&p<3M-AxYIq?ay+J0q?#Qf}3A-Qw?^B-)f^t{Wm-Z z`lm%rrkimV)Nwj=L6kphS1z3}VNEaEG%Afanf?`w*|tYFqg+~pYyQc3X!r9UMZCd-IcL|t4IhklsQ=L?ZR2j*wB|GjH$oj3@T_9>y!js?G+wgG|Y1D1aDlKq75OzxTRjM$= z6VxrsDnQ~tnr*wXW^(NlnNFQoSxg3&IskW6;d}1#`EWWaba#}TY%X<5*akTxTWI~1 z01!8n;AJ=LU$$yeBuJ-Qh<>VSY}B@v{8SwW@+#WScFz9*hO=!~Q*dzVJFVYsJB}_F zPc&IaX%^IMRFR!$3W0mKOsDMbrg)qQl*+YSTuy|JO43VDP?<)bm7)R^-AX812B2-u z{{YgVx(;m*G{^A-C(+tyijQX#w|X=tSEp6GkVA_b%=UiG*^8oT-cbJlq^f-UaM7x< zf;=svzrx#lm3MP_7KIkgLMGSLFTh((N78Mq@`3VBrt?h0L#3R(5c@$OX{;d2EQ27i zHG$W(I5>xmU_e{9u!l56-5~sxuVY*~5i06TcFyj!Tw1+{?IBQnJ3}Y+3)_CqWl`3J zPwZ4}GQ$J>28V{> z*ibM#Bqs)K19xMI-V8QBRL!4g*?6Aa8<=TFb5O7m4(E5(Z}xF%5s{{x$IVnPsl01n zYhMv^5PyQ$O?!wwz-3fFi?V!87WC`MIn(l5_%$0|jceZNBsFnWdq0`0gKeYvsby9> zo7gDFncPUq}FcOYReqZbmbhO5dD?T(#_Up zere4<&ETFFbP1z)*>{&Z_dT}DN#3@p*{kg|Ka!?DB8@+_QQBC2+U$?iE!q8)ZJ92h z`@gEO)pu1s3Zl}dvE}qf799g6KC>zuWHdK35wAs2`=d#&e*-5#iz+lY9z{c17{;pm zLHFM&u9=DuiSVPi0)g`I^0LsgOfDOn@+;Ww)!Y97a>m<*2!ZYF_W23t!XDx3J^KCR*k zDD9M|p)gTnX)?!Th`~;#C^fBcwA+M5J))qSrem0eTsF9EN3=9KvSL1KXx`bx>^OVa z)iZNPdBqOQKU8Q!7`WkLfdQ{g!GNpo<}s>Xr`-Z-g+J1*H?kIC3j=h4~+;t*7A zKeMV2T4q!}v#B4()$BH!RX$GarfLr(t_kmGWR`}8k&S2dM!RVcEil#@YXNqMRQnNs zsB)!Jp+43v0B1e3R*M{Zk(EPd+1Os=Q^A2)p9Nke8*aj5+2zj~6hCHQJtyZ2UFru5`rLu#mR22a*rPT1U(mS&XI|lMiK5&D} zWrs(N3c{QCoFKX|ucuUhl}mj};_NuHlB)d$iuO7whH(V<^*%APl6dH2?rq-9ywx@~ zp%xtqssqFg6+1=Xx=O0x&;T5jEuEnJNuX^2w7d9fyJ|7Ev?f-464LAlSg!^q3TsCd z!wZU;?wy|h0A@_WWqp#nH-j)jz42*0iqcSg5GO=f)0Yr{{2n>rmvu$Qnem`}&@u=- z$9^f*bAGAR=0mlV$JC>sj1=0jb&yz)lM?DN>RcNP^4))c_JKxhx&4>R;U3D zCKGE`qZ`xtCo-9q^6d>+q!eg3>?aNrsFKZp7u3DD?1%icZ_48&J}Rr;9uoip-^5< zLZ;R}>QT>+mto_lY&qqJkqPXrS&^e&Lf`D4wA)jWZ~l;@wo#j~Q>oeZjg8r~ z@>@HY`{|eCsPrkV8f)Xy40v(B`*^x`a5@o_boE5kb0nOHCwYeyg5GMta_7ndbV2nw zpDJOh+}wX8YC4|MDdn30GaQPJ4bsZtPcH9-Ns_5(xnSYpL zA^0^&TxOc{NuDiPjS=$ty+WTh3Z5n$y`g5JrmP`7s$yWwHaV zMfHaX{S`V)tGv#tt)AeteAOM`o)YIKveFz`bfDi<`XRQtx*n;|834vt2-CoG3x%gD zy>k1d(5k|1-z)%|rwd6;yye-^G&kOHDvMiI*8w)D z#+=JWX1qbh%=NHZsEGLekl~@Kvyf{a8 z<8w`<6?yaOgCkz3$1dxi=ueL4b1o{Q{d{N(PRMJ>9S{eWig$c*7bjciD7xW&kg0|r zdn&OWjSBa+Ls~KFsv1WI22)6V!ssZ{7;1Lvq}nsv4RHfi)=ZQlotc*u=0iXP0qUK- z9ZO|b3}g`up1smKnFxLs zBTTSivvPSHv`we4Rs0JNRQ%NO3NSLHA^fprYPDpy%fb`ez54FLfr9rx!FSjTqk=m(>1>K11$t zCORT6)e&oFnNsFr5p_pI^INe{IF2HZNI~um$>-5Aqf5zCe-p9-Jm5-eBPCsMaMKFw zOmTNy(U9xc6788D*nRAmzR5!nk*2sx$- z1@4$c?)b}Xm1}DTKItmv=3HExco=QjLd;{5Z}N`ISS0jRb~l0?8!lCkQ64#S9T2x} zb;rd5-4<|TRAJo$Fh;0=e9lmM!VTT?)l{ef5WLX>OsNo1kpU1qDQSYFo3R;Jzw!$9 zwEb3z`&~jfaL}Dnp~+O~d`_Po*Bwf8hMq0lyPBcInqXlTxrPaxCr2`Y1&|txy}-p% zt)TRjUiR|PAjWfC4g~XBD}IQB%fP|PwxeUQte-1!+K6j_&~YJawSOc-bS^5MGG7axr|7WYPOzNngE)@Mk06}$ zsWakbXsNf9%BXpq54qr#g1n-1l;*y8xrJzSV+F{N;CNwfrx6f?0MnXf%p|z2NX{3S zPepaOS|Cq8(%Xy`5D1xBVY)tx_?-koBH(VRI8v)Wqfd_dy#yvv{{XoC!y}UBnm)7G zPfqR51fEL5Im)IQE+8%<;Cc>f;O6O})>KX#O*zD2tU{fmL~fjPRR*{aw3Vl32W?MS z9y?FPl~D2qKHxFR7D1Fm`YsYRM7DK7r8ow}7?r~yg~0o>3$Mv>HaoW7VS7e`VgXKL zr#!+uQ7#BU^HfZY43exZ9!Zr{H&ED>9h9kcbog2A;t~)I=7V`Psn68=*>>kJyn zL(Q)>{7EM%zFF4@9Z52t=ZS!e?e}F#KJ2TQWeIMpAdcms<`-N-wd{+$#Te7Foj--X zH9TNtJoBPv5&G+xcq z1`#fTXC25@y*PXlI`=ZFR4y7oQ#zl!0nlV2Ow;8uuJ>(}U3H-l6x)Oxd8kl(BoYdC z@#ar79^8Pk*JR0FZC@#^x=qCQ2~}U!$HJc9Dh}#pGMCrx*4(1OaSc68(pBFB|Wj>8xFB*Gi9smU3c17k8=L`5_L=Pa? zLet?_Jw$la+3LC{8T)_<@-;BHL_vft{ZPz>Hkj<6xdwbs@tskm5Z3l#d5X)hwJQ!Q z%)HB4S}e6|-jog6AYek(%|h7qg%g0qyR=(ul*U`?nqK=$v_ptzPgRDk>G?v1Y1hQr z>3q+OX|tI{&iQy2v`Iz1J9Y4|RkE50(KJ1#S`%G&mAWc?S~gW6-e;O*=Zm5R&GR}D zrVI(yFyC+{6Sr;Q1x=+j{EvOC_*vt%r>}E`#Qgh}c86dzW9Fy13tt#Rj3J#9E*@O1 zFu?EK zQ_4S8Iy7Oe>Guhhkv*Pei03ihFI56UfBw< z=xy=i*Rt0s9u~dK_5>Q8DnphathIj(t|mv(e-HFtPtjqM^jW4qCHyx2OZZLvm+)Kp zDHNJJG1=uku6ID5^UTkWt`B!#6DV{;=7980KB=SCNKI)Fh9z+Yfuj37eNY+%Wfzc( zgFQm3Jd6d34eZW&X93on=-JcE$;WE|H2NNpeg_i{AQRs!LJrjvm%5M~=i=#b^Z1aRl zKR)v*d=2}6aO6{J4G5HDPq{{gaFxwuFL*11^1RI}Ed>%r3YapBp6Ei?@XDnGYN^}S zQ9hme)jt>9B^m@xxgR9n7{b9T4neGK#PSLVj`%7&#ycVu$7ZEr%OBNq?a-jx)~XAS zY3Hp=2*3I~EI1BN&5Fmu{1O?JN}=2M3S#MOr^EQN*DLxrVv9n38DPkYJ~3@K}r z7KeB`s?YphK6^Z?EkBoFC6*T^k*L@y9lGuxGdv)F#&QUsey zB>0)`@zOKsypCV`T$Iy!A0${RI>NOJ%Cghh=30)-A$SG^B3T2|vpvlAW3pDO9wt>* zba#cG$mQX|?9;bZs>;z}Wn;4|9q8=QM~43ZT=();KH-%;n)mRt+tqYf?_p`+g-WMZ z_c)fHbIOfcvv1TaJP)eF!q63#6(T~&m5$7;c4xPUE}hKwYuZ*3Q$2xEf2zvNEPdX4 zI7}|8?##3WYoHH}z!3grgCjzssV67j_>$7s0RgC=m-=d56YN{;oE5`0^o1lp?GmM@ zgZvPq)=CJ`B&kV$8*~!w@BWh%DE|QNrGHGIlG#!6kD8g88!sl3=D^32VyR&@Y@E+oS73QW%P_*xE9 zs|4Iwx6nZ7yxVndy@$BpwMUu$62MOPJKDcNHuFK7isKbDD)?5F0dOGD4FP6XIntlu zTk{hx(RnZBzF=4|A&3-O;pSP9f7WVMwf_KrP}HsLKhry?{{ZshN-JQ3&}yhUS7YX5{{V7?{{Z_E zuY*KeOi^Ola9okZ57^Gg;Hhu&Kpj=?$q00_eu>5cy42(hxi1a&@AxwFL0rPALP z@5IAufO60tVT8<5oR{|tsBnw|k1NOS78FX$JiVCAL;`1<;tlm16u&Y*kU{thzyAPe zGRfdxjwTqvD!!r|qNY7X{MGQ_!!~9Kz*aA(h!{WH>lGM1u}UW2s5+I0q<^>hf`h&q zpE`rQ6u^R`H!!P-Z*8VFH!oeoG(M$Od-lui#Ita(>Q%BOCIg^2tF%6#Jh3+(E%gpt z++AW{RE^hpRlUH7b195x^v6PD6T*t}KIMr==WsD9JQjJi>1Jgps7sdRu#)_f36{OG zHZ_L3%|l4zetgt-OC`O#yU-B0qanA;)S)Z1Zb4duk?x9s< zEv-tr*LW&r88z%IV&}-W+r-lU0JqouFyji#Lv>L=*++%E5SZsMv9_*>ZbspeDuyZs zSIGo7MvxAg8kn!te`j(CuW$hVrYtQ#$iX510D48l#by^TtdIgQGY&Tw{{W!qAd?2f ztRD|((Ma&94rvEt;!zA#WJ);`N$!=LOYiU^y|4NAG2QTEKk59kwIyr*oNgdZmRthp zwrR(XU^s_(1?CPphEe8U3})3F+*o&bm{%DBu3WL5MT_bxrQ%cDDtk)eQC36O ztioR_VdEd>P;}`mFH++0NODp9M%p5lJnagx`9ru}o-LK@ckT;56;h^1qf0k}p|_o5 zc@p@`x*pY#yIvRk71%7QVvW*JxSao*()(;#PVI3R3&MO>W{ z$$PhqTDyLw&G-kNSmv9a(}`p7BwTc-m^hK{H1hudSe00jT%{N(-caJJYQWWTPDbY4+Uam#i(t@u=H2)*3o^u4bqPO8BfZSiOhrQ#neQ zKiB3a`CFFpb!w-VHluLuhTz0Y_4aI^!7REj!FFrOdJJ`ZRgj`(vcLhSwZ%}bK9G8+{Aw;QeogWczpea<8YSNzN-s|%US zAE~~C1pp}iV$f(9{!ES)L%sn5jmF2zAHO=*MQ_Se6+C|irdZayjCK&sd`gB=Y-0l7 zq!j_9+O)5vsp_BUlM6E#^&hJL0Fo%eHR;OH!pHG6c)~3?L>_8hn>c%&zZGXcX`^w_c1~U5N=V>;oG9s z*nE!v08o-}&$z(m4LSqQBEAmN%qjRZ+0E>mxYdS>;a$5+_z#HH!F}pl98{5Tt&QKf zX;{&tHBcCdkhB?tvr?OafqO~>Y^GVGyHiUTQiU&DsBX>J7HxXLxIjEMFlTSO6YN<* zzEiA6QYOvdl)tF%XbFze@`qVrW4OP2jjRTAp|gVxiiFuN@c4`Ck^-+S^AIO76|*@$ z=Ckq-+L`kEU&|7%1KMSk&^l$*h{IaftW2@({{R?}M}2u?_TuU@4>Pdk)*7r&h37u6DXfl8h~lwR`6D)8&!@9jdCtx{$O1fj2XlZ zE63XtN)Pn4H8bUpu8qk#uE%(y>dtHZ;txStV|UtHf3&4ffaouQt-8(2BJV%ry}+9E~wKXZH{|NUc%tycmDutD8cicvoZl9^v zh^p(bv0u7?{*h1fiYejL+fA0axffZNtwZnu8+jeNxYE!}jLeh*oO9Z_Fu%LT$FM5eh$RYBXRvtq& z$Eki5UGFS;^h@UjL0GDA&CErPR_eg{YAx>03JU$eFXNC<{lv}(n9e#KH!{@1vuQ}6 znlG8%(&EkU7P9IFPjJfIFF?#J!j+7}2TQK<_RDNm!#z>Cl1dsQh_x6;GvJAPMr)Ds zGtAo8ZPot(Y{LaCXc)YAxrgAn*1ya=L#~i?EdbCjd5-%d9Xg?R;#qTRa6>!ysP536 ziKrb1gBWXjfX|H?Uq)6#u>PiM8GrO~?gjCvud8!F$|4F=hD~3^&nVq>0vC|r^9yf{ zOUPI84&s7PzUPj~WEs7ibemOlLdSU2Eo0}rM_!2a zw}{%Kmq?M@stBj|-?Mr$^QUMGrfI_3}u36)Npcx%xdKW$pwZMbKYvXU7<9gOXZ*O8ryY= zeQOtIOPofDcH&&{na7UI$e8m6ClRbt$HB|`MQ4W{rCuUY0ID3q&LQ6}g6JOEe;o$^ zTH;q`YSBcxc!9`!oi4_w!@5O$?}&h6RA6Y8mQ@|izyWcTN{rTwPp1L0nOa4>q>Y!F z+`xj5P~XeV`-P?rwHEi~fZTBKRfm3O3gOk1GEvs!tcE^=PYUz~>%_IemJLgBd20|< zRp=^+S+v96UFHkK#qgpctmDH@Zf=6l3-zZ{y(FqVI+eA&kE;;s9+JqZ=ng1HIit(G ze;O$0+i_J5>J&B5i-#~pj$l-(%Mz%6l6#I+K+IZ)+)c||q>d95S(-1wGoD=G+#M|B zfmO1ZqqH8Gg#nsgJVajQfq3w^2E{bG8vVB#TNYSNp9&x#mswCBN4V?rhL+U6^20*w zvX-fXGWbRD+&5Eqp1|sYpIzVso+~B_yS?9;WKiUTUv&f6ZSJ}ju4-Qq6)}svd`!r} zae)4!)E|XO5C%>YDy(;$qWNj)uA+m6StZslh+Xj+TttIpY$&(O9X;?bSnxAf1)b>< zkJK?`y-Tyei~=|4R3>hlg|;qXLBhDl<9$U#o9l?A(k%i8I$kF*!RP+~rJa!}@0qL!@t6^oZ-TgY~H2dPD}3#G}jwJDjH3+%5O zoAU{9q|(esCRjlZ1qN?Y`0KQncbwTiavaI$F~AO|bSn<n1_gQJXNR-}ErRFq^V2e$`bAb& zAk51Jh|0t=ty-1}U_7#rb~6EKY8;<}Wz=XRnXSgy0u9{Tt#O|cmijDdd9#O^Z#*W# z?7L86Xd)JMuG=PZ+!D`=Q<5{5eUkCAz~kc(;HAJ#(U2jDh;4FJ#;)VU+c}z4ym!!y z%Ar-P`@B>q5fhyBp2jH{X(>x%;su90W?x0iM6*E6hjRkzRyn+~;i!a+8ipPn`hnOG zRntJ$SK=Hpzi3y%P56&g?H8_$`Dd8^rEw~u<=~heD*kmnN?%)q!7rskT|useTMH!4 z)T|Hkg^jD;dqph<{{T_iZBm@hB~CAKz zfUwV$t$XhWh9GLtY1=bC17^+0Babr82*-d2EEpg}OP5AR9pJ6jg-N60`3Z}1nr~uEyzt0*{k@Jt{b3%(hBGc z5{?Vm;f=s5l^d{44+f=NG4P@`-z9{l7X$`}jkgB(E3MvErK5HInSJ1=PGPQ>FQY9t zvLgv|K8@kKLoQk``Ixk~5XW0!lmPX5J?EsS%l`n#WV?>$$l!&9Yb#K?xUl`h7`9{K zm+f4VDDNuo&iRL;9uwh~NEwPnDS~|U-4X#5edmW2bszZ6CI0~Y*QO)s$UneiI8e7| z^*+lZd0xSPQnw5mH-yoyVqdV|WJhpK8iLqtWmRVYbXEOQ=PY2=Dv!19HWJ5Ia8UMcDh%i@bxNbbpSOO2fT3H z)>7gX#03sm^o<%`JtGdx?#xdU`<~-A;ycEK)fI6UuVaxuM|%GNGvkTagS`8cm`!Aw ztfvhsUa>5xS}tH1yn|B`5mP}i&**m*y-vcp3~H%Cc8U0^9v# z6@4O&ff+|oSnehj3O=v2GvW-S*0y%G;K4a1UJhHfYZ4v2t#wgpg)1qTpQ9HliXR8$WVrtlwdEWb5V+0v`(A^^Dk;VF}I{{U`Qq` zT{|HSo%_YuzQ=d`!+^C)zZ#$bvx2G`Ta-TyOLW>WhcbT3(xhi^L26X_Vf8O)}{P2S&h91B!`*i z_nK%@*Qs3zQm>_D4a0f*oK7*;r2{J$nX@WYCj<;tFzlAM-t|mF(-HbiK!5iMSKXmM zxRKarKXS}t+E@&{qvCF>GV+x!p1gpmCV>SE!W34m4CWA`*o*NfA(Vc{#nRnlz0 ze9La$xB<0{3AP%(-eyt_AEEId!{0^e#%2{ci9nTClw(3BtlQX`X5}DwQ;@Z|0N-e8_SBo=FMM_BZu7NR^&u zf!ZX%-Fm)>cQ3*%QHhO^Dl3{$IlSeDo2C*$u^J31Wm*Fc%2SaQKu2tZE%G z(wS1aoAoz0J|#eb>!7xxyg~xgxf+?8i5;;}cqY^CP2yPIJj0oYQy{O1k8xuK0CkD` zh7;~=`eU@fOQGLPKtQ$M6*vyY9iv?IudmGYK6+UYZ8ByvVpAb382FzZl*Fl7ftk-* z@hW(mXAtRloW`I^^#WX>0Pk^dhO7FSuEQ{$y^)$`wN^saqmv~4{uKuh{{TohYs99| z$J;sA3}yL<1%h&&nYQ_J;kMh7#5nSIXWMpViC4#{F1DwlbxMwOQ1l0$Ao=XP6EvsWk*VMHwIsKT{?#EVoe|=;t$<2w>M7MSC#H zf%HLbjHtPcXi?fVr7coz*Pf-$cP=xC#Fl?KMV*W$aI+Co@z$k&9BKq762pZST@gpC z=!9f((!9flA;_{(&De?y%tJqN?C(BJC2f7v4QEKLT0D5Dv(zcYMulj8r7*mv$b26I zQ=?p{;yW=6Syxa_fL8G{6Gy|kK7GYQUj!GkG=vv;aUR<>{gXe3ugb2TVAU%cuL|1}t+C__RlTcrF(W6t7@wtGNcg{Y5&8{M;w!XI@=a$Vx{DKfea zV#tIMtM4m!%py~<6?QeBAqAC-{*%w+bA31Xg4mA~3=QfKm_duo8P8wld`j^v60s_) z+fXs8jw|1M+(Qmp%18@=UP*{*@C43c(#|DCqe1S({Iq2E~@Y*rf?{^GIJ^;I`12z5)KG` z$P)34F5lEu!!8+Rg^evH6HIf=y2Vby<#>xrTJsCv@dZ(=Kh(aHG2KruKls@VvbyF6 z2lxK~9S6@Vv~M} zsZl&(S5rbXgIv!1vF2R3FkuKpg15A3+9iXNpyXxUYA9gVyFf_1VwkB-eG?gt3B4>% zN+>5VnITgarNKg@g36Ip;;GG{FSIdbh)SsU!jzQuwgb#*Nk;BcSoN%1+##lWqzp@D zhkP#q5)(4L*!;wr@f1}JHT$yqzB4NL{CR__mIGtOV%uW2yr*I^ih2ym2pP3OhP4J2 zH%5cZp>2~+Sns)AD-w@06(1QHd6YP9iGb|DreFy5F1#Q}txSaU9+(&i5c5CNmi z=A&GzWmq`v4Y<08XpQm#c0MIY_NM+3g|!I9vr9ldxrRFqgj$=io(RKZ%ZW#UWt0&N zAUj#{1GeTn=chA&__3K8bo~lBNx$-RHQy-=b2rdx4-(*k^9%3MXhn#)zJStxNJW|y z+)*xIcE{KPw0E0r^=@E;flIgmUETVE;p+#(wC11Skq;SlP9jw)ahN*NM%7lz)a5Sd zU@fDI#HL0KGhX47w+CvDriLoA%GtX7%K5VEO$L}?*A%X%%z9E-3JjyvAK@ zv`9BTsNcATp*SMejfWSQM1Y&=8FtkC*`E4ha~NAxsEu}utdf+`Z@2|nYShCV9*X%uGc_q2^VW+y4N`ssiknZli}llTnkRkva_K<;&v0NZ=;}8_eFLvILbYdElCc z(;nN7l~LevP1ek?t3M<@!Q;Ck( zG4(VKC5gWng(*$#GIeT!iH%Y29;Q1^chSg>FTF29`8zU&mR5LwI}y2GmFImgqIhFR zGXVr?elqoMS-zFg-kv$bDC(8dao_}_Qh*jw%n#VHI00hnB1#96W-Y{F8zw{&#j{X4 zja9;hi)9Q(1y3AHY64;uZk#^jf_GV}YqoGrHq^Kv)4Dta$J7^%!?tYQOhRCmpj6^D zVFQcIT7>Pyt!7%867c>p(U+Nd{P8ms=TiPMf8r~Ff#EbGbW}OTWM}_24=YF z^C2c_SghtTOPbk|4Z8>m;unO1xNCCZ93|m`Ef_6cBSW})i(19dnx}bXGFzQSpaez~ zBgLB|tCYVJucPor1-8D@*X_`&$`YxFDC}v5_Wq6fbO7R4>8g8Mb zA+=;6I57n%DhZ;Y2^))s9%2Z&{Yk*x>CC!R;-gEvj3S?PR?7?4;kjckBo`<)MHHoC z8@QqkCsBMxu0UbS+$@R-$saMZ!p(T77RL->eMGIx>xqijTyZ$-dAf$?62%W}a`pcJ z35cnrbxdMOetJ@+#(9*(PNBIDaQeHPVH|11`m@VlsgOVDBBSBszfb5D% zQiGY!Cb*0@HxJ%3x-Dk`oidCBSaxN71)4USYuJdnRw8za8*?qnYfL7fU?3W8e6ql< zL$L#GRo@cE95YiFnEa&>K`pN3Xbdm5B^j^OKl>jt`rdyN6ckQ+VN?djhv0MY& z3)IBxQ#31x?=;_ciB=Hm`H2SXk5iK)Y|Ch0bVe)U;4M<$2^>dpml%yE7R2IK?W5V~JgkNEY6p_(bv~oFEv4Ip$s&_OZ380F1))7T|`(4o^2IC|!bZe9;M7fny|D zHZXi0dFjl@d4r4S!v$>)mktr;GTEYEcm|NrVi@RN(8N;Z-%euOTuKC)PC7B)LoiCY zp(+S2RNSaeZpbB|`yr|Ut73I6MW*9ShUG!KW^htW*o96xC2d&3%+}E}%|vKZV{>Cw zv*WY{36V_Fpkh^Gw9Hk9^3-Br^ zJ2WVJ0U>WUXok=zBW*~rT0Uh+C>UZ>FL=ucm0UohBsaJr_Z&lA;V^kkCX*$f>tB`e zIh^(9rLd~=K|~7_46jD-qbcM=PF@LgIaVU#CTzpv4BBo5%@g7n#m->4GX|wXt-faa zs;J^ZYR+QYP!1t5*BzFMdA_I{S-%em-XS8BKVUP8T>JX))a?BF{h- za8qCsVO)4)B8uCAY@$XE_?BYqvA@8ExSg|5d%=#KI&-<`iJ5Wd!sS$=N13ukt!`OO zv0$095*$mE?Vc7Dan34_d{53$8X_CS966j$T}$QQzNB8-{3|~I>_8L0j~{?aS;{0F zNNQxRBb{`6A>}e?l}b4PoL{MA1nm-~T<}Y)`bt~lwEie%H2p-NUZr&oA%Yl!u)3IN zz^FKc#ZcceoADuW+4^A7N&+^7)pXT+gfin0Zuu3}qke*XY2I#*2f%yo_lat>pO za}*~X0~HXZeTUIEu3G~=chOYyDg|Z;;>ax5?pkg&<#~e6rmMOMbjsp|@=YP<7pSe> z%;wcm`j{4`^5d$FTc7VZMRUu2FaH1<>2jIPDzr8j*@Ck16b7zm`b&F&93Imo$5Ahh zN@_TcGTxct1!8)_UqR+394Yex+Shnz^&$e{+D0~%@Dsrq@a9*qv_Wo}XLc&?FQMj{ zHx`|-5yNBe5%1SMYdQRWAl4>oDy+AOcPeM1-sfNuTHxYtJaj;$~lzs zpU6x6%AFzL;FqaUFA>z#DG{<(?U#wE1!bMYRFRc}3>7i=D1E89*S9kb&7$j2M_D4S zdUsYJ^IzJ>twZiQo0QduPjAICq{J5k5hpN0|qCPce8{#S!hEPN8K57h(%z@JLV_fCn!#gv&{BxIvgMrB>loaTNu_ zG0ewk_Kz;8^C&jJN_mYojjd6D>xdH@x^*1Y1s+yEjs6GXtenc4xxnbGcL5Y~i6f3W z38)d3M=d2DPKrb`Iqo$MT;ge4!gJ4*#eqM@Qi0MSLZpWuMALs*WT(_QQ{rIXOkSV* z>Uzm}m{XqSA)T-cZoNe^N{fpXIIK#|#ZQm@z@W%^IN_GSf!<_++~@-0*rqKQJdu~Y z{{U45+7*MO;(J_2TiAssaJi$VYM&&h_@^W2f$!x*DZE%Me8aYc0io_T>MCYRa#ds; zg-Wo5aQlMQM^Pv$#Y~g2Y|ZOG?fGn#(EPAH)kn}MQJLPwp;v1kxlaVAmZv|Y2 zZUa3Mr%c0iwTwVf(mEom%EnNN4dp|6Bn}Dj=Cst+3A=ML%`G0;wf;E&0Kk*zesyp70hSr4SlMC+FVv~Q3B;%( z6-N+T+@_I|QSH=?#<6GUA7u5RpO` zF-}3EC9pRb0b2d1Jr!=(&9@Di~r}TgeS9NK~f0k;Z6zGmKM&e3N-!szbT_;kSPz z4nZrg;$Ve+!AXCapsv>xBN95oRD_Teu}Z%25pw=j)vLirTl_gI$R zj$42y#G~R8^xTk*2yvlpINeDXIP)57@W6|bly96ehGnJ9iDk-%n2rF58=U@*o`3Mq z;av^pQre^3r*zDvgFn&)@`gt#UubTragbsSS44RU0L`4Hpkl`6>5_1wrcGQf7d0to z47DKN1KqP}BMY{9vAFe`H;$y`VN z{0#Dr`t#Pm@W**)RURcdvQTbjT! zk4|SFokzGfLlW^+Ly&)S#(rQhDe?M)9M*F!U0G9!V~Wltp=X*yJjD$PK`=vOAKOX-7mQ?h8o&Y z+(yqGRJ0f~BwlV;o|8IZH*ryLC6UZ#ZgZc*a6_~Rx0MWF@h<%-eL3mRMQ;qv&jbr@ zKWW{AaSjp*bvKKgD98O^%pjUeQCOY1$~L2zVqDf57GNDmu>kQdZlzYwsbv-M6>jB^ z(gxYopgcVb32;a3^gsh{ut@5zqGr5#2n@yu9^pms$yL@Ah7v1TjhpqB(G+2Umct-*3RJ5%rh*RxKV6ROI~GWWWreI z0$W-p)AcG4wR=K2A`AEo{{S9Kku=n9)b@=VF)-4|gOxkGfvX7WM@5uk7vx4WUsDNa z;emT4sR5~rWgwWgz^^q@gvC}MDrkP?Z*UU1LBRtfI)tTkskN)m%w;A%%SCGY7>9vs0Rw zIuk3JF{)BV2$(w19HX8C+dAhxs=@>s?!--NtGA06dChSo-~L%-?;0xwMSUMEDonW8 zNs34BjkW3q+g6k$7rd%TjD+NhApqtEQdq3Q z=vsw9LNeFM&*Epz&<2kYaFONFK!dY+VCRhp6$!>OAa`nNqZTz*yllt~W>%^P(NNj5 z4Z}g6hxo+jSSj3C{DK}W<;tt6s~HP-l3n2IQbKzywqNuOb5^4CqAAk<092*QrdZZ? zMFpG#d^IY`P-jBG@3PuP_t!cZubV@_4K}Sb7)cA=4u}0k-%4ePXtFi7KQ#X(7oDkQ>og)>>_+cO>1V*KaL%522M-iYuGjj z@zmB>fWs+{Zmx4~mZZi>7iHeie0(-`_}Ls6GHKiSC4Ib80oAib_E_nqK8&@hEH>r} ztgTrtKYpFqTcj8m_MxKt#xxuhjPeV=FLbx_TE0drS}rt!^O#&F>a1Z8I<_B1^X7H4 zK;_47D>#!88iO?r*sut%Mst|1Ox?D`N@J@*3Q^|zsIyh8AyR#E^^|D0pCPHhxVME zK&6bj;>_$A#2L?GY3qXpRRWK=8p=VkKpfmV{DfsXFJ}j(GY?1iC&|2@L-G0RGYa=y z=VneUtto4hdp!?XihjR8KmWu4ClLVw0RRF50s;X90|5X4000315g{=UK~Z5Kagl+c z(c!Vd@bUlJ00;pC0RcY{?W927Hwt)-Bpu4&^fq1hF?;s@-oJ>wt+4ECmJW#??%YN9 z9Zm1<(1jyC-$^)-5yhUneKUD&RP z*>r8_g6o+vyg=jP(=tXu#Gd5C4(<-6c-Y9fI!M5J?fr{S1&^D7Ys%*EJ8<_W!)T5k zZY_6j%rnCk8rdq_#fQ5~bmWs_DFB>0lu4QM6PHI9FBW((`X`;YsY|Y#IO;Oxux%Y* zxbe?-x>vHrfO%i}nBwfR5_Y`r~xqYO#mp5jF8fZ;3*vQzGK z;v0rB#kquzOGYx|bM_&ZesbG&VL5^S0L(VT#e*-|dTDSyubf>v&q*RUU~UkTZbLi; za`7O8NgK(w>dlGf3n`hyMVm%g0Cj zjjm0>`{$qaaX~|Wuyg#dIo;p&*WJMh!<=*X^&KU~u=MqD9&F+L`N)ZRoq{W(9k=jw zhbQICymN72VLeDZGmd8;?`^>L@6UhZ)DXtfVFS1JhndulAHcaodc8!9&n!cdp65C( z-mV!EKJ8u$ag<(oixN4t#^Mji@tP-xgtGVNPgZQq4z6>#JwuN-9oQ^fuT zBocG6p&uyGa2&@B*z3bF6Y+M(fo+s?;Ih}YOET2pxEmvJw3+-ed1Z_b$b#t>UI7kq zZuk)H+inSW0iIe&Y~V+!^5eySlit9Jn{A>fb6S!sX4i&zNKNK8u&A9tq8} zdXnN@M~(Bo5Ejxn>+s%Tm*QQwd~bAxjrx@7xcRb9?evjur?BvO8)qQR@x{4pHs8S| zEiC)+#!t1lG8a?euCIsiEU+-o4(4);Y{>*$0?sc?fjW)%<2kZ!uYrp^<)!poGs;9V zdQqO{Ghhu?WU`q;19AXgWzCxdbHeY9@bkm>_y>=9IsWnFF8$w&4R!DJV|1Mni|$%! z;Yw#WHiVarlyt{Z%nyrU%pR6B**WJtXO|Dj@aMq>-Iw@J_h5L~oEXY+=?$xG8^6F0 za{i(iTRwbb$DBRGzU!$>YzbXCw&uwsab&BGrJX(`1F*65F`n!t*3P|zO(uHV5$C@O z{;Pdh^9|+?Ic20dlP)F)xEm!L#lkTdO+>>MKNG?J373MxhzKWu9COvkWR4Pj$nfMj zWI^gl>IbRe#IIKq3+YqF+iZD5a0G1F-x_%rh~^;=hg^odd4tjQDEl$D9YL*rBTi&8 z`{jTl-&6Q=W;`xP+_S?r$HNhaJlZphvCiZ`UZExq% zScz7_LsM)^4spgX-7sk`u`G@eagEJHEvZ$+bB+kiE+t$&<#Kfiv~H?^zogQ^7#7R% zEx{Dvin)TSn9d^NQ!Zta0DwC#DZER@GXv#CNp_YZxL~FdEs2vEikY z>C5RAXw;`OFDb~%^n(zcpi1I4ZUK2JH^V(ilUa%0U6eChgeFjuGnB5$bThbubgV`e z5Ooj>^(O?lr6}B^6*6iPaWj=E%qxau*)h9`j6uY_LJNhxJV$niK_&x;0c_$#Lm?@t za2ERU6>0@h1j{o7YVDYG#tz`(7MAeE+=z6|>Qyl=IFw5zMe_*mTzVTwiA+!eUMelU z1N*$41;oTb4%b7z{2SOCMmqosWC(l6(BeyfX5MMmM z7ON0q7VJ(9)bda0OW{}4m z!YPs-h;S-95$JK$=r=T#BtU{(xqTL42pN>`^F{pQQG;=tNpORNDKbL^NKoho+dOxt(Zno!u6?Sz?ea2nO&t0BM5F^66LBguwWo*FP5I)Pu#O!Vzn_% zssh{XRVjl&ZngX74TL#Fz!KdtmZe9n)UJihGMLK@PW@Iq&wj!sRB`YA$06@gMDrVv zx+U4tsuj~+7nbXg|ytglVjez5#8u_07u_d7Xymp2_IDenGy6PZZoc%wsLBD(bz~Klx1jHYB{lTZp4IdTe zSQ+x8@fV;miiU0?J>^?clHl+`Uf^8CID#d-{{WFZ8v*?r{Ayb8zWw?@DCbjB{re!9 zyg;J5lX9LV^AEBJJ+;EHiZIK)MT1(Gs)RR>`R~kbEzkY_O^a)veV~B<0L=cF-s4h| zk`&x$GRq9QCw4Z$br{pnz(!oTiCz{1m6q`iQqGOaA!jfgOL1^W8MvJXZ@dkZw7&NX zi#_8101wtP2sPrk_n$K)z2E$q2J!FnJ85QO;31a?ZW6k86FKew0AjXoBq+h+5HK!D zXeo%HHOztpChyX_kX z-3ASN{j#SIc=z*~DjgW`oP4E;lyjeo;ojpiz~G3osgCn9kTV59^mQ0VPU09d1#Xf( z_{;>tw@9AHkv|M5q;hsDWhr?M96By$Y1fzWiydwgU zUf_unfRx-vnMIZ2iJHG}&+VI;u36;cABtkB`TpJf+${kvV4ko|Bk&TLK)K9EeZkek zbiF)jX%-qy58FHuQ;nesN zpA#n#8jQ|D;$12iMGE6=*irSt#7fY(@vTc?DeU`bnm=uxp1x);=K|`BJnQ8XtuH(# zYhDY?wTisn>m8eeKbg#r%y*e@$su*n_zgr;=2M7-t0;pIL=js{bvOjbBouA3EtHJYEeGCqaULLa ztUI5Co}DQJu?v-O)S*PXGJ|n2LFJYhj-^4xF|h{`#InlfE#76n%`1@j2~dFj5`d6S zp}<5$U`7C#ChcafQQGf`Vy%R81LN=I7i}@+k~24G+ZB++R)ly!fOM|4(HoPFwqVf@ zNof|g#**%!XEM=a7>@Aa{zl75nn)a0N`N|7d0`7WBn$$_nI}s-( zL4c~n3CRx7nwpm?0V-8S-AaXnab~4h>5bvUK-q|%7c3dYBBEi`uJKbOz>Ri6nq}4P zJtFZ7fp7Z!DjNE-8` z8+5))0pX!ZgSyl3OZhxS7`z;Bocxg)C~1o>>+ZgZV1}Ef7P;{Bci@!P13OR4s01kD zxcmOcU1-KThzi*3miBzc{fWSL9P^QN$y@M!%V!MDW6Hj6BGV}80B$17fYG0rRt|sp zwkD7tl&*<;ya%5XFP2DJfNgXg1Z#}#m4dCF6e69Q{w?p8T&<|ai$Ki>Z!jxj8IV}f zXqmZiByUHj1IR8~T|f@iM#3Pg5~mo%uvkzj0|q#4R4NhI3`oufEymr`iLTIpY9Ox; zBl5q(Dn`kF@tFGvb;*B1t$oJ;l+uI1XXIm8;>f>@A9W4*0TlK}7BTfM#=t z9*PQU4H?58tWcCt!E3r-Y1~HO8TF+s-sPJH!yfIu8JSbwqa zpk8@m=P8wF@hY$lSh}N#rbRp4)pB4m9%EC60kvF1qQaWOysPMgXE359xpe`k0GtPw zWx%#9#|)M@kwR31;L7+vGcFGc6gYB$R|mK*je@AK926GYa6l63Xft88a7ECufC0i>NtcT1yOv;SHTy3JWRd!)r z>IR{BE>J+LG^@)TZjOuO8KA5l7dd4*U{=*tZ?^t}qA})x4*)tUrE|}6%BcBALBW;i zoDgdHcQU2GC=P4VXadp)%@``(E%jj?MFT*WW zB*zO#Hj6y>4S}LwbpHS%qQQuU&*wjJtR;O=qRrW!OcA|6nzw$Y7`2rTL`*=~YfL~3 zRfqsmuNvkEBCBr;uU1A7xLant#bLMLOC0`)r+lEdIdKs7^z=C&4ka0T=s`Pb1G#G3 zdfN9ED*h2?RM)%a8anPe8!KlK`VJ!ri_2J9x}v4uHzidCdOs{xEE)CUI*pTDQ5v#* zM6OP4VFU$fPGLNiZk5aNmRZT?O2RrDQ;Y5n2*?(oqVNY8wf8H6^%BNt#z5YogtM?JuWle!o37V6jo3_FfjZ@PQ}6nZPv5F5f6Auj~s7?~2jUNITl z6@Zo{RrMP^9W|}9SDROt#4Ry^1xy_*%ByRjf+XS%hMT?B0{c3fF^YR?g0vM^b<|N% zTh0_dH!ma7yj36}EA}lGPZ(67m>!)ZcssLYXY5CwshNQ8+EH=EqLT5*@z>`#u0)vTT9G1XhCRJ&1Kb4+lGfjnCG5Tjz?%tOvn#* zHVjsVt#lf##Cq3|4f{~}g&Jm*kUa)3L|=9WhIadc8VPesK1#UM=FNX6N*NoBsT|r2 zOqx92R+cTRgO*eVfGXpGz{7Y!eHS2FYU_=UBBpDEBJrea>M4D^8-2v0MrloZm0m85 zSqZNlEe5sF@q#P90fUICmhK2pc!>yLyI>t;;xJG}{9-?8ohuU>G=3r-vlM+I;^j5b zqG1U9q3sLy#-#zTJxcm9H%$g;SEvEB&E5iz9;oS-xk zlL3J1N+q_@+&d!=TVMuB7sZiJzFZ)qI|e#cAZW(o!BajYD|>y>1j`C~>ynPQfF% z{=Oyo%*r&6EWOviP#H>Ajj8A@qB^IN(v=&u#f3&;_+{rBWnIIr%ZunBSFwT==5&^) ziG;5VZ!i))+$2bA5#<&p(tvf{#v4#=kF~&waf-j#;to;CptiJs-JuCDm?8siPYxMY zQBty&b~Q`Ykc(XqjP<4zna9)G*P7MCcWZ=l{{SP9A$FCA#7f%zM&T7DhOK<1mW{d0dwwo*hs#oh3qSyD zJr633upHHNgLNgr(+Vm1)nPzzP9@5Gm(sY%JLJto4J~+p0kUQgtSM^406yT1L;wi7 zKtU+}Wybp^FtsSev?zs)L2=NLW$7bMBAIuWDQVjpg@Ez0prHm9tT{gYR?6serI8I6%SWX z9L*%8daQlRj0&>T)^RJxjR8wK!TW{A;mLsfR1r;t@+mQrjaHy`?o5rB%_Y;;CHO0q zN|Bg9dqTGb>E3cc{*lelgy%4Z<~uI)F!hi1!oz@m&Lx~ zYSq>4{{WRU0BC>%`({8WW?df#a+cnMl3W@Z5O_pyr`!6O(q&_k+&$3>$Ways50i)l zFt*Swj5mqk>NeB?iykp5Y{hofT5WNNl6DD;COM@c<%@M`)o+=4@18J#uazX{Lr5ih9RZ2t9sM^d~7*gyokwvpQpz$e5p8_fxri0Bw zb-9)?+RKp8Q1{ZUB)YkfD3b5i%~kC<|fLLVV*~DO5P) zXm_s*o&FNo7EMx^`5&~wn|*J1U<5S3m`0Q07+96~jQCcHqe9G~eX(?^B4NC-;lcD@K7SF0>A9Un=}dgT8hbf(_*`I_QNU-1_kFynlz%-mKAyrm5ub% zfC*SuV4%+O^D2=Yz#Ib@a@uzn7RGA;_OnPO5X zUOwW~ytBys=$ZIZ#(jp-236=LLgmy5IeXSEVbJO~3Q`TFe_>6-<<+fcwaW#^hIkyH zwect*A=T^|fqoZ<;J0ZZt$YKl5oHw7G7P8q=rWo1MAz+md;_s7dGdB~J4 z1)`#gw&UupS_jPxc$D&p)Mm-FvFbLMRTWxm%kFA{sB$f`iaM-@;aNj{_{rg_YOXxi zOiX4xN5_Kzz#77 z#mo+>E@QUp-xA}js(eKsh!=xhK_&}#nGeazNOdLj-c91XpBK2jB}<_NehkQW}jC`<|&&7c|xBy5t=9C=q9B_0=j#ur#$ z+`NajoI#cnt~hv=0beqruj!2!as3G%@e6zQxAhE0L?MR)vOE&{HB+)sRtO#?zvSVU zD%OLndzOvCU?GK@mcM5*jVp8mNb*|eTZ6|X71LO7zcRBdW-x$C$SnDQhR#H?!$FpZ z%^XWjg08w%XdS7X!cLJRXB!JHQ2Ll9waU8lh-(FqKvb5zh>?X<(-3KXL#NQ;?hp@%##eq^|OseEm@}$XOh9a5RC~EVX)W>a1 z!*Z-2bu;Tyt<=)}BoT-17GR2Jmr%Oh^Nt_1hH0!W#zBmi2Z%dG8X;xo?@^i19zm3% zSnly2m_`fDw~3tTVAfn-yQ)TL<%6MaQ-Zg^gnY}EtrGSM%NwSn7cBCkwN^+?Z�) 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 literal 0 HcmV?d00001 diff --git a/img/blog/brew_candy/4.jpg b/img/blog/brew_candy/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0abec5f397a5a52fd95ae2f9cebcb34eac3da49 GIT binary patch literal 35892 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 literal 0 HcmV?d00001 diff --git a/img/blog/brew_candy/6.jpg b/img/blog/brew_candy/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bee8790d7f00dbe36fcbb199cb7deefe6757e30 GIT binary patch literal 40677 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 z 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 ZEx(D^Y+Wp>jdhB`5Ih=7EIhy(;8A-}|W`4R=? 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 Ah5!Hn literal 0 HcmV?d00001 diff --git a/img/blog/haxeflixel-bullet-timers/2.gif b/img/blog/haxeflixel-bullet-timers/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..3530f170bfe7b1a3eac6cfefde0cd9c33f8677a6 GIT binary patch literal 42399 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 literal 0 HcmV?d00001 diff --git a/img/me.jpg b/img/me.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c2b6198df2a154ac76e45e6180853427deb101f GIT binary patch literal 32594 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%0DApce*s!6G=M+i^@!FEu0+Zb04iQhP4~$ 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 bV^~^KvuS2#VrCOI9G{qQJJCf$8bANpag0ap literal 0 HcmV?d00001 diff --git a/img/spes.png b/img/spes.png new file mode 100644 index 0000000000000000000000000000000000000000..2a19f198f4bc832da2ead2d2602a79adcf8bf058 GIT binary patch literal 5627 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 z kevin f.

\ No newline at end of file diff --git a/js/dark-mode-switch.min.js b/js/dark-mode-switch.min.js new file mode 100644 index 0000000..e01a723 --- /dev/null +++ b/js/dark-mode-switch.min.js @@ -0,0 +1 @@ +(()=>{let e='darkSwitch',t='data-theme',d='d',c='l',a=window,m=localStorage,n=document.body,h=document.getElementById(e),i=m.getItem.bind(m),o=m.setItem.bind(m),r=n.setAttribute.bind(n);h&&(!i(e)&&(a.matchMedia&&a.matchMedia('(prefers-color-scheme: dark)').matches?o(e,d):o(e,c)),(h.checked=i(e)&&d==i(e))?r(t,d):r(t,c),h.addEventListener('change',(a=>h.checked?(r(t,d),o(e,d)):(r(t,c),o(e,c)))))})(); \ No newline at end of file diff --git a/resume/index.html b/resume/index.html new file mode 100644 index 0000000..2a7e448 --- /dev/null +++ b/resume/index.html @@ -0,0 +1 @@ +Kevin Fiol - Resume

Kevin F.


Work Experience

  • 06/2022 - Present • Senior Software Engineer - Ad Hoc

    • Senior Software Engineer on HealthCare.gov responsible for developing TypeScript/React and Ruby/Rails applications that enable millions of Americans to enroll in healthcare and minimize insurance costs. Spearheaded efforts in collaboration with Dev Ops team to containerize our backend Rails application, and migrate from a legacy webserver (unicorn) for full encryption over transit. Led a front-end migration from react-scripts 4 to 5 which reduced the lines of code in our application by 1237 lines, and eventually enabled a migration to Vite. Introduced a performance enhancement by memoizing computationally expensive components on HealthCare.gov, reducing the render time of a major component by 80%. Created multiple enhancements to our deployment and testing pipeline such as: ANSI color outputs in our CI, disabling concurrent pull request builds to reduce CI load; enabled a workflow to only test affected libraries during CI; and authored a job to automatically build Docker images containing our dependencies to reduce time spent waiting for npm installs on our jobs.
  • 09/2021 - 04/2022 • Senior Software Engineer - Circulo Health

    • Responsible for creating React applications for Olive Helps, an Electron-based desktop application by Circulo's sister company that assists in automating tasks for over 100 healthcare providers. The applications use screen-reading, filesystem, browser, and keyboard listener APIs to be context-aware of user activities and provide information based on actions. As a Software Engineer, I was also responsible for building our underlying APIs, using Next.js, AWS Lambda, and Supabase. As an effort to increase the portability of our backends, I introduced a database migration workflow to our main API monorepo, and contributed a development script upgrade that sped up our TypeScript codebase development speeds by 50%.
  • 03/2019 - 09/2021 • Full-Stack Developer - ICF

    • Lead Front-End Developer on multiple government agency projects, including opa.hhs.gov, researchconnections.org, and rebuild.nc.gov. I served as the initial lead for NIH.gov's COVID-19 Dashboard, where I was responsible for choosing the tech stack and collaborating with NIH researchers to create accurate data visualizations. As a Full-Stack Engineer, I led the migration of the HHS.gov Professional Development Tool from Symfony 2 to Symfony 3, replacing deprecated packages, and writing unit tests to ensure full compatibility. I was also responsible for creating a custom APA7 Citation Generator as part of researchconnections.org, working closely with ICF's librarian specialists to ensure accuracy across citation exports. During my last year, I partook in interviewing job candidates and served as an Associate Manager, mentoring and organizing weekly 1-on-1s with Junior Engineers. Lastly, I participated in giving presentations to audiences of up to 40 other internal engineers on topics such as Cypress Testing Framework, React, and Mithril.js.
  • 03/2017 - 03/2019 • Information Technology Specialist - New York State Education Department

    • Developer on small team working on data.nysed.gov, a public-facing data-heavy site housing report card data for all public school districts of New York State. Led effort in transitioning the legacy codebase from HTML templates using rudimentary string-concatenation to the Twig-templating library, improving code maintainability and site rendering speeds by <20%. Lead on internal React-based search tool, and its background API written with then-new PHP7 features using Slim Framework, Redis, and Symfony Middleware. Also responsible for interviewing potential new-hires, and mentoring other developers.
  • 09/2016 - 02/2017 • Software Developer - Cendyn

    • One of four developers responsible for development and launch of the Red Lion Hotels "Hello Rewards" program. Responsibilities included layout and design implementation using Bootstrap, Select2, and jQuery, as well as API implementation using an ASP.NET 4 backend and MSSQL. Co-ordinated with one other developer to improve internal documentation on C# Coding Conventions.
  • 12/2014 - 02/2016 • Software Developer - MatrixCare

    • Transitioned from Junior Engineer to one of two leads on the AOD Software Point of Sale platform. Specialized in developing native desktop applications for Microsoft Windows using the Magic XPA Development Kit. Worked with Senior Engineers in developing new features for our long-term care software suite, resolving bugs, communicating with our internal support team, and mentoring new staff.

Open Source

  • Enhanced-GOG • A JavaScript plugin for GOG.com that displays current and historically lowest prices from multiple storefronts while you browse, with multi-region currency support.

  • LÖVELY2D • LÖVE2D Game Engine plugin for Sublime Text 4. Provides API information, autocomplete, and function signature helpers to aid in development.

  • newt • Markdown-powered dashboard for your Firefox New Tabs. github.com/kevinfiol/newt

  • RSS Reader • An RSS Reader deployed as a mobile-responsive, lightweight, static site using Github Actions. Updated hourly at kevinfiol.com/reader.

  • umai • A 1.7kb UI library with JSX support, an ergonomic API, and simple state management. github.com/kevinfiol/umai

  • mdbin • A full featured Markdown pastebin on Deno Deploy. mdbin.deno.dev


Skills

  • (Strong) JavaScript, TypeScript, (Familiar) C, C#, PHP, Python, Lua
  • Node.js, Rollup, ESbuild, Webpack, Gulp, Express, Next.js
  • React, Redux, Svelte, Mithril.js
  • HTML/CSS, Flexbox, CSS Grid
  • SQLite, Postgres, Doctrine, Knex, Objection.js, Postgres.js
  • AWS CodeCommit, AWS Lambda, Linux, Docker, Git

Education

  • Bachelor of Science in Computer Science • 2014

    • Florida Atlantic University, Boca Raton, FL
  • Bachelor of Arts in English Literature • 2014

    • Florida Atlantic University, Boca Raton, FL
\ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..b36bc03 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: +Allow: / +Sitemap: https://kevinfiol.com/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..c1cd703 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,78 @@ + + + + https://kevinfiol.com/ + + + https://kevinfiol.com/about/ + + + https://kevinfiol.com/archive/ + + + https://kevinfiol.com/blog/ + + + https://kevinfiol.com/blog/a-minimal-rss-feed-reader/ + 2021-10-12 + + + https://kevinfiol.com/blog/binding-mouse-button-plus-scroll-wheel-to-system-volume-control-on-windows-or-ubuntu-linux/ + 2021-01-22 + + + https://kevinfiol.com/blog/books/ + 2020-07-02 + + + https://kevinfiol.com/blog/brew-candy-review/ + 2019-06-17 + + + https://kevinfiol.com/blog/bullet-pools-with-timers-in-haxeflixel/ + 2019-05-18 + + + https://kevinfiol.com/blog/getting-rid-of-the-credential-helper-selector-on-git-for-windows/ + 2020-09-18 + + + https://kevinfiol.com/blog/git-cheatsheet/ + 2019-05-22 + + + https://kevinfiol.com/blog/hard-symlinks-on-windows/ + 2019-08-05 + + + https://kevinfiol.com/blog/hosting-your-invidious-instance-on-a-vps/ + 2020-08-02 + + + https://kevinfiol.com/blog/im-on-netlify/ + 2020-01-29 + + + https://kevinfiol.com/blog/making-your-numeric-keypad-work-on-a-xubuntu-2004-vm-virtualbox/ + 2020-08-18 + + + https://kevinfiol.com/blog/mithriljs-esbuild-jsx/ + 2021-03-18 + + + https://kevinfiol.com/blog/modern-bundling-with-esbuild/ + 2021-10-20 + + + https://kevinfiol.com/blog/simple-state-management-in-mithriljs/ + 2019-07-31 + + + https://kevinfiol.com/blog/validating-checksum-on-windows/ + 2019-06-04 + + + https://kevinfiol.com/resume/ + +