Shellsharks Blogroll - BlogFlock2025-11-16T11:30:03.706ZBlogFlockWerd I/O, cool-as-heck, Evan Boehs, destructured, Adepts of 0xCC, Aaron Parecki, <span>Songs</span> on the Security of Networks, cmdr-nova@internet:~$, Sophie Koonin, Westenberg, fLaMEd, Hey, it's Jason!, gynvael.coldwind//vx.log (pl), Johnny.Decimal, Terence Eden’s Blog, James' Coffee Blog, Molly White, Robb Knight, joelchrono, Trail of Bits Blog, Posts feed, Kev QuirkUpdating forgejo's robots.txt - Posts feedhttps://www.coryd.dev/posts/2025/updating-forgejos-robotstxt2025-11-15T22:10:00.000Z<p>I've moved all of my personal, private projects over to <a href="https://git.coryd.dev">my own forgejo instance</a>. It's been reliable and an altogether simple transition — I even have it mirroring the <a href="https://git.coryd.dev/cdransf/ai.robots.txt">ai.robots.txt</a> repo.</p>
<p>While most of my projects on the instance are private (like the source for this site and for <a href="https://www.coryd.dev/posts/2025/i-made-a-music-app">Cadence</a>), I wanted the <code>robots.txt</code> file for forgejo to align with <a href="https://www.coryd.dev/robots.txt">this site's</a>. Thankfully, updating the forgejo <code>robots.txt</code> is straightforward. I'm deploying my instance in a <a href="https://en.wikipedia.org/wiki/Docker_(software)">Docker</a> container using <a href="https://coolify.io">Coolify</a> and update the file as follows:</p>
<ol>
<li>ssh into the server where the container is running.</li>
<li>Run <code>docker ps -a | grep forgejo</code> to get the forgejo container name.</li>
<li>Log into the container using <code>docker exec -it <NAME> sh</code>.</li>
<li>Navigate to forgejo's public directory: <code>cd data/gitea/public</code>.</li>
<li>Open <code>robots.txt</code>: <code>vi robots.txt</code>.</li>
<li>Add entries as you see fit.</li>
</ol>
<p>I've mirrored my site's <code>robots.txt</code> to my forgejo instance and I've also included the rules <a href="https://codeberg.org/robots.txt">from Codeberg</a>'s (up until the <code># Codeberg-specific changes</code> to the end of the file). <a href="https://git.coryd.dev/robots.txt">You can view the full file here</a>.</p>
<p><code>robots.txt</code> is, of course, a voluntary mechanism, but including these directives is still prudent.</p>
<img src="https://stats.coryd.dev/count?p=/posts/2025/updating-forgejos-robotstxt&t=Updating+forgejo%27s+robots.txt&r=rss" style="position:absolute;left:-9999px;">Small Web, Big Voice - Kev Quirkhttps://kevquirk.com/blog/small-web-big-voice/2025-11-15T16:22:00.000Z
<div class="link">
<h2>Small Web, Big Voice</h2>
<span>by Andre Franca</span>
<p>Andre argues that independent blogging isn’t about scale at all, but about integrity — choosing a place you control, writing in your own voice, and keeping the web human.</p>
<p><a class="button" target="_blank" href="https://afranca.com.br/small-web-big-voice">Read Post →</a></p>
<hr class="email-hidden">
</div>
<p>I read this post this morning while I was perusing my RSS feeds with a coffee. Firstly, I’m not sharing this because Andre called out my blog (although being bundled with people like <a href="https://rachsmith.com/">Rach</a> and <a href="https://manuelmoreale.com/">Manu</a> is <em>extremely</em> flattering). I’m sharing it because I agree with everything he says in the post.</p>
<p>Having a place on the web that I’m 100% in control of, where I can share my own thoughts, feelings, and opinions is very powerful for me. Over time this blog has evolved from me sharing technical posts most of the time, to a legit personal blog with a technical twist.</p>
<p>Despite what sites like <em>ProBlogger</em> say, I don’t have a niche, and I don’t try to grow my audience (<a href="https://kevquirk.com/blog/revisiting-the-web-analytics-rabbit-hole/">I don’t even know how big my audience is</a>). I just write whatever is on my mind at any given time, and people usually get in touch with me to discuss the topic. It’s fantastic.</p>
<p>If you’re on the fence about starting a blog, I implore you to do so. It’s probably the best thing I’ve ever done with a computer. If you, please drop me an email with the link - I love discovering new blogs!</p>
<div class="email-hidden">
<hr>
<p>Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️</p>
<p>
<a href="mailto:72ja@qrk.one?subject=Small Web, Big Voice">Reply to this post by email</a>
</p>
</div>
Gadget Review: Benfei USB-C Video Capture ★★★★★ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=644442025-11-15T12:34:43.000Z<p>Want to capture video from your phone or console? You <em>could</em> just point a camera at the screen, but a more sensible way to do it is to capture the video directly via USB-C.</p>
<p>The good folks at Benfei have sent me another gadget to review! This is a <a href="https://amzn.to/47L0br2">USB-C Video/Audio capture</a> dongle. Plug one end into a device and the other into your computer - it will show up as a USB video capture device.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-USB-C-Video.webp" alt="A long USB-C cable with a box in the middle." width="1024" height="722" class="aligncenter size-full wp-image-64497"/>
<p>Notice the extra USB socket there?</p>
<h2 id="usb-power"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#usb-power">USB Power</a></h2>
<p>One great thing about this device is that it has USB Power Delivery pass through. This means you can charge your device while grabbing video from it. That's more than a "nice to have" - the Nintendo Switch will refuse to output video over USB-C unless it is connected to a power supply.</p>
<p>The capture device claims to be able to pass through 100W - I don't have any devices which need that much power, but my <a href="https://shkspr.mobi/blog/2023/10/gadget-review-plugable-usb-c-voltage-amperage-meter-240w/">USB-C Power Meter</a> showed devices happily slurping down between 5W and 20W depending on the device I was using.</p>
<p>So how does it do?</p>
<h2 id="video-and-audio"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#video-and-audio">Video and Audio</a></h2>
<p>It is limited to 1080p @ 60Hz, which is good enough for most things.</p>
<p>Here's a short clip from the Nintendo Switch:</p>
<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-64444-3" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Switch.mp4?_=3"/><a href="https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Switch.mp4">https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Switch.mp4</a></video></div><p></p>
<p>And here's a capture from my Android phone:</p>
<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-64444-4" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Android-Video.mp4?_=4"/><a href="https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Android-Video.mp4">https://shkspr.mobi/blog/wp-content/uploads/2025/11/Benfei-Android-Video.mp4</a></video></div><p></p>
<h2 id="linux"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#linux">Linux</a></h2>
<p>For the nerds amongst us, this shows up in <code>lsusb</code> as <code>345f:2130 MACROSILICON USB3 Video</code> which should be <a href="https://linux-hardware.org/?id=usb:345f-2130">well supported</a>.</p>
<p>OBS Studio was able to capture the video and audio input perfectly:</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/11/OBS.webp" alt="The OBS software showing video from a console." width="1440" height="1002" class="aligncenter size-full wp-image-64496"/>
<p>It is the epitome of Plug & Play. Shove one end into your device and plug the other end into your computer's USB-C port. That's it. Done. No software to install, no drivers to download, no switches to flip. There's also a handy adapter if you want to use a USB-A socket - although it will need to support USB 3 speeds.</p>
<h2 id="limitations"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#limitations">Limitations</a></h2>
<p>As with most HDMI devices, it will refuse to stream video protected by HDCP DRM. That means you <em>probably</em> can't stream your Netflix / Disney / Whatever subscription to your laptop.</p>
<p>It is limited to stereo sound. I couldn't convince the Nintendo Switch to output surround sound.</p>
<p>Obviously, it only works with devices which have USB-C <em>video</em> output. Modern Android and most hand-held consoles will work. Your PS5 won't.</p>
<p>So what about those devices without USB-C?</p>
<h2 id="bonus-hdmi-dongle"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#bonus-hdmi-dongle">Bonus HDMI Dongle!</a></h2>
<p>So you're a wannabe Twitch streamer, or you just want to capture something from your HDMI output? The good folks at Benfei also sent me their <a href="https://amzn.to/47uq1AG">HDMI Capture Dongle</a> to review.</p>
<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/11/HDMI-capture.webp" alt="A short USB-C cable with an HDMI port." width="1024" height="768" class="aligncenter size-full wp-image-64500"/>
<p>There's absolutely nothing else to say about this one. It has the same internals - <code>345f:2130 MACROSILICON USB3 Video</code> - and works exactly the same.</p>
<p>Shove an HDMI cable in there and you're good to go,</p>
<h2 id="price"><a href="https://shkspr.mobi/blog/2025/11/gadget-review-benfei-usb-c-video-capture/#price">Price</a></h2>
<p>The USB-C to USB-C cable <a href="https://amzn.to/47L0br2">a surprisingly reasonable £15</a>. If you need to capture video for presentations or streaming, it will do the job splendidly. The cable is long enough to drape from a machine to a source - and the Power Delivery is useful.</p>
<p>The HDMI capture is <a href="https://amzn.to/47uq1AG">only £12</a>. They both work identically well and are supported on Linux.</p>
<p>Highly recommended!</p>
Level up your Solidity LLM tooling with Slither-MCP - Trail of Bits Bloghttps://blog.trailofbits.com/2025/11/15/level-up-your-solidity-llm-tooling-with-slither-mcp/2025-11-15T12:00:00.000Z<p>We’re releasing <a href="https://github.com/trailofbits/slither-mcp">Slither-MCP</a>, a new tool that augments LLMs with Slither’s unmatched static analysis engine. Slither-MCP benefits virtually every use case for LLMs by exposing Slither’s static analysis API via tools, allowing LLMs to find critical code faster, navigate codebases more efficiently, and ultimately improve smart contract authoring and auditing performance.</p>
<h2 id="how-slither-mcp-works">How Slither-MCP works</h2>
<p>Slither-MCP is an MCP server that wraps Slither’s static analysis functionality, making it accessible through the Model Context Protocol. It can analyze Solidity projects (Foundry, Hardhat, etc.) and generate comprehensive metadata about contracts, functions, inheritance hierarchies, and more.</p>
<p>When an LLM uses Slither-MCP, it no longer has to rely on rudimentary tools like grep and <code>read_file</code> to identify where certain functions are implemented, who a function’s callers are, and other complex, error-prone tasks.</p>
<p>Because LLMs are probabilistic systems, in most cases they are only probabilistically correct. Slither-MCP helps set a ground truth for LLM-based analysis using traditional static analysis: it reduces token use and increases the probability a prompt is answered correctly.</p>
<h3 id="example-simplifying-an-auditing-task">Example: Simplifying an auditing task</h3>
<p>Consider a project that contains two ERC20 contracts: one used in the production deployment, and one used in tests. An LLM is tasked with auditing a contract’s use of <code>ERC20.transfer()</code>, and needs to locate the source code of the function.</p>
<p>Without Slither-MCP, the LLM has two options:</p>
<ol>
<li>
<p>Try to resolve the import path of the ERC20 contract, then try to call <code>read_file</code> to view the source of <code>ERC20.transfer()</code>. This option usually requires multiple calls to <code>read_file</code>, especially if the call to <code>ERC20.transfer()</code> is through a child contract that is inherited from ERC20. Regardless, this option will be error-prone and tool call intensive.</p>
</li>
<li>
<p>Try to use the grep tool to locate the implementation of <code>ERC20.transfer()</code>. Depending on how the grep tool call is structured, it may return the wrong ERC20 contract.</p>
</li>
</ol>
<p>Both options are non-ideal, error-prone, and not likely to be correct with a high interval of confidence.</p>
<p>Using Slither-MCP, the LLM simply calls <code>get_function_source</code> to locate the source code of the function.</p>
<h2 id="simple-setup">Simple setup</h2>
<p>Slither-MCP is easy to set up, and can be added to Claude Code using the following command:</p>
<figure class="highlight">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">claude mcp add --transport stdio slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp</span></span></code></pre>
</figure>
<p>It is also easy to add Slither-MCP to Cursor by adding the following to your <code>~/.cursor/mcp.json</code>:</p>
<figure class="highlight">
<pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"mcpServers"</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"slither-mcp"</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"command"</span><span class="o">:</span> <span class="s2">"uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"env"</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"PYTHONUNBUFFERED"</span><span class="o">:</span> <span class="s2">"1"</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
<figcaption><span>Figure 1: Adding Slither-MCP to Cursor</span></figcaption>
</figure>
<p>For now, Slither-MCP exposes a subset of Slither’s analysis engine that we believe LLMs would have the most benefit consuming. This includes the following functionalities:</p>
<ul>
<li>
<p>Extracting the source code of a given contract or function for analysis</p>
</li>
<li>
<p>Identifying the callers and callees of a function</p>
</li>
<li>
<p>Identifying the contract’s derived and inherited members</p>
</li>
<li>
<p>Locating potential implementations of a function based on signature (e.g., finding concrete definitions for <code>IOracle.price(...)</code>)</p>
</li>
<li>
<p>Running Slither’s exhaustive suite of detectors and filtering the results</p>
</li>
</ul>
<p>If you have requests or suggestions for new MCP tools, <a href="https://github.com/trailofbits/slither-mcp/issues">we’d love to hear from you</a>.</p>
<h2 id="licensing">Licensing</h2>
<p>Slither-MCP is licensed AGPLv3, the same license Slither uses. This license requires publishing the full source code of your application if you use it in a web service or SaaS product. For many tools, this isn’t an acceptable compromise.</p>
<p>To help remediate this, we are now offering dual licensing for both Slither and Slither-MCP. By offering dual licensing, Slither and Slither-MCP can be used to power LLM-based security web apps without publishing your entire source code, and without having to spend years reproducing its feature set.</p>
<p>If you are currently using Slither in your commercial web application, or are interested in using it, please <a href="https://www.trailofbits.com/contact/">reach out</a>.</p>22.00.0168 How to remember the Markdown link syntax - Johnny.Decimalhttps://johnnydecimal.com/22.00.0168/2025-11-15T02:16:10.000Z<h1 id="how-to-remember-the-markdown-link-syntax">How to remember the Markdown link syntax</h1>
<p>In <a href="https://daringfireball.net/projects/markdown/">Markdown</a>, a universally-handy text formatting language, you create a link like this:</p>
<p><code>[Title of link](https://…)</code></p>
<p>Easy enough, but there's a bunch to remember there. Which comes first, the title or the link? And which is in square brackets, which in regular brackets?</p>
<p>Get any of those things wrong, and your link won't work.</p>
<h3 id="name-and-address-please-sir">'Name and address please, sir'</h3>
<p>Let's do the stuff inside the brackets first. When you get pulled over by the cops you'd never be asked for your 'address and name', would you? Same here.<sup><a href="#user-content-fn-innocent" id="user-content-fnref-innocent" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></p>
<p><strong>Name and address</strong> in that order.</p>
<h3 id="addresses-contain-numbers">Addresses contain numbers</h3>
<p>Those regular brackets <code>()</code> live on the keys <code>9</code> and <code>0</code>.</p>
<p><strong>What contains numbers? An address</strong>.</p>
<p>What doesn't? Your name.<sup><a href="#user-content-fn-andre3000" id="user-content-fnref-andre3000" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup></p>
<h3 id="thats-it">That's it</h3>
<p><code>[Johnny](90 Main St)</code></p>
<hr>
<p><em>100% human. 0% AI. Always.</em></p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-innocent">
<p>Yeah, yeah, you're innocent. Save it for the judge. <a href="#user-content-fnref-innocent" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-andre3000">
<p>Unless you're <a href="https://en.wikipedia.org/wiki/Andr%C3%A9_3000">this guy</a>. <a href="#user-content-fnref-andre3000" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>Maple Vanilla Mead - Cool As Heckhttps://cool-as-heck.blog/maple-vanilla-mead2025-11-14T13:14:14.000Z<div>My next experimental mead recipe is going to be a maple vanilla mead. Here's the base recipe: </div>
<div><br></div>
<div>- 2lb raw acacia blossom honey (primary)</div>
<div>- 12oz Vermont maple syrup (primary)</div>
<div>- 1 vanilla bean (secondary) </div>
<div>- 2 whole allspice berries (secondary) </div>
<div>- 6g of oak chips (secondary)</div>
<div>- 4-6oz Vermont maple syrup for back sweetening and taste</div>
<div><br></div>
<div>Yeast: Lalvin 71B</div>
<div><br></div>
<div>This will hit about 12% ABV. This will be my first time working with acacia honey, raw honey, maple syrup, and oak chips, so this is going to be fun and interesting. 🍷 </div>
Giving My Jekyll Site a CDN Front End - Kev Quirkhttps://kevquirk.com/blog/giving-my-jekyll-site-a-cdn-front-end/2025-11-14T12:55:00.000Z
<p style="font-size: 1.2em;">I've managed to get my Jekyll based site working behind Bunny CDN, while maintaining my .htaccess redirects. Here's how I did it...</p>
<h1 id="giving-my-jekyll-site-a-cdn-front-end">Giving My Jekyll Site a CDN Front End</h1>
<p>Since <a href="https://kevquirk.com/blog/switching-back-to-jekyll-building-my-own-cms/">switching back to Jekyll</a> recently, I’ve been running this site on a Ionos-hosted VPS, then using a little deploy script to build the site and rsync it up.</p>
<p>This all worked fine, but I really wanted to use <a href="https://bunny.net?ref=gnn7bkvipc">Bunny CDN</a> for more than just hosting a few images and my custom font. Being a static site, I could have dumped everything onto their storage platform, but I have a metric tonne of redirects in a <code class="language-plaintext highlighter-rouge">.htaccess</code> file from various platform migrations <a href="https://kevquirk.com/design-history/">over the years</a>.</p>
<p>Bunny’s Edge Platform could have handled these, but with the number of redirects I have, it would have been a slog to maintain. So I assumed I’d never be able to put Bunny in front of my Jekyll site easily and went about my business.</p>
<p>💡 Then I had an epiphany.</p>
<p>What if I created a Bunny pull zone that uses <code class="language-plaintext highlighter-rouge">kevquirk.com</code> as the public domain, then set up a separate domain on my VPS, host the site there, and use that as the pull zone origin?</p>
<p>My theory was that Bunny would still be requesting content from the VPS, so my <code class="language-plaintext highlighter-rouge">.htaccess</code> redirects might still work.</p>
<p>…turns out, they did.</p>
<h2 id="some-small-bugs">Some small bugs</h2>
<p>I duplicated my live site so I could experiment safely. The setup looked like this:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">test.kevquirk.com</code> - the domain configured in the Bunny pull zone</li>
<li><code class="language-plaintext highlighter-rouge">src.qrk.one</code> - the origin domain on my VPS, where the site actually lives</li>
</ul>
<p>The first thing I had to do was update the <code class="language-plaintext highlighter-rouge">url</code> field in my Jekyll <code class="language-plaintext highlighter-rouge">_config.yml</code> from <code class="language-plaintext highlighter-rouge">kevquirk.com</code> to <code class="language-plaintext highlighter-rouge">test.kevquirk.com</code>, rebuild the site, and upload it to <code class="language-plaintext highlighter-rouge">src.qrk.one</code>.</p>
<p>Now, you might be thinking, <em>“Kev, why build the site with the wrong domain?”</em></p>
<p>But I haven’t. By building the site with the test domain, all links point to <code class="language-plaintext highlighter-rouge">test.kevquirk.com/...</code>. If I built it with the origin domain, all internal links would lead to the wrong place. They would still work, but the site would be served from <code class="language-plaintext highlighter-rouge">src.qrk.one</code>, which is not what I want.</p>
<p>Next up was redirect testing. I visited <code class="language-plaintext highlighter-rouge">/feed</code>, which should hit <code class="language-plaintext highlighter-rouge">.htaccess</code> and redirect to <code class="language-plaintext highlighter-rouge">/feed.xml</code>. The redirect worked fine, but the resulting URL was being served from the origin domain.</p>
<p>So instead of seeing <code class="language-plaintext highlighter-rouge">test.kevquirk.com/feed.xml</code> I saw <code class="language-plaintext highlighter-rouge">src.qrk.one/feed.xml</code>.</p>
<p>This happened because Bunny requested the file from the origin using its own hostname, not the hostname I typed. In simple terms:</p>
<ul>
<li>I visited <code class="language-plaintext highlighter-rouge">test.kevquirk.com/feed</code>.</li>
<li>Bunny checked its cache. It wasn’t there, so it asked my origin for the file.</li>
<li>But Bunny made that request using its own hostname (<code class="language-plaintext highlighter-rouge">src.qrk.one</code>), not the one I typed.</li>
<li>Apache saw the request coming from <code class="language-plaintext highlighter-rouge">src.qrk.one/feed</code> and applied the <code class="language-plaintext highlighter-rouge">.htaccess</code> redirect to <code class="language-plaintext highlighter-rouge">/feed.xml</code>.</li>
<li>Apache then rebuilt the redirect URL using the hostname it was given, which was <code class="language-plaintext highlighter-rouge">src.qrk.one</code>.</li>
</ul>
<p>So Apache went:</p>
<blockquote>
<p>“Oh, you want <code class="language-plaintext highlighter-rouge">/feed</code>? Sure. That’s at <code class="language-plaintext highlighter-rouge">src.qrk.one/feed.xml</code>. Here ya go…”</p>
</blockquote>
<h2 id="fixing-the-problem">Fixing the problem</h2>
<p>This would not break anything for visitors, but I didn’t want <code class="language-plaintext highlighter-rouge">src.qrk.one</code> appearing anywhere. It looked messy.</p>
<p>Two changes fixed it:</p>
<ol>
<li>Enable <strong>Forward Host Headers</strong> in my Bunny pull zone.</li>
<li>Add <code class="language-plaintext highlighter-rouge">test.kevquirk.com</code> as a domain alias of <code class="language-plaintext highlighter-rouge">src.qrk.one</code> on my VPS.</li>
</ol>
<p>Forward Host Headers makes Bunny tell the VPS the hostname the visitor used. So instead of:</p>
<blockquote>
<p>“I’m asking for this on behalf of <code class="language-plaintext highlighter-rouge">src.qrk.one</code>.”</p>
</blockquote>
<p>Bunny says:</p>
<blockquote>
<p>“I’m asking for this on behalf of <code class="language-plaintext highlighter-rouge">test.kevquirk.com</code>, not <code class="language-plaintext highlighter-rouge">src.qrk.one</code>.”</p>
</blockquote>
<p>The domain alias ensures Apache accepts that hostname and serves it correctly.</p>
<p>Magic. 🪄🐇</p>
<p>The other thing to double-check is that every page sets a proper <code class="language-plaintext highlighter-rouge">canonical</code> URL. The origin domain is publicly accessible, so crawlers need to know which domain is the real one. That should always be the Bunny pull zone domain.</p>
<p>In Jekyll this is simple. Add the following to the <code class="language-plaintext highlighter-rouge">head</code> section of your layout:</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><link</span> <span class="na">rel=</span><span class="s">"canonical"</span> <span class="na">href=</span><span class="s">"{{ page.url | absolute_url }}"</span><span class="nt">></span>
</code></pre></div></div>
<h2 id="the-final-straight">The final straight</h2>
<p>With the redirect behaviour sorted, the last step was to add a purge step to my deploy script so Bunny knows to fetch the latest version whenever I publish a new post or update something.</p>
<p>Here’s the snippet I added:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># --- Clear Bunny Cache ---
echo "🗑 Clearing Bunny Cache..."
PURGE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
-H "AccessKey: $BUNNY_ACCESS_KEY" \
"https://api.bunny.net/pullzone/$PULL-ZONE-ID/purgeCache")
if [ "$PURGE_RESPONSE" -ne 200 ] && [ "$PURGE_RESPONSE" -ne 204 ]; then
echo "⚠️ Bunny purge failed (HTTP $PURGE_RESPONSE)"
exit 1
fi
</code></pre></div></div>
<p>I set my Bunny API key and Pull Zone ID as variables at the top of the script. The <code class="language-plaintext highlighter-rouge">if</code> statement simply says, <em>“If the response isn’t 200 or 204, tell Kev what went wrong.”</em></p>
<p>And that is it. Last night I flipped the switch. Bunny CDN now sits in front of the live site. I also moved the VPS from Ionos to Hetzner because Ionos now charge extra for a Plesk licence. I went with <a href="https://hestiacp.com/">Hestia</a> as the control panel on the new server.</p>
<p>If you spot any bugs, please do let me know, but everything should be hopping along nicely now. (See what I did there? God I’m funny!)</p>
<div class="email-hidden">
<hr>
<p>Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️</p>
<p>
<a href="mailto:72ja@qrk.one?subject=Giving My Jekyll Site a CDN Front End">Reply to this post by email</a>
</p>
</div>
22.00.0167 An(other) advantage of the creative pattern - Johnny.Decimalhttps://johnnydecimal.com/22.00.0167/2025-11-14T00:43:29.000Z<h1 id="another-advantage-of-the-creative-pattern">An(other) advantage of the creative pattern</h1>
<p>Our <a href="https://johnnydecimal.com/15.02/">creative system</a> here at JDHQ is in heavy use with production of the upcoming <a href="https://johnnydecimal.com/14.02/">JDU</a> series 'task and project management', seeing me create ID <code>50092</code> yesterday. We'll crack that hundred before long.</p>
<p>Previous creative projects -- recording the workshop, say -- tended to sit in their own isolated world. They take up a bunch of disk space, and if you're on a laptop you don't want to (or simply can't) carry those files around forever.</p>
<p>You produce a series, upload the final videos, and archive the original files. So it feels simpler to have all of those files in one folder, and you can just move that folder around.</p>
<p>This is a problem, though, if you ever want to re-edit those videos. To correct a mistake, say. Now you have to get the vidoes off 'the archive drive' and put them back either <em>exactly</em> where they were, which involves you remembering exactly where that was, or you have to re-point your video editing software to their new location. <a href="https://www.blackmagicdesign.com/products/davinciresolve/">DaVinci Resolve</a> calls this 're-linking the media'.</p>
<p>Neither of us are video editing professionals. This is an exercise fraught with danger that often results in us looking at this dreaded screen. <a href="https://kagi.com/search?q=relink+media+davinci+resolve+site%3Ablackmagicdesign.com&r=au&sh=ZwVf-4o74LOS-cQZeX2yiw">We're not the only ones</a>.</p>
<picture class="JDImage6 astro-3zw7efbj"> <source media="(prefers-color-scheme: light) and (min-width: 600px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: dark) and (min-width: 600px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: light) and (max-width: 599px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: dark) and (max-width: 599px)" class="astro-3zw7efbj"> <img alt="Screenshot of a video timeline. Most of the icons representing video frames are red and have a question mark icon. Not good." class=" astro-3zw7efbj" loading="lazy" src="https://johnnydecimal.com/img/v6/22.00.0167A-Davinci-unlinked--0-cx-698x522.png" width="698" height="522"> <figcaption class="astro-3zw7efbj">Figure 22.00.0167A. DaVinci Resolve's dreaded 'unlinked media' icon.</figcaption> </picture>
<h3 id="what-if-the-files-never-moved">What if the files never moved?</h3>
<p>With the creative pattern, the path to the file <em>never changes</em>. It's always (truncated for simplicity)<br>
<code>D25/50-59/50082/file.mov</code>.</p>
<p>What changes is whether the original video files are actually at that location on disk. On my laptop, I've told <a href="https://syncthing.net">Syncthing</a>, which <a href="https://johnnydecimal.com/22.00.0119/">keeps our files in sync</a> across the world, to remove those files. Lucy, our editor, still holds a copy.</p>
<p>I'll eventually remove all of these files from both laptops. We say that I'm 'dehydrating' those folders. At this point, launching DaVinci will look like the screenshot above. But the only thing I'll need to do if Lucy wants to edit a video is 'rehydrate' those files, synchronising them across the network from our server in Melbourne.</p>
<p>Nothing changed from DaVinci's perspective. Nothing ever will. Bye bye, red timeline of confusion.</p>
<hr>
<p><em>100% human. 0% AI. Always.</em></p>Mead Update - November 13, 2025 - Cool As Heckhttps://cool-as-heck.blog/mead-update-november-13-20252025-11-13T21:05:22.000Z<div>This week I deoxidized and stabilized the pumpkin mead after back sweetening it last week. It turned out pretty good! If I had to do it again I would go a little less heavy on the amount of spices or the amount of time I left them in. Still, it turned out nice and I can't wait to see how it tastes after a few weeks in the bottle. </div>
<div><br></div>
<div><figure class="attachment attachment--preview attachment--jpg">
<img alt="Uploaded image" data-lightbox-full-url="https://pagecord.com/cdn-cgi/image/width=1600,height=1200,format=webp,quality=90/https://storage.pagecord.com/ajp4de9at04j9wohxy1etpcmarzt" src="https://pagecord.com/cdn-cgi/image/width=1600,height=1200,format=webp,quality=90/https://storage.pagecord.com/ajp4de9at04j9wohxy1etpcmarzt">
</figure></div>
<div>I've got a batch of ginger peach cyser going now. Well, it's just peach at the moment. It still has a week or two of fermentation left before I can test it, rack it, and add the ginger. I also got some peach syrup to use as a sweetener if it needs a little more post-fermentation sugar or an extra kick of peach flavor.</div>
Honor The Maker's Schedule - Werd I/O69160a202e52e00001b229d72025-11-13T16:41:04.000Z<p>[<a href="https://pointc.co/honor-the-makers-schedule/?ref=the-idea-bucket-newsletter">Corey Ford at Point C</a>]</p><p><a href="https://pointc.co/honor-the-makers-schedule/?ref=werd.io" rel="noreferrer">Everything Corey says here</a>, all day long.</p><blockquote>“Everyone needs (some) meetings for alignment, feedback, brainstorming, hiring, speculative networking, etc. And everyone also needs the space to focus on deep work, whether they consider themselves a "maker" or not.<br><br>The problem is that the people with the most power (leaders like you!), tend to work more on a manager's schedule and, if they're not intentional about establishing team norms regarding how time is valued, they can suck away the ability for anyone else to do deep work.”</blockquote><p>As always, Corey breaks a problem that may seem intractable down into an easy-to-follow framework.</p><p>The key here is shared norms, created through intention — which also means that there needs to be a shared agreement with leadership that protecting deep work really is important.</p><p>In turn, that’s about respect: a culture where a manager can drop an event on your calendar at any time signals that they don’t really care about your experience or needs. That’s the kind of culture that can easily evolve organically if nobody’s tending to it; it’s not necessarily <em>intentionally</em> disrespectful, but it’s disrespectful nonetheless.</p><p>As an aside, I was delighted to see that Corey’s turned his week-long training camp — something I’ve both participated in and helped to participate back in my Matter days — into <a href="https://pointc.co/trainingcamp/?ref=werd.io">a service that anyone can book for their team</a>. I found it transformative, and I think a lot of teams could use it.</p><p>[<a href="https://pointc.co/honor-the-makers-schedule/?ref=the-idea-bucket-newsletter">Link</a>]</p>Jack Dorsey funds diVine, a Vine reboot that includes Vine's video archive - Werd I/O6915ef7b2e52e00001b229cb2025-11-13T14:47:23.000Z<p>[<a href="https://techcrunch.com/2025/11/12/jack-dorsey-funds-divine-a-vine-reboot-that-includes-vines-video-archive/?fbclid=IwY2xjawOCzE5leHRuA2FlbQIxMQBicmlkETFHWnZXaWs3TUY5dkdPQnl3c3J0YwZhcHBfaWQQMjIyMDM5MTc4ODIwMDg5MgABHucRH6GceRBPpOL100L4hdrr9UflbiOlZZo6EHEBVE8Y1-RzTIgRDjybKZci_aem_f0NLCPcBrg-TOQe6-sNhvA&ref=werd.io">Sarah Perez at TechCrunch</a>]</p><p>I didn’t have Rabble <a href="https://divine.video/?ref=werd.io" rel="noreferrer">bringing back Vine</a> on my bingo card, but I should have.</p><p>This is fascinating:</p><blockquote>“On Thursday, a new app called diVine will give access to more than 100,000 archived Vine videos, restored from an older backup that was created before Vine’s shutdown.<br><br>The app won’t just exist as a walk down memory lane; it will also allow users to create profiles and upload their own new Vine videos. However, unlike on traditional social media, where AI content is often haphazardly labeled, diVine will flag suspected generative AI content and prevent it from being posted.”</blockquote><p>This time around, it’s all based on <a href="https://nostr.com/?ref=werd.io">Nostr</a>, a decentralized social networking protocol that is intentionally not owned or controlled by a single entity. The game-changer is including Vine’s back archives, which is presumably only possible because of Jack Dorsey’s involvement.</p><p>Dorsey has been a major backer of Nostr for the last few years, investing in the protocol and apps that have the potential to make it successful. Rabble, of course, was one of the core group at Odeo that was present for the inception of Twitter, along with Dorsey; they’re frequent collaborators and Dorsey backed Rabble’s startup <a href="https://www.nos.social/?ref=werd.io">nos.social</a>. Clearly Dorsey has had, or been able to negotiate, access to the Vine back catalogue, which makes sense as a potential way to encourage folks to join the Nostr network.</p><p>[<a href="https://techcrunch.com/2025/11/12/jack-dorsey-funds-divine-a-vine-reboot-that-includes-vines-video-archive/?fbclid=IwY2xjawOCzE5leHRuA2FlbQIxMQBicmlkETFHWnZXaWs3TUY5dkdPQnl3c3J0YwZhcHBfaWQQMjIyMDM5MTc4ODIwMDg5MgABHucRH6GceRBPpOL100L4hdrr9UflbiOlZZo6EHEBVE8Y1-RzTIgRDjybKZci_aem_f0NLCPcBrg-TOQe6-sNhvA&ref=werd.io">Link</a>]</p>RE: Reassess time spent enjoying luxury - Joel's Log Fileshttps://joelchrono.xyz/blog/time-spent-enjoying-luxury2025-11-13T14:20:00.000Z<html><head><style>
.notice::before {
content: "IN REPLY TO:";
color: var(--bg);
background: var(--border);
width: 12rem;
display: inline-block;
text-align: center;
position: relative;
left: 1.5rem;
top: 1.5rem;
padding: 2px 10px;
font-weight: bold;
}
#notice{
border: none;
padding: 0;
font-style: normal;
margin: 0;
position: relative;
}
</style>
</head><body><blockquote id="notice">
<div class="notice">
<article class="post_embed">
<h2>Reassess time spent enjoying luxury</h2>
<p><i>Every time my wife is away for business travel, I take the opportunity to do things I don't have time for when we're together: video games, movies and TV shows my wife won't watch, that sort of thing. Inevitably I wind up spending too much time with these luxuries. Just last night (Monday), when I had all day to play with a vacation day, I didn't go to sleep until 12:50 AM.</i></p>
<p><a href="https://lwgrs.bearblog.dev/reassess-time-spent-enjoying-luxury/">Read the Full Post</a>
by <a href="https://ottawa.place/@srgower">Steve</a>
on <a href="https://lwgrs.bearblog.dev/">An Almost Anonymous Blog</a></p>
</article>
</div>
</blockquote>
<p>I recently saw this post by Steve and found it kinda relatable.</p>
<p>Every once in a while, I get to have the house for myself too, and the options for me are similar. While hobbies like books, manga or certain games I can do at any time—even <a href="https://joelchrono.xyz/blog/the-time-commuting-to-work/">during my commute to work</a>—or when others are present. Some activities are simply more enjoyable when there’s nobody around that may require my attention, or that may <del>send me to clean up my bedroom instead</del>. Living with parents has its perks, but it’s a double-edged sword.</p>
<p>Even if staying up late is not <em>ideal</em> when I have to wake up early to work, I personally have no issues with my sleep schedule. I wake up on the first beep of my alarm and continue the morning like nothing happened. I am not sure this power will last forever, but I’ll take advantage of it when I can. Obviously, this is not a daily thing, but a few times a year aren’t too bad.</p>
<p>Because of this, my reassessment is not because I stay up late or watch too much anime at once. It comes from the number one reason I end up <em>actually wasting my time</em>: YouTube, <em>YouTube Shorts.</em></p>
<p>I find value in videogames, anime, movies or other media, I enjoy my time with them. However, every once in a while, I’ll just do nothing but watch random stuff from the YouTube algorithm. I know I just said a few posts ago that <a href="https://joelchrono.xyz/blog/escaping-my-phone/">I don’t have an issue with algorithms</a>, and that is the case <em>most of the time</em>, but when I literally have nothing else to do, and I can choose between a gaming session, bingewatching a show or a movie marathon, for some reason, my brain will default to sitting on my laptop (I don’t use the YouTube app at least) and scrolling through random videos.</p>
<p>All that time to be spent on things that <em>I can only do at moments like this</em>, like solving some dungeon on <em>CrossCode</em> or defeating a boss on <em>Silksong</em>, you know? finish a book or at least try a new anime. But no, <em>endless scrolling.</em></p>
<p>Like, it could be great. It has been great before, I have managed to accomplish a lot of stuff some times after all.</p>
<p>Like that time I binged all the 70+ episodes of <em>Hajime No Ippo</em>, or when I watched almost all of the <em>Alien</em> movies, or played through <em>The Hundred Line: Last Defense Academy</em> for the first time. All of that was rather awesome, stuff that I can’t afford to do at such a pace on a regular basis.</p>
<p>I think I just need to set my priorities properly, I am consciously making the <em>wrong</em> choice, which means I can consciously <em>not do it</em>. Right?</p>
<p>I really envy the people who can actually get things done using time-blocking or to-do lists, calendars and all that mumbo jumbo sometimes, I mostly go by feel, and unfortunately I feel like being lazy and <em>consuming</em> “content” way more often than putting some effort on enjoying the creative output of artists who pour so much passion into their work.</p>
<p>One of the details that struck me when I read the original post, was the choice for the word “luxury”. Sometimes I don’t appreciate it that much, and take things for granted, but yeah, a couple of evenings after work just to relax by yourself and not worry until tomorrow’s workday comes is a luxury, so I shouldn’t let it go to waste.</p>
<p>And of course, it’s at moment like this when I not only get to digest all of that media, I also get to work on my own stuff!</p>
<p>From writing longer blog posts (I always write my reviews at home where I can quickly access screenshots and the like), to spending time on a different project (like the Rockbox theme for the Innioasis Y1 which <a href="https://codeberg.org/joelchrono/AdwaitaPod-Arcticons-rockbox-360p/releases">I just published</a>).</p>
<p>However, those things are something I can do when others are around the house, I just gotta work on my desk. So I’m going off-topic.</p>
<p>In the end, the main thing is that I get to use the big TV in the living room for whatever I want.</p>
<p>Freedom!</p>
<p>So, how do you spend time when you get to be by yourself for a bit?</p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=RE: Reassess time spent enjoying luxury">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/115542871130964667">Reply on Fediverse</a>
</p>Book Review: Master Flea by E. T. A. Hoffmann ★★★⯪☆ - Terence Eden’s Bloghttps://shkspr.mobi/blog/?p=635752025-11-13T12:34:18.000Z<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/09/Meister_Floh_2.webp" alt="Book cover." width="250" class="alignleft size-full wp-image-63576"/>
<p>While visiting <a href="https://frankfurter-goethe-haus.de/en/">Goethe Haus</a> in Franfurt, I read a summary of the 1822 book "<i lang="de">Meister Floh</i>" and thought it might be fun to read.</p>
<p>It is <em>curious</em>. Half the satire has long since lost all relevance to the world, yet it is still an entertaining and mysterious novel. Much like 1827's "<a href="https://shkspr.mobi/blog/2023/02/book-review-the-mummy-a-tale-of-the-twenty-second-century-by-jane-loudon/">The Mummy! A Tale of the Twenty-Second Century</a>" things just happen. People wander into rooms, announce their plot-point, and push the story along.</p>
<p>Parts of it are hilarious, other tedious. Long passages feel like allegories which would have benefited from a translator's footnote. It melds science-fiction with fairy-tales and comes up with something inexplicably weird. Perhaps, given the subject matter, it should be regarded at "scientific fiction"?</p>
<p>In truth, the story is weak. It's all hidden identities and bumbling heroes. What makes it is the wry narrator who is quite content to pierce the fourth-wall (do books have walls?) and give us his opinion on how the story is progressing. At times it almost becomes a meta-novel; playing with what must have been early tropes. For example, the narrator announces:</p>
<blockquote><p>It is an established custom, that when the hero of a tale is under any violent agitation, he should run out into a forest, or, at least, into some lonely wood; and the custom is good, because it really prevails in life.</p></blockquote>
<p>Towards the end, it becomes increasingly silly and convoluted. It's a story of horny old men chasing eternal life. Perhaps Hoffmann's immortality in the pantheon of great German writers brings him close to that goal.</p>
Building checksec without boundaries with Checksec Anywhere - Trail of Bits Bloghttps://blog.trailofbits.com/2025/11/13/building-checksec-without-boundaries-with-checksec-anywhere/2025-11-13T12:00:00.000Z<p>Since its original release in 2009, <a href="https://www.trapkit.de/tools/checksec/">checksec</a> has become widely used in the software security community, proving useful in CTF challenges, security posturing, and general binary analysis. The tool inspects executables to determine which exploit mitigations (e.g., ASLR, DEP, stack canaries, etc.) are enabled, rapidly gauging a program’s defensive hardening. This success inspired numerous spinoffs: a <a href="https://github.com/slimm609/checksec">contemporary Go implementation</a>, Trail of Bits’ <a href="https://github.com/trailofbits/winchecksec">Winchecksec</a> for PE binaries, and various scripts targeting Apple’s Mach-O binary format. However, this created an unwieldy ecosystem where security professionals must juggle multiple tools, each with different interfaces, dependencies, and feature sets.</p>
<p>During my summer internship at Trail of Bits, I built <a href="https://checksec-anywhere.com/">Checksec Anywhere</a> to consolidate this fragmented ecosystem into a consistent and accessible platform. Checksec Anywhere brings ELF, PE, and Mach-O analysis directly to your browser. It runs completely locally: no accounts, no uploads, no downloads. It is fast (analyzes thousands of binaries in seconds) and private, and lets you share results with a simple URL.</p>
<h2 id="using-checksec-anywhere">Using Checksec Anywhere</h2>
<p>To use Checksec Anywhere, just drag and drop a file or folder directly into the browser. Results are instantly displayed with color-coded messages reflecting finding severity. All processing happens locally in your browser; at no point is data sent to Trail of Bits or anyone else.</p>
<p>
<figure>
<img src="https://blog.trailofbits.com/img/checksec-anywhere/checksec-anywhere-1.gif" alt="Figure 1: Uploading 746 files from /usr/bin to Checksec Anywhere" />
<figcaption>Figure 1: Uploading 746 files from /usr/bin to Checksec Anywhere</figcaption>
</figure>
</p>
<h2 id="key-features-of-checksec-anywhere">Key features of Checksec Anywhere</h2>
<h3 id="multi-format-analysis">Multi-format analysis</h3>
<p>Checksec Anywhere performs comprehensive binary analysis across ELF, PE, and Mach-O formats from a single interface, providing analysis tailored to each platform’s unique security mechanisms. This includes traditional checks like stack canaries and PIE for ELF binaries, GS cookies and Control Flow Guard for PE files, and ARC and code signing for Mach-O executables. For users familiar with the traditional checksec family of tools, Checksec Anywhere reports maintain consistency with prior reporting nomenclature.</p>
<h3 id="privacy-first">Privacy-first</h3>
<p>Unlike many browser-accessible tools that simply provide a web interface to server-side processing, Checksec Anywhere ensures that your binaries never leave your machine by performing all analysis directly in the browser. Report generation also happens locally, and shareable links do not reveal binary content.</p>
<h3 id="performance-by-design">Performance by design</h3>
<p>From browser upload to complete security report, Checksec Anywhere is designed to rapidly process multiple files. Since Checksec Anywhere runs locally, the exact performance depends on your machine… but it’s fast. On a modern MacBook Pro it can analyze thousands of files in mere seconds.</p>
<h3 id="enhanced-accessibility">Enhanced accessibility</h3>
<p>Checksec Anywhere eliminates installation barriers by offering an entirely browser-based interface and features designed to provide accessibility:</p>
<ul>
<li>
<p><strong>Shareable results</strong>: Generate static URLs for any report view, enabling secure collaboration without exposing binaries.</p>
</li>
<li>
<p><strong>SARIF export</strong>: Generate reports in SARIF format for integration with CI/CD pipelines and other security tools. These reports are also generated entirely on your local machine.</p>
</li>
<li>
<p><strong>Simple batch processing</strong>: Drag and drop entire directories for simple bulk analysis.</p>
</li>
<li>
<p><strong>Tabbed interface</strong>: Manage multiple analyses simultaneously with an intuitive UI.</p>
<p>
<figure>
<img src="https://blog.trailofbits.com/img/checksec-anywhere/checksec-anywhere-2.png" alt="Figure 2: Tabbed interface for managing multiple analyses" />
<figcaption>Figure 2: Tabbed interface for managing multiple analyses</figcaption>
</figure>
</p>
</li>
</ul>
<h3 id="technical-architecture">Technical architecture</h3>
<p>Checksec Anywhere leverages modern web technologies to deliver native-tool performance in the browser:</p>
<ul>
<li><strong>Rust core</strong>: Checksec Anywhere is built on the <a href="https://github.com/etke/checksec.rs">checksec.rs</a> foundation, using well-established crates like Goblin for binary parsing and iced_x86 for disassembly.</li>
<li><strong>WebAssembly bridge</strong>: The Rust code is compiled to Wasm using wasm-pack, exposing low-level functionality through a clean JavaScript API.</li>
<li><strong>Extensible design</strong>: Per-format processing architecture allows easy addition of new binary types and security checks.</li>
<li><strong>Advanced analysis</strong>: Checksec Anywhere performs disassembly to enable deeper introspection (like to detect stack protection in PE binaries).</li>
</ul>
<p>See the <a href="https://github.com/trailofbits/checksec-anywhere">open-source codebase</a> to dig further into its architecture.</p>
<h2 id="future-work">Future work</h2>
<p>With an established infrastructure for cross-platform binary analysis and reporting, we can easily add new features and extensions. If you have pull requests, we’d love to review and merge them.</p>
<h3 id="additional-formats">Additional formats</h3>
<p>A current major blind spot is lack of support for mobile binary formats like Android APK and iOS IPA. Adding analysis for these formats would address the expanding mobile threat landscape. Similarly, specialized handling of firmware binaries and bootloaders would extend coverage to critical system-level components in mobile and embedded devices.</p>
<h3 id="additional-security-properties">Additional security properties</h3>
<p>Checksec Anywhere is designed to add new checks as researchers discover new attack methods. For example, recent research has uncovered multiple mechanisms by which compiler optimizations violate constant-time execution guarantees, prompting significant discussion within the compiler community (see <a href="https://discourse.llvm.org/t/rfc-constant-time-execution-guarantees-in-llvm/86700">this LLVM discourse thread</a>, for example). As these issues are addressed, constant-time security checks can be integrated into Checksec Anywhere, providing immediate feedback on whether a given binary is resistant to timing attacks.</p>
<h2 id="try-it-out">Try it out</h2>
<p>Checksec Anywhere eliminates the overhead of managing format-specific security analysis tools while providing immediate access to comprehensive binary security reports. No installation, no dependencies, no compromises on privacy or performance. Visit <a href="http://checksec-anywhere.com">checksec-anywhere.com</a> and try it now!</p>
<p>I’d like to extend a special thank you to my mentors William Woodruff and Bradley Swain for their guidance and support throughout my summer here at Trail of Bits!</p>Monet - James' Coffee Bloghttps://jamesg.blog/2025/11/13/monet/2025-11-13T11:57:20.000Z
<p>On the ground floor of the Musee de l’Orangerie in Paris – a long building by the river banks of the Seine, and at the start of the Jardin des Tuileries – there is an exhibit of eight Monet paintings. The <a href="https://www.musee-orangerie.fr/en/node/197502">museum website introduces the paintings</a> like so:</p><blockquote>Offered to the French State by the painter Claude Monet on the day that followed the Armistice of November 11, 1918 as a symbol for peace, the Water Lilies are installed according to plan at the Orangerie Museum in 1927, a few months after his death.</blockquote><p>The exhibit spans two rooms: each an oval. The two ovals connect together in a figure-of-eight. The walls of the rooms are white, each adorned with a wide-canvas Monet painting. When you are in either of the oval rooms, you are surrounded by colour: reds and yellows and blues and purples. You get a feeling that there is more detail than you can possibly comprehend, but you do your best to take in the works. From up close and afar, you study, appreciating the colours, the gradients, the trees, the reflections.</p><p>The painting on the left as you enter shows a gradient as if the sun is rising or setting – you don’t yet have a perfect grasp of how to distinguish between the two moments of day in art, and so you see both: a beginning and an end. You proceed further and see blue skies and white clouds reflected on the pond – blue a theme of several of paintings, you will later realise. <em>What does it mean to appreciate a work?</em>, you consider. Do I need to understand every detail? The answer to this question reveals itself as a smile adorns your face for reasons that you cannot quite put into words. Maybe the colour is brightening your mood. Or maybe the realisation that the more you look, the more you see satisfies a certain part of your mind that loves details.</p><p>You walk around the two rooms once and then realise you want to keep going. You keep walking. You look at all of the works with a new perspective – the perspective of having seen all that comes before and after each individual painting. You wonder if there are themes between the works, and you start to think more about whether the painting to the left as you entered was of a sunrise or a sunset.</p><p>In the back of your mind, you think about how the structure of the rooms – the two ovals – encourages you to keep going. You are in a place that encourages you to walk in circles. You learned from the plaque on your way in that this was designed: that the place is intentionally a figure-of-eight, the symbol of infinity.</p><p>At one point, after spending some time looking at a painting, you realise that there is a colour you didn’t notice before. You realise that there is an infinite amount to appreciate, and that you don’t feel an obligation to understand everything for the colours and the vastness of the paintings and the context in which they were offered – as a symbol for piece – take your breath away.</p><p>You realise that you don’t need to understand all the details of the works for them to have an impact, to leave you with some feeling.</p><p>I left with a sense of wonder. I came back the next day.</p>
Email Is Amazing, but People Try Their Best to Ruin It - Kev Quirkhttps://kevquirk.com/blog/email-is-amazing-but-people-try-their-best-to-ruin-it/2025-11-13T10:59:00.000Z
<div class="link">
<h2>Email Is Amazing, but People Try Their Best to Ruin It</h2>
<span>by Alex White</span>
<p>Alex has written a lovely reflection on rediscovering the joy of email as a slower, more deliberate way to talk with people. Well worth a read if you miss when the inbox felt like a conversation, not a chore.</p>
<p><a class="button" target="_blank" href="https://thatalexguy.dev/posts/my-love-of-email/">Read Post →</a></p>
<hr class="email-hidden">
</div>
<p>Alex’s blog is a one that I only discovered a couple days ago when he emailed me about my <a href="https://kevquirk.com/blog/what-happens-after-we-die/">previous post</a>. We ended up having a good old natter about all kinds of things.</p>
<p>As is par for the course, I checked out his blog, quickly found we have <em>a lot</em> in common, and our love of email is one of them.</p>
<p>As I’ve mentioned before, <a href="https://kevquirk.com/blog/archive-or-delete/">I’m very anal with my email</a> and like Alex, I also <em>look forward</em> to checking my email every morning as there’s usually at least 1 interesting email from a reader. Today I have 5 of them to reply to (including a response from Alex) - it’s one of my favourite times of the day.</p>
<p>Anyway, I digress. Like Alex, I <em>love</em> email - it’s a fantastic way to communicate with the rest of the world. It’s a tried and tested, robust tool. It’s not email that’s the problem, it’s the people who use it.</p>
<p>Alex is also <a href="https://thatalexguy.dev/posts/html-cms-announcement/">building his own CMS for HTML</a>, which is <a href="https://kevquirk.com/blog/switching-back-to-jekyll-building-my-own-cms/">another thing we have in common</a>.</p>
<p>Anyway, go read his blog. It’s great.</p>
<div class="email-hidden">
<hr>
<p>Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️</p>
<p>
<a href="mailto:72ja@qrk.one?subject=Email Is Amazing, but People Try Their Best to Ruin It">Reply to this post by email</a>
</p>
</div>
What’s in my inventory? - James' Coffee Bloghttps://jamesg.blog/2025/11/12/whats-in-my-inventory/2025-11-12T13:51:33.000Z
<p>Wherever I go, I usually bring my backpack. In it, I always keep a few things. First, I try to always bring a book with me. I usually pack a book to read before I leave the house, for the book I am reading is either at my bedside or next to my chair. Right now, I am reading <em>the art of explanation</em> by Ron Atkins, a book about how to communicate clearly written by a senior reporter at the BBC. If I am out and about, I might read in a cafe, on the train, or really anywhere that I can sit down and relax.</p><p>I bring my AirPods wherever I go, as well as my phone (I wish my phone were lighter though). I can’t read in noisy environments; the AirPods noise isolation feature is thus useful. I also enjoy listening to music where I go – songs by Taylor Swift, Lorde, Florence and the Machine, Oh Wonder, MisterWives, and several other artists are among those I listen to the most. I love podcasts, too.</p><p>I also bring a notebook in which to write. This is essential. Sometimes I need to write something down or sketch it out. My notebook is where I will write down a few ideas that I want to explore on paper rather than jotting down on my phone. I draw wireframes for web pages. I write stories. My notebook has a sticker of my blog mascot on the front, a little bit of personalisation.</p><p>I bring a few pencils. I don’t think I bring a pen anywhere; I prefer to write with pencil in notebooks. I like to use Blackwing pencils, which have a rubber – is “rubber” widely understood outside the UK? An alternate term is an “eraser” – on the end. I bring a pencil sharpener, too – all stationery is kept in my pencil case.</p><p>I bring some stickers where I go, in case I run into friends to whom I want to give stickers. I bring hand sanitiser – absolutely essential.</p><p>I bring various charging cables, some that I use and others that I keep in case someone needs them. (I once went on a trip abroad and forgot a charger converter. A friend kindly lent me a spare they had. Ever since then I try to keep a few cables.)</p><p>I also bring all of myself where I go – my thoughts, my hopes, my dreams, my anxieties, my ideas.</p><p><em>This is my submission for the </em><a href="https://blog.absurdpirate.com/bear-blog-carnival-november-whats-in-my-inventory/"><em>Bear Blog Carnival this month</em></a><em>, hosted by Absurd Pirate on the topic “What’s in my inventory?”.</em></p>
I’m going to study art history - James' Coffee Bloghttps://jamesg.blog/2025/11/12/studying-art-history/2025-11-12T09:08:00.000Z
<p>Over the last few months, I have been taking a part-time online course with the V&A focused on the history of art. The course has taken me through eras from Classical art and sculpture all the way to Impressionism, Cubism, and Surrealism. With every lecture, I feel like my mind is being opened, both by the pieces of art I study and the context around the art – the cultural commentary that arose from pivotal art works, how technology changed art, and more.</p><p>With that said, I have an announcement to make: Starting in January next year, I am going to be studying for a bachelor’s degree in History of Art. I’ll be studying with the Open University, a university based in the UK that specialises in distance and online learning.</p><p>It’s a big change for me: for the last six years, I have been a technical writer, focused on documentation and tutorials of all kinds. I moved straight from secondary school to work. I had an eagerness to start my career, and, looking back, I feel I made the right decision by not starting with university.</p><p>But this year in particular, I felt like I was no longer growing as much as I wanted to. I was yearning for a new challenge. I started thinking about new things to do, and, looking back on what brought me the most joy this year, my time in art galleries was close to the top of the list. <em>I could study art history</em>, I thought.</p><p>When I am in galleries, I love trying to understand an artwork. I love looking for details. I love the moment where you realise a new detail after studying an artwork closely for ten minutes. I love noticing patterns between different paintings – whether themes or icons or common objects. Over the last year, I have found myself being able to understand paintings more as a result of spending more time in galleries, but there is so much more I want to learn – a realisation that fills me with great excitement.</p><p>Last week, in my part-time course, I learned how to interpret a Cubist painting, which has helped me appreciate that period to a much greater extent. I learned that Cubists strive to paint a picture of a space by showing you only the minimum details you need to build your own image of the space. An occluded part of a musical instrument and a glass may indicate the scene is in a bar, for example. An hour of learning helped open my eyes to a form of art I found interesting but was unable to appreciate to a great extent. Cubist paintings make me consider the questions <em>What is essential to create an image? And how do I know?</em></p><p>After many months of thought, the idea of studying turned into a reality. My blog home page now reads <em>I'm a soon-to-be art history student.</em>, a statement I added fuelled by the excitement I feel for the coming months. Despite this big change, one thing is for sure: I will continue to be here blogging as normal – indeed, writing, like analysing art, excites me to an extent that may take a lifetime to encapsulate in words.</p>
22.00.0166 Decimal Diary: Business links and food trucks - Johnny.Decimalhttps://johnnydecimal.com/22.00.0166/2025-11-12T09:00:00.000Z<h1 id="decimal-diary-business-links-and-food-trucks">Decimal Diary: Business links and food trucks</h1>
<blockquote>
<p>Today's blog is a guest post by Lucy.</p>
</blockquote>
<p>Dear Decimal Diary,</p>
<p>Yesterday I added a bunch of new resource links to several IDs in the <a href="https://johnnydecimal.com/15.04/">Small Business System</a>. And one of them led me to start an imaginary food truck business.</p>
<h3 id="sensible-governmenty-links">Sensible, governmenty links</h3>
<p>Turns out there's a lot of great small-business-related information out there. But it can be hard to find if you don't know where to start (or have the time).<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup> We originally planned to include a few curated links in most Small Business IDs. There aren't many yet – I add new ones as I discover and vet them to check they're reputable.</p>
<p>Since we're Australian they're mostly from our Government or 'sensible' government-adjacent organisations. But I do try to find things that are relevant no matter where a business is. For example, there's links to some good general advice in:</p>
<ul>
<li><code>14.42 Technical cybersecurity</code>, and</li>
<li><code>14.43 Behavioural cybersecurity</code>.</li>
</ul>
<p>But if you need country-specific guidance, hopefully anything we find can help you search for similar advice from <em>your</em> government.</p>
<p>This may or may not be a useful feature, but we thought we'd give it a go and see if it evolves into anything.<sup><a href="#user-content-fn-2" id="user-content-fnref-2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup> At the very least I'm learning heaps of stuff about running a small business that I didn't know before.</p>
<h3 id="refining-search">Refining search</h3>
<p>At the same time I also try to think of new keywords for <a href="https://jdhq.johnnydecimal.com/">JDHQ's</a> search feature (remember you can just type <code>/</code> to activate search).</p>
<p>So if you've tried to find something in Small Business (or elsewhere) and search didn't surface it, let us know. The words we use to describe something in Australian business might be different to yours. But it's easy to add keywords that will help you find what you need.</p>
<p>For example, we learned from a Decimal this week that it's common to have an '<a href="https://www.investopedia.com/terms/l/llc-operating-agreement.asp">operating charter</a>' in American business. So I added that to the examples list for <code>11.11 Structure & registrations</code>. And now it appears in search.</p>
<h3 id="my-imaginary-food-truck">My imaginary food truck</h3>
<p>The first link I found for <code>11.12 Licences, permits, & accreditations</code> is from the <a href="https://ablis.business.gov.au/">Australian Business Licence and Information Service (ABLIS)</a>. ABLIS has a <a href="https://ablis.business.gov.au/search/activity">handy tool</a> to research licences, regulations, council approvals, and compliance requirements for different businesses. So I thought I'd take it for a spin.</p>
<p>I pretended I wanted to start a:</p>
<ul>
<li>Simple food truck business (aka 'mobile food van operation'),</li>
<li>Located in central Canberra in the Australian Capital Territory,</li>
<li>And I would operate as a sole trader.</li>
</ul>
<picture class="JDImage6 astro-3zw7efbj"> <source media="(prefers-color-scheme: light) and (min-width: 600px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: dark) and (min-width: 600px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: light) and (max-width: 599px)" class="astro-3zw7efbj"> <source media="(prefers-color-scheme: dark) and (max-width: 599px)" class="astro-3zw7efbj"> <img alt="A cartoon that Lucy drew. It's a big red food truck with a 'Simple Joe' sign. A stick figure is waiting to sell you $2 coffee (bargain!)." class=" astro-3zw7efbj" loading="lazy" src="https://johnnydecimal.com/img/v6/22.00.0166A-SimpleJoe--0-cx-1000x737.png" width="1000" height="737"> <figcaption class="astro-3zw7efbj">Figure 22.00.0166A. Simple Joe.</figcaption> </picture>
<p>I then answered a short series of questions about how I thought my business would run. And I got back this list of <a href="https://ablis.business.gov.au/search/services/print?curl=H4sIAAAAAAAEAEVQu1LDMBD8GzdpdE9JhQsGGgqo8gPOxMyEgTjjBL6fRLcWjXe1t9pb6zC9T9%2fz%2bLYcTl%2fz7mNZjrvf6bxbLvM63U7LebhcX49jtZqGz%2fHpeT9cbw0OD9mH6f41SQ0zUUO32pAodM%2fasGoOXwlgHEUiJkUcSczJ4ppSxJkGKuI9h19ZoAOdw29Yn6KW1sjzklAbeTUw14I9%2bA2NHMVZH31flvM87tefeVj%2f6eMpJJNZY%2bwN1FKWGJG4wpSAFabMXjeWqbH780AQMGcOk7B6mMQoFTCpsVg5ObSSPHZrsq0EI1iIFCFemDZNcp9uJbNjQynah9IvbO0KQeNkqWu2hZQeIr0wWMU%2fkEUNw0Lngl6Fc0%2fs9QWvUU3kD4aRKC%2fAAgAA">40 (!) things that I might need to consider</a>. To anyone out there who has a business that involves any regulation, I tip my cap. I had no idea how much there was to know.</p>
<p>I was just playing around and some of my results were more important than others, like safe food handling. But there's so many other hangers on that might be relevant – there's an entire code of practice just for having a <a href="https://ablis.business.gov.au/service/act/movable-signs-code-of-practice/32050?bsId=6">movable sign</a>! But I think my favourite is the <a href="https://ablis.business.gov.au/service/ag/workplace-and-telephone-on-hold-music-licence/39533?bsId=6&locations=ACT">Workplace and Telephone on Hold Music Licence</a>.</p>
<p>Like many people, Johnny and I have pretend-talked about having a simple hospitality business.<sup><a href="#user-content-fn-3" id="user-content-fnref-3" data-footnote-ref="" aria-describedby="footnote-label">3</a></sup> However, I reckon if more budding entrepreneurs went to a licencing site like ABLIS before committing money to their idea, they might find it quite sobering.</p>
<p>I'm not saying don't dream big dreams.</p>
<blockquote>
<p>The world needs successful small business owners – you make daily life so much more interesting than big corporations.</p>
</blockquote>
<p>Just try hard not to procrastinate reading all the tediously boring government regulatory information before taking out a big business loan on a food truck in Canberra. 😉</p>
<p>From Lucy</p>
<hr>
<p><em>100% human. 0% AI. Always.</em></p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p>Of course everyone probably just uses AI now. But given its <a href="https://www.afr.com/companies/professional-services/deloitte-to-refund-government-after-admitting-ai-errors-in-440k-report-20251005-p5n05p">lacklustre citation skills</a> I would personally always check what reference sites it's using for serious business stuff. As a former science writer this is a habit I will never drop, sorry Chatty-G. <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-2">
<p>A library of recommendations for go-to, trustworthy small business sites from around the world? ¯\_(ツ)_/¯ <a href="#user-content-fnref-2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-3">
<p>Not seriously, we're not qualified. But we often do back-of-the-envelope maths and logistics to see if something is food truck-able. At the moment though, we wish someone would start cheap filter-coffee-only carts in Australia, hint hint. You can even use our proposed business name – Simple Joe. <a href="#user-content-fnref-3" data-footnote-backref="" aria-label="Back to reference 3" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>52 Week Notes later - Joel's Log Fileshttps://joelchrono.xyz/blog/52-weeknotes-later2025-11-11T13:00:00.000Z<p>It’s been <a href="https://joelchrono.xyz/blog/2024-w45-weeknotes">a whole year</a> now since I decided to start writing my own weeknotes, a lot of stuff has happened since then, and a portion of that has been documented week after week on this website.</p>
<p>I was inspired by many people, such as <a href="https://moddedbear.com">Jeremy</a> who was the one who gave me the final push, <a href="https://notes.jeddacp.com">Jedda</a> who was at it since earlier, or <a href="https://noisydeadlines.net/">Ariadne</a>, who was among the first I saw!</p>
<p>There’s also <a href="https://thomasrigby.com">Thomas</a>, <a href="https://tk-web.top/">TK</a>, <a href="https://tracydurnell.com">Tracy</a> (woah that’s three T’s!), <a href="https://cassie.ink/">Cassie</a>, <a href="https://sylvia.buzz/weeknotes-40-2025">Sylvia</a>, <a href="https://thetangent.space/">Sam</a> (wooah that’s CSS!?), and many, many more!</p>
<p>Since the day I started, I’ve asked myself how worth it is it to actually write down stuff like this, the random things that happen day after day, that are just a part of everyone’s life.</p>
<p>I have great friends and fellow bloggers who kind of don’t see the point of it, some people want to portray a certain character to their websites, which is perfectly understandable to me. But hey, my website is mostly about my life, not really just gaming or technology or reviews, if I feel like writing it, I’ll probably end up sharing it here, so weeknotes felt right to me.</p>
<p>Somehow, some people even said I’m part of why they decided to <a href="https://sotolf.codeberg.page/posts/this-week-22/">start doing</a> <a href="https://burgeonlab.com/weeknotes/2025/w44/">their own</a> weekly notes, a huge honor for me, I must say.</p>
<p>I am always looking forward to see what people are up to week after week sharing their story, slices of a life that are as familiar as they are unrelatable, as fascinating as they are stressful, and as fun as they are a chore. It’s life after all!</p>
<p>This act of documenting our day, each project, idea, event or shenanigan, is just so interesting to me, both to write myself, and to read up from others. My feed reader is almost like a weekly newsletter of everyone’s updates and thoughts, the same topic, and yet different all the time.</p>
<p>Of course, while some people I admire have <a href="https://dearmishmash.bearblog.dev/taking-a-pause-from-weeknotes/">lost motivation</a> or gotten busy. Some others have continued to be <a href="https://gobino.be/share-your-ordinary-adventures-and-weeknotes/">fascinated by the everyday</a>. In the end, not everyone has the time or the energy to commit on a regular basis, priorities are set somewhere else, and that agency is a beautiful thing too.</p>
<p>I will continue to write these for another year, and more, I hope! And I look forward to all of yours as well, to inspire new ones and uncover old ones, because those small parts of life are the ones that make us realize we are all just people living under the same sun, on this pot of land we call earth.</p>
<p>
<a href="mailto:me@joelchrono.xyz?subject=52 Week Notes later">Reply to this post via email</a> |
<a href="https://fosstodon.org/@joel/115531240548902980">Reply on Fediverse</a>
</p>