<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>caleb gross</title>
    <link>https://noperator.dev/</link>
    <description>Recent content on caleb gross</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 13 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://noperator.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pelican, or pelican&#39;t? A hint at Claude evals</title>
      <link>https://noperator.dev/posts/pelicant/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/pelicant/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a big fan and frequent user of Claude&amp;rsquo;s deep research feature, so it caught my eye when the task title from my research subagent was a bit longer than usual.
I&amp;rsquo;d asked about WWI causes and got the research title &amp;ldquo;Causes of WWI research &lt;em&gt;disabled warnings about&lt;/em&gt;…&amp;rdquo; with some unexpected trailing text at the end.
Confused, I inspected the title with Chrome DevTools and found that the &lt;code&gt;h2&lt;/code&gt; header overflowed far past the truncated text shown in the UI.
The full title discussed re-enabling system update warnings for Windows and macOS—clearly unrelated to my prompt!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>You can just say it</title>
      <link>https://noperator.dev/posts/you-can-just-say-it/</link>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/you-can-just-say-it/</guid>
      <description>&lt;p&gt;There is a weird collection of arguments for appraising the value of humans and their creative artifacts.
It usually goes something like this: In the age of AI, we should still prefer humans in certain roles because AI could &lt;em&gt;never&lt;/em&gt; perform the tasks required for that role.
Or, a human can at least do it &lt;em&gt;better&lt;/em&gt;.
Or, perhaps the output from a human and AI may look similar, but human output is preferable for subtle stylistic reasons that an AI cannot reproduce.
Or, at least the AI cannot reproduce it consistently.
Observe the scuff marks around the base of the goalpost from constant movement. Allow 28 days for the concrete to cure.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>O(N) the Money: Scaling Vulnerability Research with LLMs</title>
      <link>https://noperator.dev/posts/on-the-money/</link>
      <pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/on-the-money/</guid>
      <description>Let&amp;rsquo;s go back to the basics and consider a very simple goal: What if we could find and fix all the vulnerabilities in open source software? This is a pretty ambitious goal, admittedly, but…</description>
    </item>
    
    <item>
      <title>Slice: SAST &#43; LLM Interprocedural Context Extractor</title>
      <link>https://noperator.dev/posts/slice/</link>
      <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/slice/</guid>
      <description>Earlier this summer, Sean Heelan published a great blog post detailing his use of o3 to find a use-after-free vulnerability in the Linux kernel. The internet lit up in response, and for good…</description>
    </item>
    
    <item>
      <title>I used o3 to profile myself from my saved Pocket links</title>
      <link>https://noperator.dev/posts/o3-pocket-profile/</link>
      <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/o3-pocket-profile/</guid>
      <description>&lt;p&gt;Welp, Pocket &lt;a href=&#34;https://support.mozilla.org/en-US/kb/future-of-pocket&#34;&gt;shuts down tomorrow&lt;/a&gt; despite our &lt;a href=&#34;https://saeedesmaili.com/posts/my-content-consumption-workflow/#:~:text=please%20Mozilla%2C%20don%E2%80%99t%20kill%20it&#34;&gt;pleas&lt;/a&gt; for it to stay. While migrating&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; all of my saved articles, I noticed that I&amp;rsquo;ve got almost 900 saved articles spanning nearly 7 years. That&amp;rsquo;s a goldmine of stuff-I-like data! Some quick analysis using xsv&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;𝄢 unzip pocket.zip &amp;amp;&amp;amp; xsv headers part_000000.csv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1   title
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2   url
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3   time_added
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4   tags
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5   status
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;𝄢 xsv sample 1 part_000000.csv | xsv flatten
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;title       The Uncertain Future of American Libraries
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;url         https://mek.fyi/posts/the-uncertain-future-of-american-libraries
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;time_added  1678243022
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tags
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;status      unread
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;𝄢 xsv count part_000000.csv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;878
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;𝄢 xsv select time_added part_000000.csv |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    xsv stats | xsv select min,max | xsv flatten |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    while read header value; do
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        echo -n &amp;#34;$header &amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        date -I -d &amp;#34;@$value&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    done
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;min 2018-07-12
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max 2025-06-26
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;experiment&#34;&gt;Experiment&lt;/h3&gt;
&lt;p&gt;Recalling Simon Willison&amp;rsquo;s recent &lt;a href=&#34;https://simonwillison.net/2025/Apr/26/o3-photo-locations/&#34;&gt;geoguessing challenge&lt;/a&gt; for o3, I considered, &amp;ldquo;What might o3 be able to tell me about myself, simply based on a list of URLs I&amp;rsquo;ve chosen to save?&amp;rdquo; I opened a temporary chat with o3 (doesn&amp;rsquo;t use ChatGPT&amp;rsquo;s memory feature) and prompted:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using LLMs to solve security problems</title>
      <link>https://noperator.dev/posts/ai-for-security/</link>
      <pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/ai-for-security/</guid>
      <description>&lt;p&gt;TL;DR: Raink—a novel, general-purpose listwise document ranking algorithm using an LLM as the ranking model—can be used to solve non-trivial security problems.&lt;/p&gt;
