<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: celrod</title><link>https://news.ycombinator.com/user?id=celrod</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 09:37:47 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=celrod" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by celrod in "Is Grep All You Need? How Agent Harnesses Reshape Agentic Search"]]></title><description><![CDATA[
<p>If performance is the concern, ugrep will get you most of the way there relative to gnu grep, and should be fully grep compatible in terms of syntax:<p><a href="https://github.com/Genivia/ugrep#aliases" rel="nofollow">https://github.com/Genivia/ugrep#aliases</a><p>Claude Code may ship with ugrep already.</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:57:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462797</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48462797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462797</guid></item><item><title><![CDATA[New comment by celrod in "Every Byte Matters"]]></title><description><![CDATA[
<p>Yes. I think one of the big advantages of SoA is that you only pay for the fields you're currently using.
If you need a field somewhere, you can add it and only pay the cost of iterating it where you need it.</p>
]]></description><pubDate>Wed, 03 Jun 2026 14:14:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48384422</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48384422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48384422</guid></item><item><title><![CDATA[New comment by celrod in "Linux Terminal Memory Usage"]]></title><description><![CDATA[
<p>foot also offers a client/server architecture.
If you start a foot server (e.g. with a systemd service), you can use `footclient -N`.
This may reduce the memory pressure of running many terminals.<p>This is similar to the `kitty --singleinstance` mentioned in another comment by amarshall.</p>
]]></description><pubDate>Mon, 11 May 2026 22:01:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48101236</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48101236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48101236</guid></item><item><title><![CDATA[New comment by celrod in "Making Julia as Fast as C++ (2019)"]]></title><description><![CDATA[
<p>Yeah, for now. 
I'd like it to be open, but I also want to potentially be able to make money/a living off of it. 
My dream would be that it can be open while hardware vendors pay me to optimize for their hardware.
For how, being closed gives me more options. It's a lot easier to open in the future than to close, so it's just keeping options open.<p>I've thought a lot more about the engineering than any sort of marketing or businesses plan, so I just want to defer those.</p>
]]></description><pubDate>Sat, 09 May 2026 16:28:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48076172</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48076172</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48076172</guid></item><item><title><![CDATA[New comment by celrod in "Making Julia as Fast as C++ (2019)"]]></title><description><![CDATA[
<p>I'm still working on it. 
I'm currently working on a cache tile-size optimization algorithm that should (a) handle trees (a set of loops can be merged at some cache levels and split at others, e.g. in an MLP it may carry an output through the L3 cache, while doing sub-operations in the L2/L1/registers) (b) converge reasonably quickly so compile times are acceptable.<p>This is the last step before I move to code generation and then generating a ton of test cases/debugging.<p>My goal is some form of release by the end of the year.</p>
]]></description><pubDate>Sat, 09 May 2026 15:35:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48075798</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48075798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48075798</guid></item><item><title><![CDATA[New comment by celrod in "Making Julia as Fast as C++ (2019)"]]></title><description><![CDATA[
<p>I was once a bit of a Julia performance expert, but moved toward c++ for hobby projects even while still using Julia professionally.<p>I wrote a blog post at the time with exactly that punchline (not explicitly stated, but just look at the code!):
<a href="https://spmd.org/posts/multithreadedallocations/" rel="nofollow">https://spmd.org/posts/multithreadedallocations/</a>
The example was similar to a real production-critical hot path from work.<p>Maybe things changed since I left Julia, but that was December 2023, for years after this blog post.</p>
]]></description><pubDate>Sat, 09 May 2026 15:02:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48075532</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=48075532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48075532</guid></item><item><title><![CDATA[New comment by celrod in "Granite 4.1: IBM's 8B Model Matching 32B MoE"]]></title><description><![CDATA[
<p>Fellow kakoune user here. 
I'm curious about your use case/ what you're doing with it!</p>
]]></description><pubDate>Thu, 30 Apr 2026 16:22:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47964786</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=47964786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47964786</guid></item><item><title><![CDATA[New comment by celrod in "C++26 is done: ISO C++ standards meeting Trip Report"]]></title><description><![CDATA[
<p>In my experience, llms don't reason well about expected states, contracts, invariants, etc.
Partly because that don't have long term memory and are often forced to reason about code in isolation.
Maybe this means all invariants should go into AGENTS.md/CLAUDE.md files, or into doc strings so a new human reader will quickly understand assumptions.<p>Regardless, I think a habit of putting contracts to make pre- and post-conditions clear could help an AI reason about code.<p>Maybe instead of suggesting a patch to cover up a symptom, an AI may reason that a post-condition somewhere was violated, and will dig towards the root cause.<p>This applies just as well to asserts, too.
Contracts/asserts actually need to be added to tell a reader something.</p>
]]></description><pubDate>Tue, 31 Mar 2026 04:30:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47582775</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=47582775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47582775</guid></item><item><title><![CDATA[New comment by celrod in "SIMD programming in pure Rust"]]></title><description><![CDATA[
<p>I netted huge performance wins out of AVX512 on my Skylake-X chips all the time. 
I'm excited about less downclocking and smarter throttling algorithms, but AVX512 was great even without them -- mostly just hampered by poor hardware availability, poor adoption in software, and some FUD.</p>
]]></description><pubDate>Thu, 22 Jan 2026 05:17:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46715607</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=46715607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46715607</guid></item><item><title><![CDATA[New comment by celrod in "Framework Laptop 13 gets ARM processor with 12 cores via upgrade kit"]]></title><description><![CDATA[
<p>They're 8x A720 + 4x M520, not Snapdragon X.</p>
]]></description><pubDate>Fri, 05 Dec 2025 16:15:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46163316</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=46163316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46163316</guid></item><item><title><![CDATA[New comment by celrod in "Ghostty is now non-profit"]]></title><description><![CDATA[
<p>I use niri and footclient -N, so builtin window and tab completion don't appeal to be.<p>Foot feels fast, but I've not actually measured the latency.
It also seems to use less CPU than GPU accelerated terminals (which it isn't) from just glancing at btop. So I'm not sold on GPU-acceleration as a feature unless I see benchmarks demonstrating the value in improved latency and reduced CPU use compared to foot<p>I love that foot's scrollback search, selection expansive,  and copy can be entirely keyboard driven. Huge QoL feature for me that often seems neglected to me in other terminals.</p>
]]></description><pubDate>Thu, 04 Dec 2025 12:51:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46147091</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=46147091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46147091</guid></item><item><title><![CDATA[New comment by celrod in "Notes on switching to Helix from Vim"]]></title><description><![CDATA[
<p>I use kakoune, and don't understand why helix seems to be taking off while kakoune (which predated and inspired helix) remains niche.<p>Kakoune fully embraces the unix philosophy, even going so far as relying on OS (or terminal-multiplexer, e.g. kitty or tmux) for window management (via client/sever, so each kakoune instance can still share state like open buffers).<p>A comparison going into the differences (and embracing of the unix philosophy by kakoune) by someone who uses both kakoune and helix: 
<a href="https://phaazon.net/blog/more-hindsight-vim-helix-kakoune" rel="nofollow">https://phaazon.net/blog/more-hindsight-vim-helix-kakoune</a><p>Sensible defaults and easy setup are a big deal. No one wants to fiddle with setting up their lsp and tree-sitter. There's probably more to their differences in popularity than just this, though.</p>
]]></description><pubDate>Fri, 10 Oct 2025 17:01:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45541128</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=45541128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45541128</guid></item><item><title><![CDATA[New comment by celrod in "New nanotherapy clears amyloid-β, reversing symptoms of Alzheimer's in mice"]]></title><description><![CDATA[
<p>I think they're arguing<p>Cause -> cognitive disease
Cause -> plaques<p>That is, that the same cause is behind both.<p>There may be some arrows from plaque to disease as well (i.e., that plaques also increase disease).<p>I dont know the truth, but just trying to understand/follow Alzheimers news and reading comments.</p>
]]></description><pubDate>Thu, 09 Oct 2025 17:58:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=45530962</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=45530962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45530962</guid></item><item><title><![CDATA[New comment by celrod in "Helix Editor 25.07"]]></title><description><![CDATA[
<p>Is including batteries the main reason helix seems to have started taking off, while kakoune hasn't?<p>I use kakoune, because I like the client/server architecture for managing multiple windows, which helix can't do. The less configuring I do the better, but I've hardly done any in the past year. It's nice to have the option.<p>I do use kakoune-lsp and kak-tree-sitter.</p>
]]></description><pubDate>Tue, 15 Jul 2025 21:38:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=44576083</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=44576083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44576083</guid></item><item><title><![CDATA[New comment by celrod in "Why does C++ think my class is copy-constructible when it can't be?"]]></title><description><![CDATA[
<p>I agree.<p>The problem with eager diagnostics and templates is that the program could define a `Base<int>` specialization that has a working copy constructor later. [0]<p>I think if you define an explicit instantiation definition, it should type check at that point and error. [1] I find myself sometimes defining explicit instantiations to make clangd useful (can also help avoid repeated instantiations if you use explicit declarations in other TUs).<p>[0] <a href="https://en.cppreference.com/w/cpp/language/template_specialization.html" rel="nofollow">https://en.cppreference.com/w/cpp/language/template_speciali...</a><p>[1] <a href="https://en.cppreference.com/w/cpp/language/class_template.html" rel="nofollow">https://en.cppreference.com/w/cpp/language/class_template.ht...</a></p>
]]></description><pubDate>Tue, 10 Jun 2025 13:40:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=44236697</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=44236697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44236697</guid></item><item><title><![CDATA[New comment by celrod in "Suckless.org: software that sucks less"]]></title><description><![CDATA[
<p>I use Wshadow personally. I highly recommend it.
I think code that violates it (even if correct) is harder to understand.</p>
]]></description><pubDate>Sat, 22 Feb 2025 17:53:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=43141307</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=43141307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43141307</guid></item><item><title><![CDATA[New comment by celrod in "Linux: We need tiling desktop environments"]]></title><description><![CDATA[
<p>> I don't want my web browser or video player to be resized because I open a new program<p>I've been using niri (a tiling WM) recently. This is their very first design principle:
<a href="https://github.com/YaLTeR/niri/wiki/Design-Principles">https://github.com/YaLTeR/niri/wiki/Design-Principles</a>
Maybe other PaperWM-inspired WMs are similar. niri is the first I've used.<p>If your windows within a workspace are wider than your screen, you can scroll through them.
You also have different workspaces like normal.
I'll normally have 1 workspace with a bunch of terminals, and another for browsers and other apps (often another terminal I want to use at the same time as browsing, e.g. if I'm looking things up online).</p>
]]></description><pubDate>Mon, 26 Aug 2024 16:23:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=41358805</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=41358805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41358805</guid></item><item><title><![CDATA[New comment by celrod in "Papersway – a scrollable window management for Sway/i3wm"]]></title><description><![CDATA[
<p>Do you not often quickly look between files? If so, odds are you're using tiles within tmux, vim, emacs, vscode, or something.<p>I use kakoune, which has a client/server architecture. Each kak instance I open within a project connects to the same server, so it is natural for me to use my WM (niri) to tile my terminals, instead of having something like tmux or the editor do the tiling for me.
I don't want to bother with more than one layer of WM, where separate layers don't mix.</p>
]]></description><pubDate>Sun, 25 Aug 2024 11:58:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=41346667</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=41346667</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41346667</guid></item><item><title><![CDATA[New comment by celrod in "ICPP – Run C++ anywhere like a script"]]></title><description><![CDATA[
<p>Can confirm, this works for me in my actual examples, thanks!</p>
]]></description><pubDate>Sat, 10 Aug 2024 17:42:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=41211041</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=41211041</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41211041</guid></item><item><title><![CDATA[New comment by celrod in "ICPP – Run C++ anywhere like a script"]]></title><description><![CDATA[
<p>I've defined a few pretty printers, but `operator[]` doesn't work for my user-defined types.
Knowing it works for vectors, I'll try and experiment to see if there's something that'll make it work.<p><pre><code>  (gdb) p unrolls_[0]
  Could not find operator[].
  (gdb) p unrolls_[(long)0]
  Could not find operator[].
  (gdb) p unrolls_.data_.mem[0]
  $2 = {
</code></pre>
`unrolls_[i]` works within C++. This `operator[]` method isn't even templated (although the container type is); the index is hard-coded to be of type `ptrdiff_t`, which is `long` on my platform.<p>I'm on Linux, gdb 15.1.</p>
]]></description><pubDate>Thu, 08 Aug 2024 16:32:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=41193375</link><dc:creator>celrod</dc:creator><comments>https://news.ycombinator.com/item?id=41193375</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41193375</guid></item></channel></rss>