<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: seddonm1</title><link>https://news.ycombinator.com/user?id=seddonm1</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 14:39:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=seddonm1" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by seddonm1 in "How much do amd64 microarchitecture levels help in Go?"]]></title><description><![CDATA[
<p>Based on the now-deprecated Clear Linux it does seem that these optimizations add up [0] and so maybe we should be considering them more broadly?<p>[0] <a href="https://www.phoronix.com/review/clear-linux-48p-ubuntu/6" rel="nofollow">https://www.phoronix.com/review/clear-linux-48p-ubuntu/6</a></p>
]]></description><pubDate>Tue, 09 Jun 2026 05:56:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48457072</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=48457072</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48457072</guid></item><item><title><![CDATA[New comment by seddonm1 in "How much do amd64 microarchitecture levels help in Go?"]]></title><description><![CDATA[
<p>I would be interested to know if there is a method similar to this one in Rust [0] that allows a single binary to support multiple optimization levels depending on the executing CPU? It feels wasteful to not enable these optimizations but I don't really want to force a user to choose between a complex feature matrix.<p>[0] <a href="https://github.com/ronnychevalier/cargo-multivers" rel="nofollow">https://github.com/ronnychevalier/cargo-multivers</a></p>
]]></description><pubDate>Tue, 09 Jun 2026 04:06:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456251</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=48456251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456251</guid></item><item><title><![CDATA[New comment by seddonm1 in "Relicensing with AI-Assisted Rewrite"]]></title><description><![CDATA[
<p>I am getting closer and closer to a full verified rewrite in Rust. I have also moved to a much easier sqlite relational structure for the backend.<p>I actually sidestepped the annoying btrieve problem by exporting the data using a 
go binary [0] and I write it to a sqlite instance with raw byte arrays (blobs). btreive is weird because it has a dll but also a a service to interact with the files.<p>P.s. I have spent a lot of hours on this mainly to learn actual LLM capabilities that have improved a huge amount in the last year.<p>[0] <a href="https://github.com/barchart/go-btrieve" rel="nofollow">https://github.com/barchart/go-btrieve</a></p>
]]></description><pubDate>Fri, 06 Mar 2026 00:44:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47269294</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47269294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47269294</guid></item><item><title><![CDATA[New comment by seddonm1 in "Relicensing with AI-Assisted Rewrite"]]></title><description><![CDATA[
<p>It’s a real problem. I threw it at an old MUD game just to see how hard it is [0] then used differential testing and LLMs to rewrite it [1]. Just seems to be time and money.<p>[0] <a href="https://reorchestrate.com/posts/your-binary-is-no-longer-safe-decompilation/" rel="nofollow">https://reorchestrate.com/posts/your-binary-is-no-longer-saf...</a><p>[1] <a href="https://reorchestrate.com/posts/your-binary-is-no-longer-safe-conversion/" rel="nofollow">https://reorchestrate.com/posts/your-binary-is-no-longer-saf...</a></p>
]]></description><pubDate>Thu, 05 Mar 2026 06:57:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47258435</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47258435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47258435</guid></item><item><title><![CDATA[New comment by seddonm1 in "How we rebuilt Next.js with AI in one week"]]></title><description><![CDATA[
<p>No, I would need to find a binary to test on. I suspect it would produce horrible code at the decompiler layer but ultimately I would expect that function signatures are still relatively clean?<p>Its scary - once you get the differential testing harness set up it seems to be just a matter of time/tokens for it to stubbornly work through it.</p>
]]></description><pubDate>Wed, 25 Feb 2026 04:55:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47147501</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47147501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47147501</guid></item><item><title><![CDATA[New comment by seddonm1 in "How we rebuilt Next.js with AI in one week"]]></title><description><![CDATA[
<p>I have tried to post this here but it has not got traction.<p>I have a demonstrated process here on my blog (all hand written without AI).<p>This bit about how to brute force decompilation:
<a href="https://reorchestrate.com/posts/your-binary-is-no-longer-safe-decompilation/" rel="nofollow">https://reorchestrate.com/posts/your-binary-is-no-longer-saf...</a><p>And this about how to do the conversion and address the LLM hallucination problem: 
<a href="https://reorchestrate.com/posts/your-binary-is-no-longer-safe-conversion/" rel="nofollow">https://reorchestrate.com/posts/your-binary-is-no-longer-saf...</a><p>Yes, it is absolutely possible.</p>
]]></description><pubDate>Wed, 25 Feb 2026 00:09:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47145437</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47145437</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47145437</guid></item><item><title><![CDATA[Show HN: Using LLMs and differential testing to convert code]]></title><description><![CDATA[
<p>This is the second part of a post aligned with a talk I gave recently at the Sydney Rust meetup.<p>I have found significant success in this process converting decompiled code and also converting source code from python to go. Give an LLM a target and they can be extremely stubborn (in a good way).</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47130295">https://news.ycombinator.com/item?id=47130295</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 23 Feb 2026 23:03:18 +0000</pubDate><link>https://reorchestrate.com/posts/your-binary-is-no-longer-safe-conversion/</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47130295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47130295</guid></item><item><title><![CDATA[New comment by seddonm1 in "The long tail of LLM-assisted decompilation"]]></title><description><![CDATA[
<p>I am applying differential/property based testing to all the side effects of functions (mutations) and return values. The rust code coverage is also used to steer the LLM as it finds discrepancies in side effects.<p>It is written up in my link - please bear in mind it is really hard to find the right level to communicate this level of detail at - so I'm happy to answer questions.</p>
]]></description><pubDate>Tue, 17 Feb 2026 05:36:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47044070</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47044070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47044070</guid></item><item><title><![CDATA[New comment by seddonm1 in "The long tail of LLM-assisted decompilation"]]></title><description><![CDATA[
<p>My test harness loads up the original DLL then executes that in parallel against the converted code (differential testing). That closes the feedback loop the LLM needs to be able to find and fix discrepancies.<p>I'm also doing this on an old Win32 DLL so the task is probably much easier than a lot of code bases.</p>
]]></description><pubDate>Tue, 17 Feb 2026 05:11:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47043911</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47043911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47043911</guid></item><item><title><![CDATA[New comment by seddonm1 in "The long tail of LLM-assisted decompilation"]]></title><description><![CDATA[
<p>I delivered a talk at Rust Sydney about this exact topic last week:<p><a href="https://reorchestrate.com/posts/your-binary-is-no-longer-safe/" rel="nofollow">https://reorchestrate.com/posts/your-binary-is-no-longer-saf...</a><p>I am able to translate multi-thousand line c functions - and reproduce bug-for-bug implementation</p>
]]></description><pubDate>Tue, 17 Feb 2026 05:02:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47043875</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47043875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47043875</guid></item><item><title><![CDATA[Show HN: Your binary is no longer safe]]></title><description><![CDATA[
<p>This post is about the brute-force reverse engineering of binary (compiled) programs using Large Language Models (LLMs) to automate this two-part problem: decompilation and conversion to a modern programming language.<p>The most interesting part for most will likely be the demonstration on how to use differential-property testing to automate the LLM feedback loop for the rewrite (translation) phase (in this case to rewrite to Rust).<p>This that I believe would solve the 'rewrite issues' discussed recently here: <a href="https://news.ycombinator.com/item?id=46954696">https://news.ycombinator.com/item?id=46954696</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47040190">https://news.ycombinator.com/item?id=47040190</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 16 Feb 2026 20:53:09 +0000</pubDate><link>https://reorchestrate.com/posts/your-binary-is-no-longer-safe/</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47040190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47040190</guid></item><item><title><![CDATA[New comment by seddonm1 in "Show HN: I spent 3 years reverse-engineering a 40 yo stock market sim from 1986"]]></title><description><![CDATA[
<p>Hi Ben. I published an article about this problem this week (and did a talk at Rust Sydney).<p>What you need is differential, property testing. I’m sure it would work for you (you can skip the first half as you already have the source):<p><a href="https://reorchestrate.com/posts/bringing-a-warhammer-to-a-knife-fight/" rel="nofollow">https://reorchestrate.com/posts/bringing-a-warhammer-to-a-kn...</a></p>
]]></description><pubDate>Sat, 14 Feb 2026 12:26:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47014046</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47014046</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47014046</guid></item><item><title><![CDATA[New comment by seddonm1 in "MinIO repository is no longer maintained"]]></title><description><![CDATA[
<p>What about s3 stored in SQLite? <a href="https://github.com/seddonm1/s3ite" rel="nofollow">https://github.com/seddonm1/s3ite</a><p>This was written to store many thousands of images for machine learning</p>
]]></description><pubDate>Fri, 13 Feb 2026 10:03:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47000981</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=47000981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47000981</guid></item><item><title><![CDATA[New comment by seddonm1 in "Bringing a Warhammer to a Knife Fight"]]></title><description><![CDATA[
<p>A process for using LLMs to do brute-force decompilation of binaries and conversion to another programming language - including testing to prove equality.<p>This process is targeting an old computer game but there is nothing preventing this being run on any binary.</p>
]]></description><pubDate>Wed, 11 Feb 2026 20:44:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46980658</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=46980658</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46980658</guid></item><item><title><![CDATA[Bringing a Warhammer to a Knife Fight]]></title><description><![CDATA[
<p>Article URL: <a href="https://reorchestrate.com/posts/bringing-a-warhammer-to-a-knife-fight/">https://reorchestrate.com/posts/bringing-a-warhammer-to-a-knife-fight/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46980657">https://news.ycombinator.com/item?id=46980657</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 11 Feb 2026 20:44:50 +0000</pubDate><link>https://reorchestrate.com/posts/bringing-a-warhammer-to-a-knife-fight/</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=46980657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46980657</guid></item><item><title><![CDATA[New comment by seddonm1 in "Show HN: SQLite Transaction Benchmarking Tool"]]></title><description><![CDATA[
<p>SQLX has an offline mode where it saves the metadata of the SQL database structure but then you run into risk of that being out of sync with the database?<p>Yeah I just drop this one file [0] into my Tokio projects and I have a SQLite with single writer/multi reader pool done in a few seconds.<p>[0]: <a href="https://github.com/seddonm1/s3ite/blob/0.5.0/src/database.rs">https://github.com/seddonm1/s3ite/blob/0.5.0/src/database.rs</a></p>
]]></description><pubDate>Thu, 18 Jul 2024 22:09:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=41000219</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=41000219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41000219</guid></item><item><title><![CDATA[New comment by seddonm1 in "Show HN: SQLite Transaction Benchmarking Tool"]]></title><description><![CDATA[
<p>Whilst I love the idea of SQLX compile-time checked queries it is not always practical to need a database connection to compile the code in my experience. If it works for you then thats great but we had a few tricky edge cases when dealing with migrations etc.<p>Also, and more fundamentally, your application state is the most valuable thing you have. Do whatever you feel makes you most comfortable to make sure that state (and state transitions) is as well understood as possible. rusqlite is that for me.</p>
]]></description><pubDate>Thu, 18 Jul 2024 10:26:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=40994216</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=40994216</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40994216</guid></item><item><title><![CDATA[New comment by seddonm1 in "Show HN: SQLite Transaction Benchmarking Tool"]]></title><description><![CDATA[
<p>I went through the same mental process as you and also use num_cpus [0] but this is based only on intuition that is likely wrong. More benchmarking is needed as my benchmarks show that more parallelism only works to a point.<p>You can see how the transactions work in this example[1]. I have a connection `.write()` or `.read()` which decides which queue to use. I am in the process [2] of trying to do a PR against rusqlite to set the default transaction behavior as a result of this benchmarking so hopefully `write()` will default to IMMEDIATE and `read()` remains DEFERRED.<p>[0] <a href="https://docs.rs/num_cpus/latest/num_cpus/" rel="nofollow">https://docs.rs/num_cpus/latest/num_cpus/</a>
[1] <a href="https://github.com/seddonm1/s3ite/blob/0.5.0/src/s3.rs#L147">https://github.com/seddonm1/s3ite/blob/0.5.0/src/s3.rs#L147</a>
[2] <a href="https://github.com/rusqlite/rusqlite/pull/1532">https://github.com/rusqlite/rusqlite/pull/1532</a></p>
]]></description><pubDate>Thu, 18 Jul 2024 10:22:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=40994197</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=40994197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40994197</guid></item><item><title><![CDATA[New comment by seddonm1 in "Show HN: SQLite Transaction Benchmarking Tool"]]></title><description><![CDATA[
<p>Thanks.<p>All good and valid questions.<p>1. I work mostly in Rust so I'll answer there in terms of async. This library [0] uses queues to manage workload. I run a modified version [1] which creates 1 writer and n reader connections to a WAL backed SQLite and dispatch async transactions against them. The n readers will pull work from a shared common queue.<p>2. Yes there is not much you can do about file IO but SQLite is still a full database engine with caching. You could use this benchmarking tool to help understand where your limits would be (you can do a run against a ramdisk then against your real storage).<p>3. As per #1, I keep connections open and distribute transactions across them myself. Checkpointing will only be a problem under considerable sustained write load but you should be able to simulate your load and observe the behavior. The WAL2 branch of SQLite is intended to prevent sustained load problems.<p>[0]: <a href="https://github.com/programatik29/tokio-rusqlite">https://github.com/programatik29/tokio-rusqlite</a>
[1]: <a href="https://github.com/seddonm1/s3ite/blob/0.5.0/src/database.rs">https://github.com/seddonm1/s3ite/blob/0.5.0/src/database.rs</a></p>
]]></description><pubDate>Thu, 18 Jul 2024 08:18:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=40993559</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=40993559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40993559</guid></item><item><title><![CDATA[Show HN: SQLite Transaction Benchmarking Tool]]></title><description><![CDATA[
<p>I wanted to make my own evaluation of what kind of performance I could expect from SQLite on a server and investigate the experimental `BEGIN CONCURRENT` branch vs the inbuilt `DEFERRED` and `IMMEDIATE` behaviors.<p>Explanatory blog post: <a href="https://reorchestrate.com/posts/sqlite-transactions/" rel="nofollow">https://reorchestrate.com/posts/sqlite-transactions/</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40990641">https://news.ycombinator.com/item?id=40990641</a></p>
<p>Points: 128</p>
<p># Comments: 21</p>
]]></description><pubDate>Wed, 17 Jul 2024 21:44:42 +0000</pubDate><link>https://github.com/seddonm1/sqlite-bench</link><dc:creator>seddonm1</dc:creator><comments>https://news.ycombinator.com/item?id=40990641</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40990641</guid></item></channel></rss>