<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: jbdamask</title><link>https://news.ycombinator.com/user?id=jbdamask</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 10:37:48 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jbdamask" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[One-liners to check for bad litellm and axios on your computer]]></title><description><![CDATA[
<p>Search your drive (not mounts) for compromised versions of litellm and axios.<p>Please comment if you see anything wrong or ways these can be improved!<p>LiteLLM:
find / \( -type d -name "litellm-<i>.dist-info" -o -name "litellm_init.pth" \) 2>/dev/null \
  | while read d; do
      case "$d" in
        </i>dist-info)
          v=$(echo "$d" | sed 's/.<i>litellm-\(.</i>\)\.dist-info/\1/')
          if echo "$v" | grep -qE '^1\.82\.(7|8)$'; then
            echo "COMPROMISED: $d -> litellm $v"
          else
            echo "CLEAN: $d -> litellm $v"
          fi
          ;;
        <i>pth)
          echo "COMPROMISED: malicious .pth file found at $d"
          ;;
      esac
    done<p>Example output: 
CLEAN: /System/Volumes/Data/Users/johndamask/code/my-own-agents-shove-it/openai-agents-sdk/thebostonwrongs/.venv/lib/python3.12/site-packages/litellm-1.67.5.dist-info -> litellm 1.67.5
CLEAN: /System/Volumes/Data/Users/johndamask/code/ai-evals-course/recipe-chatbot-langchain/.venv/lib/python3.12/site-packages/litellm-1.78.5.dist-info -> litellm 1.78.5
CLEAN: /System/Volumes/Data/Users/johndamask/code/ai-evals-course/recipe-chatbot/.venv/lib/python3.12/site-packages/litellm-1.73.6.dist-info -> litellm 1.73.6<p>Axios:
find . -path "</i>/node_modules/axios/package.json" 2>/dev/null \
  | while read f; do
      v=$(grep '"version"' "$f" | head -1 | sed 's/.<i>: </i>"\(.<i>\)".</i>/\1/')
      dir=$(dirname "$f")
      if echo "$v" | grep -qE '^(1\.14\.1|0\.30\.4)$'; then
        echo "COMPROMISED: $dir -> axios $v"
      else
        echo "CLEAN: $dir -> axios $v"
      fi
    done</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47614201">https://news.ycombinator.com/item?id=47614201</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 02 Apr 2026 13:27:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47614201</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47614201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47614201</guid></item><item><title><![CDATA[New comment by jbdamask in "Claude Code Unpacked : A visual guide"]]></title><description><![CDATA[
