<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: rhdunn</title><link>https://news.ycombinator.com/user?id=rhdunn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 18 Aug 2026 10:13:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rhdunn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>That's fine if the projects are in a single place (e.g. GitHub) as you only need to create one account.<p>If every project requires its own username/password just to report a bug, I may do that for the first 2 or 3, but not for every project. I'm also unlikely to create accounts on hosting platforms I don't intend on using outside of reporting the single bug.</p>
]]></description><pubDate>Mon, 17 Aug 2026 20:49:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49337442</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49337442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49337442</guid></item><item><title><![CDATA[New comment by rhdunn in "Anthropic's War on open source AI"]]></title><description><![CDATA[
<p>Look at even older writing and you'll see em-dashes there too: Edgar Allan Poe, Lucy Maud Montgomery, the Brontës, among others.<p>> “No, reprobate! you are a castaway—be off, or I’ll hurt you seriously! I’ll have you all modelled in wax and clay! and the first who passes the limits I fix shall—I’ll not say what he shall be done to—but, you’ll see! Go, I’m looking at you!”<p>-- Wuthering Heights (1847), Chapter 2, Emily Brontë.<p>I wonder what the frequency of AI common words like delve and other words/phrases are in Project Gutenberg, Wikipedia, and other collections.</p>
]]></description><pubDate>Mon, 17 Aug 2026 18:12:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49335250</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49335250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49335250</guid></item><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>That's what gitolite does with some helper scripts for creating/setting up the repositories, adding metadata to the configs, etc. That way your `git` user can be set to reject ssh login attempts. The projects are managed by pushing a config to a gitolite admin repository.</p>
]]></description><pubDate>Mon, 17 Aug 2026 17:57:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49335039</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49335039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49335039</guid></item><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>Indeed. I've edited my post to fix the typo.</p>
]]></description><pubDate>Mon, 17 Aug 2026 17:25:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49334559</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49334559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49334559</guid></item><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>See also the codeberg blog post (<a href="https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html" rel="nofollow">https://blog.codeberg.org/protecting-our-floss-commons-from-...</a>) which has more informal guidelines. That includes projects that are:<p>1. created by LLM agents -- any vibe-coded projects;<p>2. mainly written and maintained by LLMs -- this would cover the recent changes to the rsync project;<p>3. tied to the LLM ecosystem -- this covers pytorch, llama.cpp, cursor, SillyTavern, AI skills repositories, and a whole host of other projects.</p>
]]></description><pubDate>Mon, 17 Aug 2026 17:20:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=49334482</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49334482</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49334482</guid></item><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>Two of the big issues I had were around the user/repository forced structure. That works to some extent when you have multiple users with a small number of repositories. But for my personal projects I wanted more control over the structure and grouping.<p>I worked around it to some extent by having an organisation per category, but that doesn't work at scale. For example, you can't group Text-to-Speech projects around the different libraries (coqui-ai, Qwen3, parler, etc.), or language tooling installation scripts by programming language. -- Those have a group/subgroup/repository style structure.<p>The other related feature is having organisation or group-level issues and corresponding tracking features.<p>Gitolite doesn't impose/enforce a structure on the user. GitWeb/CGit have a free-form category (e.g. "lang/python") that the project can be assigned to. That works, but I'd like it to support multiple tags/labels for that.</p>
]]></description><pubDate>Mon, 17 Aug 2026 17:04:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49334250</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49334250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49334250</guid></item><item><title><![CDATA[New comment by rhdunn in "Ask HN: Alternatives to GitHub"]]></title><description><![CDATA[
<p>It depends on what you are after?<p>1. Do you want something that works and feels like GitHub? -- Forgejo and Gitea are good for this.<p>2. Do you want a place to host git repositories with minimal hassle? -- GitLab, CodeBerg, and others are available.<p>3. Do you have your own hosting infrastructure? You could use gitolite and CGit/GitWeb on that hosting platform or local hardware.<p>4. Do you just want to host repositories? -- Gitolite can be used to help with SSH/auth/repository creation, and CGit or GitWeb for the frontend.<p>5. Do you need something like GitHub Actions? -- GitLab, Forgejo, and Gitea offer CI, or use external CI infrastructure.<p>6. Do you need issue tracking and management? -- GitLab, Forgejo, and Gitea provide these. There are alternatives from Jira to Kanban (including Trello) to Markdown (Obsidian and others) and more.</p>
]]></description><pubDate>Mon, 17 Aug 2026 16:48:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=49333996</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49333996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49333996</guid></item><item><title><![CDATA[New comment by rhdunn in "Why does Opus 5 feel worse to work with?"]]></title><description><![CDATA[
<p>The watermarking is independent of the model. The model itself has the probability weights to determine the next token. The watermark is similar to things like temperature and top_p/top_k in that the watermark adjusts the probabilities in a deterministic way that changes over time to hide tells from word choices.</p>
]]></description><pubDate>Fri, 14 Aug 2026 21:12:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49304661</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49304661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49304661</guid></item><item><title><![CDATA[New comment by rhdunn in "Qwen 3.8 27B"]]></title><description><![CDATA[
<p>The only useful benchmarks are those you've created for your specific workflow. Only then can you assess whether a given model is better or worse for what you are using it for.<p>There are tools like promptfoo designed for this.</p>
]]></description><pubDate>Fri, 14 Aug 2026 16:52:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49301347</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49301347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49301347</guid></item><item><title><![CDATA[New comment by rhdunn in "AI is removing the middle class of software engineering?"]]></title><description><![CDATA[
<p>What do you test? How much time/effort do you spend testing each of those things? How do you know those will be performance issues?<p>There's only so much you can do -- making reasonable assumptions, choosing suitable data structures, database indices, testing various workloads, etc. -- in a limited test environment.<p>You may spend a week optimizing a feature that only 10 people use or that never gets to the point where it becomes an issue. Or you may have something that can't easily be tested at scale, such as various counts or other dynamic data that are determined by complex queries that you may (likely) find you need to cache but don't necessarily know which values will become issues until you start using the system.</p>
]]></description><pubDate>Thu, 13 Aug 2026 06:33:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49282434</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49282434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49282434</guid></item><item><title><![CDATA[New comment by rhdunn in "AI is removing the middle class of software engineering?"]]></title><description><![CDATA[
<p>It can sometimes be difficult to predict what will cause performance regressions when developing an application or web server with test data. So you do your best with what you know at the time of release, and then deal with performance issues when you know what is causing regressions (e.g. saved searches) and can then make measurements and profiling to see what exactly is causing the issue.<p>Likewise, improving performance pushes the limit at which performance regressions happen allowing more data (documents, triangles/pixels, etc.) to be processed. This allows things like more complex game graphics. That in turn makes it harder to improve performance for the next round (more advanced triangle/face culling and pre-processing).<p>There can also be trade-offs with things like data layout, memory usage (caching and memoization), or implementation. For example, when processing XML/HTML data you could use DOM (more memory and upfront parsing, but easier to perform complex queries across the data), SAX (less memory, but more complex to process due to tracking state), or reader API (similar to SAX but a different processing model).<p>There can be challenges with various features, such as type checking with higher-order generic types. Others add various levels of overhead, such as parsing a program, constructing an AST (Abstract Syntax Tree), generating an IR (Intermediate Representation), the optimization passes and final code generation.<p>JavaScript evaluation for example is complex. Before Chrome the approach was to use a slow interpreter. IIRC, Chrome was the first browser to introduce JIT (Just-in-Time) compilation, leading to faster JavaScript and eventually more complex applications running in that language. Modern browser JavaScript pipelines are complex in order to achieve and maintain performance:<p>1. start interpreting the code on the AST so it is run immediately (or only rely on (2));<p>2. generate a machine code equivalent of that interpreted code (for faster baseline performance);<p>3. run more aggressive optimizations on known types based on profiling/analysis for even faster performance, including special handling of things like asm.js.<p>[1] <a href="https://v8.dev/blog/ignition-interpreter" rel="nofollow">https://v8.dev/blog/ignition-interpreter</a><p>[2] <a href="https://benediktmeurer.de/2016/11/25/v8-behind-the-scenes-november-edition/" rel="nofollow">https://benediktmeurer.de/2016/11/25/v8-behind-the-scenes-no...</a><p>[3] <a href="https://www.cs.cornell.edu/courses/cs6120/2020fa/blog/tracemonkey/" rel="nofollow">https://www.cs.cornell.edu/courses/cs6120/2020fa/blog/tracem...</a><p>[4] <a href="https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/" rel="nofollow">https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/</a></p>
]]></description><pubDate>Thu, 13 Aug 2026 06:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49282378</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49282378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49282378</guid></item><item><title><![CDATA[New comment by rhdunn in "Retire the Abstractions"]]></title><description><![CDATA[
<p>LLMs have been trained on a lot of data and have built representations of various concepts and links between them from that training data. This is why they are good when seeing names of things like `Semigroup` as they can draw on all the information about that concept from multiple sources (mathematics papers and discussions, programming articles and code, etc.).<p>There was an article or comment somewhere that said that when an LLM was prompted in comments/variable names about a complex algorithm or something like that in a very specific domain it was very knowledgeable. However, when given different names/terminology for the same thing it didn't understand the problem it was prompted to solve.<p>This is also why LLMs are good at generating code using Bootstrap, Tailwind or any other technologies as they can relate terms like `flex` and `grid` to various layout patterns. So using sensible names from the literature/specifications/etc. helps both developers and LLMs.</p>
]]></description><pubDate>Wed, 12 Aug 2026 06:40:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49268624</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49268624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49268624</guid></item><item><title><![CDATA[New comment by rhdunn in "99% of My Website Traffic Is Bots"]]></title><description><![CDATA[
<p>I knew it... Wuthering Heights was written by AI and Lucy Maud Montgomery, Edgar Allan Poe, et. al. were AI bots churning out content!<p>Or maybe -- just maybe -- using dashes isn't a sign of content being AI written, just a style it picked up from the training data.</p>
]]></description><pubDate>Fri, 07 Aug 2026 15:15:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49211746</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49211746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49211746</guid></item><item><title><![CDATA[New comment by rhdunn in "Keyv and friends compromised in active Shai-Hulud supply chain attack"]]></title><description><![CDATA[
<p>The what happened section mentions the addition of the `setup.mjs` and `Math_Symbol.js`, along with a change in `package.json` to add `"preinstall": "node setup.mjs"`, so presumably checking for any of those would be a good indication to check further.<p>For example:<p><pre><code>    find . -type f | grep -P "/Math_Symbol\.js$"</code></pre></p>
]]></description><pubDate>Tue, 04 Aug 2026 14:34:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49169585</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49169585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49169585</guid></item><item><title><![CDATA[New comment by rhdunn in "Show HN: Run an 80B Qwen in 4.3 GB of RAM on a Mac, and a 35B on an iPhone"]]></title><description><![CDATA[
<p>On my 4090 setup I'm getting 86t/s on a 12B Q6_K quantized model running entirely in VRAM.<p>The current GPUs are optimized for processing huge numbers of triangles per second. There are three things at play here:<p>1. the organization of the data being sent to the GPU to optimize throughput;<p>2. the speed at which the GPU can read that data from its VRAM;<p>3. how many triangles it can process in parallel by using individual compute units.<p>I suspect that given parallel improvements for neural networks, we'll see similar improvements:<p>1. optimizing the structure of the weights in the model for efficient access by the CPU/GPU/NPU/TPU;<p>2. efficient access of data strides (matrix rows) in the memory, e.g. being able to read multiple 2x2 matrix values in one clock cycle, or stepwise pairs of values (a(i,j), b(j,k)) needed for matrix multiplication;<p>3. parallel compute for matrix and tensor multiplication and other operations needed by neural networks.</p>
]]></description><pubDate>Tue, 04 Aug 2026 11:09:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=49166925</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49166925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49166925</guid></item><item><title><![CDATA[New comment by rhdunn in "Show HN: Run an 80B Qwen in 4.3 GB of RAM on a Mac, and a 35B on an iPhone"]]></title><description><![CDATA[
<p>There are several aspects to this:<p>1. Better hardware optimized for matrix operations and other ML/NN specific workflows (NVIDIA hardware, Apple M4/M5 chips, Intel AI Boost, other NPU/TPU chips, etc.).<p>2. Bigger RAM/VRAM/unified for loading models in memory -- with 3090/4090 you can run 22-24B models in VRAM; with 5090 you can run 30-32B models; with Apple hardware with 128GB unified RAM you can run 70-128B models.<p>3. Better quantization (smaller, better value representations/lower errors/loss, optimized CUDA/etc. kernels) will lead to larger models being able to be run on the lower VRAM hardware at (with optimized kernels) decent tokens/s.<p>4. Better optimizations in general taking advantage of the hardware (coupled with the hardware and driver advances) and the NN architectures (NOTE: I saw a huge performance boost a while back after upgrading my llama.cpp version).<p>5. Better model architectures optimized/designed for running on lower-spec hardware, like Mixture-of-Experts which make it easier to run on a single GPU or distribute the weights more efficiently across multiple GPUs (i.e. you know that specific weights will be used together so you can keep them resident on a specific GPU and not have to swap the weights in/out of the various GPUs or transfer intermediate results of a single layer, only the result from that block/expert).<p>5. Improved NVME or similar SSD technology which a) has a large amount of storage, and b) has access efficiency on par with RAM/VRAM, especially if/when coupled with efficient DMA access to the GPU/NPU.</p>
]]></description><pubDate>Tue, 04 Aug 2026 10:48:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49166780</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49166780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49166780</guid></item><item><title><![CDATA[New comment by rhdunn in "The true power of regular expressions (2012)"]]></title><description><![CDATA[
<p>Various libraries (e.g. Python's `re` library) support comments and whitespace as an option allowing you to format the regex on multiple lines with commenting to document what each part does.<p>I'm not sure if there are any regex libraries that support DSLs and easy composability (e.g. the email RFC regex would be easier to read/maintain if you could specify the individual parts like are defined in the RFCs).</p>
]]></description><pubDate>Mon, 03 Aug 2026 12:24:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49154815</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49154815</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49154815</guid></item><item><title><![CDATA[New comment by rhdunn in "Atom is better than RSS, in ways that matter"]]></title><description><![CDATA[
<p>Unless they are building a podcast application which is predominantly RSS 2.0 based with some extensions from itunes and others to provide additional podcast-specific metadata such as episode and season information.</p>
]]></description><pubDate>Sun, 02 Aug 2026 13:02:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49144254</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49144254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49144254</guid></item><item><title><![CDATA[New comment by rhdunn in "Atom is better than RSS, in ways that matter"]]></title><description><![CDATA[
<p>XSLT 3 (via XPath 3.1) has support for maps, arrays, and parsing JSON to/from those or an XML representation. The XML representation is easier to work with in 3.<p>There's a draft version of XSLT 4 that Saxon supports which adds more capabilities for working with map and array types.</p>
]]></description><pubDate>Sun, 02 Aug 2026 13:00:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49144221</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49144221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49144221</guid></item><item><title><![CDATA[New comment by rhdunn in "Google fixed more Chrome bugs in June than over the past two years, thanks to AI"]]></title><description><![CDATA[
<p>C++ has had smart pointers for memory (and other resource) management for a long time now (see e.g. the Windows ATL classes for working with COM objects and resources).<p>There are a number of challenges that make browsers more challenging (even in memory safe languages like Swift and Rust).<p>1. Back references/pointers like `parentElement` to other objects in the graph that create dependency cycles (where traditional/simple reference counting will prevent the objects being deallocated).<p>2. Interacting with (and creating resources in) a garbage collector when running/evaluating JavaScript code.<p>3. Just-in-Time (JIT) compilation of JavaScript and other complicated interpretation-compilation pipelines that can allocate and transfer objects between the different stages.</p>
]]></description><pubDate>Fri, 31 Jul 2026 16:54:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49125687</link><dc:creator>rhdunn</dc:creator><comments>https://news.ycombinator.com/item?id=49125687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49125687</guid></item></channel></rss>