<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: stevepike</title><link>https://news.ycombinator.com/user?id=stevepike</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 30 Oct 2026 10:15:47 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=stevepike" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by stevepike in "GitLab Security Incident: Attempted Exploitation of CVE-2026-97229"]]></title><description><![CDATA[
<p>Does anyone know for sure which unsupported versions of ruby are affected? Best I can tell 3 of the four affect old versions of ruby that are not getting a security patch for this. Update your ruby!<p>I do think CVE-2026-89078 - the double free one - may only affect ruby 3.3.11 and above. It relies on a bug introduced in ruby 3.4/4 via <a href="https://github.com/ruby/ruby/commit/8cd295ecf0" rel="nofollow">https://github.com/ruby/ruby/commit/8cd295ecf0</a> and backported (maybe accidentally?) in 3.3.11/12 in <a href="https://github.com/ruby/ruby/commit/e02c892ade" rel="nofollow">https://github.com/ruby/ruby/commit/e02c892ade</a>. So that one is getting patched on all rubies it would have affected.</p>
]]></description><pubDate>Thu, 29 Oct 2026 01:55:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=50283619</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=50283619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50283619</guid></item><item><title><![CDATA[New comment by stevepike in "How Amazon pushes up prices all across the Internet"]]></title><description><![CDATA[
<p>I returned it, got another used one, gave up and went to home depot.</p>
]]></description><pubDate>Wed, 14 Oct 2026 17:05:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=50090996</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=50090996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50090996</guid></item><item><title><![CDATA[New comment by stevepike in "How Amazon pushes up prices all across the Internet"]]></title><description><![CDATA[
<p>This happens with items where it's clear no human even glanced at it. I received a sump pump that was wet and dirty!</p>
]]></description><pubDate>Wed, 14 Oct 2026 15:37:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=50089357</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=50089357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50089357</guid></item><item><title><![CDATA[New comment by stevepike in "Returning to Rails in 2026"]]></title><description><![CDATA[
<p>The real issue with Rails apps is keeping up with the framework and language versions. There are really two categories of dependencies.<p>One-off libraries that don't have a runtime dependency on Rails are typically very low-maintenance. You can mostly leave them alone (even a security vulnerability is unlikely to be exploitable for how you're using one of these, as often user input isn't even getting through to them). For instance a gem you install to communicate with the stripe API is not typically going to break when you upgrade Rails. Or adding httparty to make some API requests to other services.<p>Then there are libraries that are really framework extensions, like devise for authentication or rspec for testing. These are tightly coupled to Rails, sometimes to its private internals, and you get all sorts of nasty compatibility issues when the framework changes. You have to upgrade Rails itself because you really do need to care about security support at that level, even for a relatively small company, so you can end up in a situation where leaving these other dependencies to fester makes upgrading Rails very hard.<p>(I run a startup that's a software-enabled service to upgrade old Rails apps).</p>
]]></description><pubDate>Thu, 12 Mar 2026 13:32:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47350301</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=47350301</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47350301</guid></item><item><title><![CDATA[New comment by stevepike in "Caxlsx: Ruby gem for xlsx generation with charts, images, schema validation"]]></title><description><![CDATA[
<p>It looks like this is a community continuation of the axlsx gem which was maintained back in the day by Randy Morgan (randym) over at <a href="https://github.com/randym/axlsx" rel="nofollow">https://github.com/randym/axlsx</a>. One of my earliest open source contributions was adding support so that you could output spreadsheets with "conditional" formatting (color something red if it is below some value, for instance). I remember Randy being extremely supportive of new contributors and it made me want to be a part of the ruby community.<p>Thanks for continuing the work!</p>
]]></description><pubDate>Tue, 10 Mar 2026 13:21:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47322915</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=47322915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47322915</guid></item><item><title><![CDATA[New comment by stevepike in "Claude Sonnet 4.6"]]></title><description><![CDATA[
<p>Yeah, earlier in the GPT days I felt like this was a good example of LLMs being "a blurry jpeg of the web", since you could give them something that was very close to an existing puzzle that exists commonly on the web, and they'd regurgitate an answer from that training set. It was neat to me to see the question get solved consistently by the reasoning models (though often by churning a bunch of tokens trying and verifying to count 888 + 88 + 8 + 8 + 8 as nine digits).<p>I wonder if it's a temperature thing or if things are being throttled up/down on time of day. I was signed in to a paid claude account when I ran the test.</p>
]]></description><pubDate>Wed, 18 Feb 2026 00:19:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47055383</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=47055383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47055383</guid></item><item><title><![CDATA[New comment by stevepike in "Claude Sonnet 4.6"]]></title><description><![CDATA[
<p>I'm a bit surprised it gets this question wrong (ChatGPT gets it right, even on instant). All the pre-reasoning models failed this question, but it's seemed solved since o1, and Sonnet 4.5 got it right.<p><a href="https://claude.ai/share/876e160a-7483-4788-8112-0bb4490192af" rel="nofollow">https://claude.ai/share/876e160a-7483-4788-8112-0bb4490192af</a><p>This was sonnet 4.6 with extended thinking.</p>
]]></description><pubDate>Tue, 17 Feb 2026 18:43:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47051286</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=47051286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47051286</guid></item><item><title><![CDATA[New comment by stevepike in "NanoClaw solves one of OpenClaw's biggest security issues"]]></title><description><![CDATA[
<p>Reminds me of <a href="https://xkcd.com/1200/" rel="nofollow">https://xkcd.com/1200/</a></p>
]]></description><pubDate>Wed, 11 Feb 2026 16:48:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=46977315</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=46977315</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46977315</guid></item><item><title><![CDATA[New comment by stevepike in "Ask HN: How do you prioritize dependency updates?"]]></title><description><![CDATA[
<p>PHP would definitely be in scope, either that or Java are likely to be next for us. If you are familiar with PHPs ecosystem I'd be interested in your take on what's most important / problematic there.</p>
]]></description><pubDate>Fri, 21 Nov 2025 00:17:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45999748</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=45999748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45999748</guid></item><item><title><![CDATA[New comment by stevepike in "Ask HN: How do you prioritize dependency updates?"]]></title><description><![CDATA[
<p>Thanks! We support Python, JS, and Ruby right now (started with dynamic languages).<p>I'm not sure what you mean by prioritization on the issues, but generally we are trying to help you figure out what to upgrade next, and to actually do it too.</p>
]]></description><pubDate>Thu, 20 Nov 2025 22:10:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45998535</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=45998535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45998535</guid></item><item><title><![CDATA[New comment by stevepike in "Ask HN: How do you prioritize dependency updates?"]]></title><description><![CDATA[
<p>This is hard for lots of companies. Some ignore the problem entirely until there's a fire drill (which can be a huge risk if you end up on an old major version that won't get patched). Some keep everything up to date, and then taking a new security patch is trivial. It's always risk/reward tradeoff between the risk of breaking production with an upgrade and the value an org sees from staying up to date. We work on this problem at Infield (<a href="https://www.infield.ai/post/introducing-infield">https://www.infield.ai/post/introducing-infield</a>) where we tackle both sides of the project management: "Which dependencies should I prioritize upgrading" and "How difficult and likely to break production is this upgrade".<p>To your specific points<p>> 1. How do you decide what's actually urgent? CVSS? EPSS? Manual assessment?<p>The risk factors we track are open CVEs, abandonment (is this package supported by the maintainer?), and staleness (how deep in the hole am I?).<p>We also look at the libyear metric as an overall indication of dependency health.<p>> 2. Do you treat "outdated but not vulnerable" dependencies differently from "has CVEs"?<p>We group upgrades into three general swimlanes:<p><pre><code>  - "trivial" upgrades (minor/patch versions of packages that respect semantic versioning, dev/test only packages). We batch these together for our customers regardless of priority.

  - "could break". These deserve standalone PRs and an engineer triaging when these become worth tackling, if ever.

  - "major frameworks". Think something like Rails. These are critical to keep on supported versions of because the rest of the ecosystem moves with them, and vulnerabilities in them tend to have a large blast radius. Upgrading these can be hard. You'll definitely need to upgrade someday to stay supported, and getting there has follow-on benefits on all your other dependencies, so these are high priority.
</code></pre>
> 3. For those using Dependabot/Renovate/Snyk - what's your workflow? Do you review every alert or have you found a good filtering system?<p>We offer a Github app that integrates with alerts from Dependabot. While security teams are happy with just a scanner, the engineering teams that actually do this upgrade work need to mash that up with all the other data we're talking about here.</p>
]]></description><pubDate>Thu, 20 Nov 2025 21:59:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45998406</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=45998406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45998406</guid></item><item><title><![CDATA[New comment by stevepike in "Fossabot: AI code review for Dependabot/Renovate on breaking changes and impacts"]]></title><description><![CDATA[
<p>This is cool, it looks to me like you're integrating static analysis on the user's codebase and the underlying dependency. Very curious to see where it goes.<p>We've found dependency upgrades to be deceptively complex to evaluate safety for. Often you need context that's difficult or impossible to determine statically in a dynamically typed language. An example I use for Ruby is the kwarg migration from ruby 2.7->3 (<a href="https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/" rel="nofollow">https://www.ruby-lang.org/en/news/2019/12/12/separation-of-p...</a>). It's trivial to profile for impacted sites at runtime but basically impossible to do it statically without adopting something like sorbet. Do you have any benchmarks on how reliable your evaluations are on plain JS vs. typescript codebases?<p>We ended up embracing runtime profiling for deprecation warnings / breaking changes as part of upgrading dependencies for our customers and have found that context to unlock more reliable code transformations. But you're stuck building an SDK for every language you want to support, and it's more friction than installing a github app.</p>
]]></description><pubDate>Wed, 01 Oct 2025 18:59:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=45441787</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=45441787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45441787</guid></item><item><title><![CDATA[New comment by stevepike in "Pnpm has a new setting to stave off supply chain attacks"]]></title><description><![CDATA[
<p>This is very true. It can be a real fire drill if it turns out you need to go up a major version in some other dependency in order to get a security fix. It can get even worse in JS if you're on some abandoned package that's pinned to an old version of some transient dependency which turns out to be vulnerable. Then you're scrambling to migrate to some alternate package with no clear upgrade path.<p>On the flipside sometimes you get lucky and being on an old version of a package means you don't have the vulnerability in the first place.<p>libyear is a helpful metric for tracking how much of this debt you might have.</p>
]]></description><pubDate>Thu, 18 Sep 2025 20:29:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45294627</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=45294627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45294627</guid></item><item><title><![CDATA[New comment by stevepike in "Vision Language Models Are Biased"]]></title><description><![CDATA[
<p>This seems to show the power of the reasoning models over interacting with a prompted chat-tuned LLM directly. If I navigate backwards on your link Sonnet 4 gets it right.<p>I've used a similar prompt - "How can you make 1000 with exactly nine 8s using only addition?"<p>Here's GPT 4.5 getting it wrong: <a href="https://chatgpt.com/share/683f3aca-8fbc-8000-91e4-717f5d81bce6" rel="nofollow">https://chatgpt.com/share/683f3aca-8fbc-8000-91e4-717f5d81bc...</a><p>It tricks it because it's a slight variation of an existing puzzle (making 1000 with 8 8s and addition only).<p>The reasoning models seem to reliably figure it out, though. Some of them even come up with a proof of why it's impossible to do with 9 8s. Here's o4 getting it right: <a href="https://chatgpt.com/share/683f3bc2-70b8-8000-9675-4d96e72b5878" rel="nofollow">https://chatgpt.com/share/683f3bc2-70b8-8000-9675-4d96e72b58...</a></p>
]]></description><pubDate>Tue, 03 Jun 2025 18:16:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44172944</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=44172944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44172944</guid></item><item><title><![CDATA[Show HN: Track Deprecation Warnings in Prod]]></title><description><![CDATA[
<p>We built a (free) tool that tracks deprecation warnings at runtime (ruby only for now). It's a gem you install that works like Sentry or Rollbar, but aggregates deprecation warnings instead of exceptions. Docs are at <a href="https://docs.infield.ai/docs/monitor-deprecation-warnings">https://docs.infield.ai/docs/monitor-deprecation-warnings</a><p>We built this because we rely on deprecation warnings at Infield as one piece of safely upgrading large Rails apps. Often large apps don't have perfect test coverage of all their gem usage, or use different codepaths in staging/prod than you on CI. There are good existing open source tools like <a href="https://github.com/Shopify/deprecation_toolkit">https://github.com/Shopify/deprecation_toolkit</a> for tracking deprecations in your CI suite but they don't work well in prod.<p>Our tool works as an open source gem that you install (<a href="https://github.com/infieldai/infield-ruby">https://github.com/infieldai/infield-ruby</a>) which spins up a background thread that collects deprecation warnings and reports them to our API. We aggregate them there and track them over time so you can verify you've addressed them before you push an upgrade. It works for any deprecation that goes through ActiveSupport::Deprecation, which covers Rails and a bunch of Ruby gems but not ruby itself (that'll come!).</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42465705">https://news.ycombinator.com/item?id=42465705</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 19 Dec 2024 21:09:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=42465705</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=42465705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42465705</guid></item><item><title><![CDATA[New comment by stevepike in "Ease of maintenance is a feature"]]></title><description><![CDATA[
<p>I think the kind of application here matters a lot, specifically whether you're trying to make a change to a web app or if you're hacking on library code.<p>In ruby, for example, I can pretty trivially clone any open source gem and run the specs in < 5 minutes. Patching something and opening a PR in under an hour is definitely standard.<p>On the other hand, getting a development environment running for a company's proprietary web app is often a hassle. Mostly though this isn't because of the language or dependencies, it's because of:<p><pre><code>  - Getting all the dependent services up and running (postgres version X, redis Y, whatever else) with appropriate seed data. 
  - Getting access to development secrets
</code></pre>
My company (infield.ai) upgrades legacy apps, so we deal with setting up a lot of these. We run them in individual siloed remote developer environments using devcontainers. It works OK once we've configured the service containers.</p>
]]></description><pubDate>Fri, 08 Nov 2024 16:39:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=42088189</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=42088189</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42088189</guid></item><item><title><![CDATA[New comment by stevepike in "Amazon reveals first color Kindle, new Kindle Scribe, and more"]]></title><description><![CDATA[
<p>It doesn't do this for me. I've got side-loaded and Amazon store books on the same device, no problem.</p>
]]></description><pubDate>Thu, 17 Oct 2024 00:13:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41865197</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=41865197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41865197</guid></item><item><title><![CDATA[New comment by stevepike in "Libyear"]]></title><description><![CDATA[
<p>They're tracking different related things. I run a startup in this space and we track: aggregate libyear of your direct dependencies; total # of direct dependencies with libyear > 2; # of direct dependencies at least one major version behind; dependencies that have been abandoned by the maintainer.<p>I think the top-line aggregate libyear number is helpful to monitor over time to get a general sense of the slope of your technical debt. If the number is trending upwards then your situation is getting worse and you're increasing the chance you find yourself in an emergency (i.e., a CVE comes out and you're on an unsupported release line and need to go up major versions to take the patch).<p>Tracking total # of major versions behind gets at the same thing but it's less informative. If you're on v1 of some package that has a v2 but is actively releasing patches for the v1 line that should be a lower priority upgrade than some other package where your v1 line hasn't had a release in 5 years.</p>
]]></description><pubDate>Thu, 09 May 2024 13:12:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=40307877</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=40307877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40307877</guid></item><item><title><![CDATA[New comment by stevepike in "Magika: AI powered fast and efficient file type identification"]]></title><description><![CDATA[
<p>If you're curious, here's how I solved it for ruby back in the day. Still used magic bytes, but added an overlay on top of the freedesktop.org DB: <a href="https://github.com/mimemagicrb/mimemagic/pull/20">https://github.com/mimemagicrb/mimemagic/pull/20</a></p>
]]></description><pubDate>Fri, 16 Feb 2024 13:50:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=39396963</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=39396963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39396963</guid></item><item><title><![CDATA[New comment by stevepike in "Magika: AI powered fast and efficient file type identification"]]></title><description><![CDATA[
<p>Yeah I saw that, but that could cover a pretty wide range and it's not clear to me whether that relies on preloading a model.</p>
]]></description><pubDate>Fri, 16 Feb 2024 02:26:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=39392370</link><dc:creator>stevepike</dc:creator><comments>https://news.ycombinator.com/item?id=39392370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39392370</guid></item></channel></rss>