&lt;p&gt;A very simple explanation of &lt;a href=&#34;https://bishopfox.com/blog/raink-llms-document-ranking#:~:text=that%27s%20%22good%20enough%22%3F-,Listwise%20or%20Bust,-The%20listwise%20approach&#34;&gt;how the Raink algorithm works&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Split big list of items into small groups (e.g., 10 items per group)&lt;/li&gt;
&lt;li&gt;Ask the LLM to rank/order each small group according prompt relevance&lt;/li&gt;
&lt;li&gt;Shuffle everything and repeat this process several times&lt;/li&gt;
&lt;li&gt;Keep track of how each item performs across different groups&lt;/li&gt;
&lt;li&gt;Focus more attention on the items that consistently rank highly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The approach is fast, cheap, and handles far more items than would fit in a typical LLM&amp;rsquo;s context window. Key features of the algorithm and &lt;a href=&#34;https://github.com/noperator/raink&#34;&gt;its implementation&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hard problems that reduce to document ranking</title>
      <link>https://noperator.dev/posts/document-ranking-for-complex-problems/</link>
      <pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/document-ranking-for-complex-problems/</guid>
      <description>&lt;p&gt;There are two claims I&amp;rsquo;d like to make:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LLMs can be used effectively&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; for listwise &lt;a href=&#34;https://en.wikipedia.org/wiki/Learning_to_rank#Approaches&#34;&gt;document ranking&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Some complex problems can (surprisingly) be solved by &lt;a href=&#34;https://en.wikipedia.org/wiki/Reduction_(complexity)&#34;&gt;transforming&lt;/a&gt; them into document ranking problems.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;rsquo;ve primarily explored both of these claims in the context of using patch diffing to locate N-day vulnerabilities—a sufficiently domain-specific problem that can be solved using general purpose language models as comparators in document ranking algorithms. I demonstrated at &lt;a href=&#34;https://youtu.be/IBuL1zY69tY?si=l27sUOaECO-o9QFW&amp;amp;t=1846&#34;&gt;RVAsec &amp;lsquo;24&lt;/a&gt; that listwise document ranking can be used to locate the specific function in a patch diff that actually fixes a vulnerability described by a security advisory, and later wrote on the &lt;a href=&#34;https://bishopfox.com/blog/raink-llms-document-ranking&#34;&gt;Bishop Fox blog&lt;/a&gt; in greater defense of listwise ranking by publishing a &lt;a href=&#34;https://github.com/noperator/raink&#34;&gt;command-line tool implementation (&lt;code&gt;raink&lt;/code&gt;)&lt;/a&gt; to prove the idea.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Why I left Air Force Cyber</title>
      <link>https://noperator.dev/posts/why-i-left-air-force-cyber/</link>
      <pubDate>Wed, 29 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/why-i-left-air-force-cyber/</guid>
      <description>&lt;p&gt;I wanted to write this before I&amp;rsquo;ve been out longer than I&amp;rsquo;d been in. I agonized over my decision to leave the Air Force—largely because I experienced it as an issue of professional identity.&lt;/p&gt;
&lt;h3 id=&#34;why-i-joined&#34;&gt;Why I joined&lt;/h3&gt;
&lt;p&gt;After wrestling at a high school math and science academy,  I wanted to keep up physical fitness and develop leadership skills in a technical environment. I also needed financial assistance to fund college. I had Army, Marine, and Naval officers represented among my grandparents—but rather than inspiring any overwhelming patriotism in me, I think military lineage simply enabled me to consider the possibility of going military at all. I considered attending a military service academy but chose a more balanced experience with Air Force ROTC at the University of Virginia.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>zip snip: Social engineering attack using a .zip domain</title>
      <link>https://noperator.dev/posts/zip-snip/</link>
      <pubDate>Sun, 14 May 2023 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/zip-snip/</guid>
      <description>&lt;center&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/WR4IY04FqtU&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;


&lt;br&gt;