<p>Nice job - I'm a fan. Makes it easy to get the big picture so I know where to dive in.</p>
]]></description><pubDate>Wed, 01 Apr 2026 12:11:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47599773</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47599773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47599773</guid></item><item><title><![CDATA[Show HN: Claude Skill to create DDB-backed endpoints in AWS]]></title><description><![CDATA[
<p>Sometimes I just need a place to put stuff that's not local. Apps exist that it make it easy to create an endpoint but I figured it was easier and cheaper to just make a skill.<p>From the description:
Create a token-secured REST API endpoint backed by AWS Lambda and DynamoDB with full CRUD and paginated list support. Deploys via CloudFormation. Use when user wants to quickly spin up an API endpoint, create a simple REST API on AWS, build a quick data store with an API, set up a Lambda+DynamoDB endpoint, or needs a fast way to log and retrieve structured data. Triggers on "create an endpoint", "quick API", "Lambda endpoint", "DynamoDB API", "CRUD endpoint", "log data to AWS".<p>Example use:
Thariq's recent post on how the team uses Claude Skills has a section on logging skill use with a PreToolUse hook (<a href="https://x.com/trq212/status/2033949937936085378" rel="nofollow">https://x.com/trq212/status/2033949937936085378</a>). His example code shows logging to a local file but for company-wide tracking, you'd want to log to a central place. I used my skill to stand up an endpoint for this and my ~/.claude/hooks/log-skill.sh POSTS to it:<p>skill=$(echo "$prompt" | awk '{print $1}' | sed 's|^/||')
args=$(echo "$prompt" | sed 's|^/[^ ]<i>||' | sed 's|^ </i>||')<p># Build the JSON body
body=$(jq -nc \
  --arg skill_name "$skill" \
  --arg invoked_by "$USER" \
  --arg args "$args" \
  --arg session_id "$session_id" \
  '{skill_name: $skill_name, invoked_by: $invoked_by, args: $args, session_id: $session_id}')<p># POST to the endpoint (fire-and-forget so we don't block the prompt)
curl -sf -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "x-api-token: ${SKILL_LOG_TOKEN}" \
  -d "$body" \
  >/dev/null 2>&1 &</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47445554">https://news.ycombinator.com/item?id=47445554</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 19 Mar 2026 20:30:39 +0000</pubDate><link>https://github.com/jbdamask/john-claude-skills/tree/main/skills/aws-quick-endpoint</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47445554</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47445554</guid></item><item><title><![CDATA[Show HN: Claude Skill for temporary cost tracking]]></title><description><![CDATA[
<p>Here's a Claude Skill that lets me turn cost tracking on an off for a particular unit of work.<p>I use it in interactive Claude Code sessions. For example, if I want to add a Claude API feature to an app, I'll often hack it together first in CC. This skill lets me start and stop tracking so I get get a sense for what the API costs will be.<p>For example:<p>> /cost-tracking
> [do stuff]
> stop tracking<p>Then I get a nice little table showing tokens and cost for the model that was used:<p>Haiku cost report (this session's work):<p><pre><code>  ┌───────────────────┬───────────┬─────────┐
  │     Category      │  Tokens   │  Cost   │
  ├───────────────────┼───────────┼─────────┤
  │ Base input        │ 182       │ $0.0002 │
  ├───────────────────┼───────────┼─────────┤
  │ Output            │ 3,276     │ $0.0164 │
  ├───────────────────┼───────────┼─────────┤
  │ Cache writes (1h) │ 25,619    │ $0.0512 │
  ├───────────────────┼───────────┼─────────┤
  │ Cache reads       │ 1,585,531 │ $0.1586 │
  ├───────────────────┼───────────┼─────────┤
  │ Grand Total       │           │ $0.2264 │
  └───────────────────┴───────────┴─────────┘</code></pre></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47299439">https://news.ycombinator.com/item?id=47299439</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Mar 2026 18:00:08 +0000</pubDate><link>https://github.com/jbdamask/john-claude-skills/tree/main/skills/cost-tracking</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47299439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47299439</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Added a waitlist to the site <a href="https://nowigetit.us" rel="nofollow">https://nowigetit.us</a></p>
]]></description><pubDate>Fri, 06 Mar 2026 12:35:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47274220</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47274220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47274220</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>I should probably just make a new post but if anyone is still watching, I've made a couple of changes and have more coming:<p>1) Modes. You can now choose between Native, Non-Technical, or Kid-Friendly mode. Here are results for the same paper
Native: <a href="https://test.nowigetit.us/pages/62ef3639-02f0-472b-b0a6-79f66853ca19.html" rel="nofollow">https://test.nowigetit.us/pages/62ef3639-02f0-472b-b0a6-79f6...</a>
Non-technical: <a href="https://test.nowigetit.us/pages/eba32173-269f-4b5c-9df1-c7826a90107c.html" rel="nofollow">https://test.nowigetit.us/pages/eba32173-269f-4b5c-9df1-c782...</a>
Kid-friendly: <a href="https://nowigetit.us/pages/3c413c94-d843-4e84-8805-22af16021434.html" rel="nofollow">https://nowigetit.us/pages/3c413c94-d843-4e84-8805-22af16021...</a><p>2) I'm working on user accounts with private galleries<p>3) Getting closer to opening this up with a cost-plus pricing model. Hopefully by next week but we'll see.</p>
]]></description><pubDate>Thu, 05 Mar 2026 18:51:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47265626</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47265626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47265626</guid></item><item><title><![CDATA[Show HN: Beads planner plugin for Claude Code]]></title><description><![CDATA[
<p>I swear by Yegge's Beads <a href="https://github.com/steveyegge/beads" rel="nofollow">https://github.com/steveyegge/beads</a>. Just love it. One of the things Steve talks about in his best practice guide is that the only things that belong in Beads are things that are being actively worked on; it's not a backlog.<p>I also really like Claude's planning mode, except for the fact that it's tightly coupled with execution.<p>A pattern I've found is to work in different loops: a planning loop and an execution loop.<p>Planning loop:
1. Use GitHub issues for backlog items. Whenever I get an idea, I just make an issue with minimal detail.
2. Pull issue into Claude Code 
3. Create branch
4. Use a home-grown planning skill that reads the Issue and operates pretty much the same way as Claude's but without the straight-to-execution annoyance
5. Once the plan is finalized, decompose it into Beads 
6. Check in branch and tag as "ready"<p>Execution loop:
Watch GitHub for "ready" issues. When one is found, checkout a worktree then start building. All the beads are self-contained in the issue so there's no need for more discussion with the LLM.<p>I turned the planning phase into a Claude plugin that I can invoke with a slash command, /beads-planner issue 44. The execution loop can be ralph or even just interactive CC sessions.<p>Everyone is coming up with their own way to build but figured I'd share because this works for me. YMMV</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47263696">https://news.ycombinator.com/item?id=47263696</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 05 Mar 2026 16:29:30 +0000</pubDate><link>https://github.com/jbdamask/john-claude-skills/tree/main/plugins/beads-planner</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47263696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47263696</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Some commenters have suggested turning this into a sort of graph where references are either brought into the page or new pages are made for references then linked. Is that what you're thinking about?</p>
]]></description><pubDate>Mon, 02 Mar 2026 04:14:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47213814</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47213814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47213814</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>That's a really cool idea. Can you elaborate?</p>
]]></description><pubDate>Mon, 02 Mar 2026 04:12:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47213796</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47213796</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47213796</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>A few people uploaded the Bitcoin paper and I noticed a bug in one where the page just kind of ended halfway through. This was due to my stringent security protections against prompt injection and outside links but I was blocking some legit CDNs, like Chart.js. That's been adjusted.</p>
]]></description><pubDate>Sun, 01 Mar 2026 14:11:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206843</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206843</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206843</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Thank you. Great to hear!</p>
]]></description><pubDate>Sun, 01 Mar 2026 14:08:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206818</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206818</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206818</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Totally agree. At the same time, I find that my brain learns best when I ingest the same information in different ways. This app doesn't replace papers; it complements them. Unless you're my mom - she's not going to read arXiv anytime soon.</p>
]]></description><pubDate>Sun, 01 Mar 2026 13:12:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206406</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206406</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>No. At least that's not what I intended.</p>
]]></description><pubDate>Sun, 01 Mar 2026 13:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206376</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206376</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>I find the same thing - that sometimes less is more when it comes to prompts. Especially when the inputs are somewhat unpredictable.</p>
]]></description><pubDate>Sun, 01 Mar 2026 13:08:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206373</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206373</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Yea, I was surprised by the output myself. It's all auto-generated.<p>I'm considering some ways to direct the LLM but we're in this funny period where models are getting better on subjective things like look-and-feel. And if I direct too much, I may wind up over-fitting for today's models.</p>
]]></description><pubDate>Sun, 01 Mar 2026 13:06:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206356</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206356</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Thanks for the question and links.<p>I haven't done any token/cost optimization so far because a) the app works well-enough for me, personally; b) I need more data to understand the areas to optimize.<p>Most likely, I'd start with quality optimizations that matter to users. Things to make people happier with the results.</p>
]]></description><pubDate>Sun, 01 Mar 2026 13:04:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206340</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206340</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>I haven't but am open to ideas. What kind of experience would be useful to you?</p>
]]></description><pubDate>Sun, 01 Mar 2026 12:59:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206310</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206310</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>If by "auto-generated" you mean, does the LLM generate the output from the input, then yes.</p>
]]></description><pubDate>Sun, 01 Mar 2026 12:58:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206298</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206298</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>I've upped today's (3/1) cap to 100 papers</p>
]]></description><pubDate>Sun, 01 Mar 2026 12:58:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47206297</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47206297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47206297</guid></item><item><title><![CDATA[New comment by jbdamask in "Show HN: Now I Get It – Translate scientific papers into interactive webpages"]]></title><description><![CDATA[
<p>Doh! I didn’t think of that. Interesting idea.</p>
]]></description><pubDate>Sun, 01 Mar 2026 00:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47202036</link><dc:creator>jbdamask</dc:creator><comments>https://news.ycombinator.com/item?id=47202036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47202036</guid></item></channel></rss>