&lt;p&gt;Google recently &lt;a href=&#34;https://twitter.com/Google/status/1653866291692728320&#34;&gt;launched&lt;/a&gt; the &lt;code&gt;.zip&lt;/code&gt; TLD, and Twitter has been up in arms. It&amp;rsquo;s hard to imagine that &lt;code&gt;.zip&lt;/code&gt; domains would be used for anything legitimate, and would instead give way to more creative &lt;a href=&#34;https://www.ghacks.net/2023/05/15/googles-zip-top-level-domain-is-already-used-in-phishing-attacks/&#34;&gt;phishing attacks&lt;/a&gt;. Accordingly, I quickly snagged &lt;code&gt;source-code.zip&lt;/code&gt; while these domains were rapidly being bought up, and showed an example of how it might be used to trick a software developer into downloading a malicious ZIP file—yet there are still some that quite reasonably ask, &amp;ldquo;Should we really be so concerned about &lt;code&gt;.zip&lt;/code&gt; TLDs?&amp;rdquo;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How I keep up with new content</title>
      <link>https://noperator.dev/posts/how-i-keep-up-with-new-content/</link>
      <pubDate>Mon, 06 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/how-i-keep-up-with-new-content/</guid>
      <description>&lt;p&gt;Or, using a content aggregator like it&amp;rsquo;s 1999.&lt;/p&gt;
&lt;p&gt;Daniel Miessler writes a lot—and a lot of that lot is &lt;a href=&#34;https://danielmiessler.com/?s=rss&#34;&gt;about RSS&lt;/a&gt;. Daniel inspired me to curate my media intake with RSS (and also more generally to start &lt;del&gt;writing&lt;/del&gt; &lt;a href=&#34;https://tldrsec.com/blog/tldr-sec-163/#:~:text=Daniel%20argues%20that%20one%20of%20the%20keys%20to%20being%20on%20the%20top%20of%20the%20K%20curve%20is%20to%20write/learn%20in%20public%20and%20build%20a%20name%20for%20yourself%20in%20your%20field.&#34;&gt;learning in public&lt;/a&gt;). Here are a few RSS-related tools and principles I&amp;rsquo;ve picked up over the past 6 months. It essentially boils down to discovering new content sources via Twitter, etc., and using a content aggregator (and supporting tools) to bring those many sources into a single view.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Zero-knowledge appointment scheduler</title>
      <link>https://noperator.dev/posts/zero-knowledge-appointment-scheduler/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/zero-knowledge-appointment-scheduler/</guid>
      <description>&lt;p&gt;I recently (finally) started using online appointment scheduling software.&lt;/p&gt;
&lt;p&gt;There are many players in this space, but Calendly is the most popular and featureful. It&amp;rsquo;s awesome—but in order to use it, you have to give it &lt;em&gt;direct access&lt;/em&gt; to whichever calendars you want it to check for conflicts.

&lt;center&gt;
&lt;img src=&#34;https://noperator.dev/posts/calendly.png&#34; style=&#34;width: ; border:2px solid rgb(245,245,245); padding:10px; margin:5px&#34;/&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;That means access to all sensitive details like online meeting URLs, attendee information, etc.—and it gives me the creeps. This isn&amp;rsquo;t unique to Calendly as most booking software works exactly this way. Additionally, &lt;a href=&#34;https://calendly.com/pricing&#34;&gt;Calendly&amp;rsquo;s free tier&lt;/a&gt; is limited in that:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Free as in (tier)</title>
      <link>https://noperator.dev/posts/free-as-in-tier/</link>
      <pubDate>Wed, 23 Nov 2022 00:00:00 +0000</pubDate>
      
      <guid>https://noperator.dev/posts/free-as-in-tier/</guid>
      <description>&lt;p&gt;I tend to push a product&amp;rsquo;s free tier pretty hard.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been using the same free Dropbox account for 11 years (originally 2 GB, but permanently upgraded to 22 GB through various referrals and promotions long ago). I have several free Zoho email accounts grandfathered into supporting custom domains, SMTP, and email forwarding (they still offer a free tier with custom domain support, but &lt;a href=&#34;https://help.zoho.com/portal/en/community/topic/no-more-imap-pop-smtp-on-free-plans-even-on-referrals-with-no-notice&#34;&gt;without those latter features&lt;/a&gt;).
I use free Inoreader while compensating for its restrictions by layering on free equivalent RSS services like &lt;a href=&#34;https://kill-the-newsletter.com/&#34;&gt;Kill the Newsletter!&lt;/a&gt;, &lt;a href=&#34;https://siftrss.com/&#34;&gt;siftrss&lt;/a&gt;, &lt;a href=&#34;https://grepfeed.sigwait.tk/&#34;&gt;Grepfeed&lt;/a&gt;, and &lt;a href=&#34;https://getpocket.com/&#34;&gt;Pocket&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
