<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: whacked_new</title><link>https://news.ycombinator.com/user?id=whacked_new</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 08:38:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=whacked_new" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by whacked_new in "A perfectable programming language"]]></title><description><![CDATA[
<p>wait, I'm intrigued, it says the blog itself is lean code. How? It's rendered, like pollen?</p>
]]></description><pubDate>Mon, 13 Apr 2026 02:11:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47746742</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=47746742</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47746742</guid></item><item><title><![CDATA[New comment by whacked_new in "Show HN: Han – A Korean programming language written in Rust"]]></title><description><![CDATA[
<p>I'm a little sad that VSO languages didn't start the computing revolution because if they did, we would all be writing LISP. But instead, we are relegated to Python and JavaScript!</p>
]]></description><pubDate>Sun, 15 Mar 2026 03:07:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47383914</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=47383914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383914</guid></item><item><title><![CDATA[New comment by whacked_new in "Show HN: Han – A Korean programming language written in Rust"]]></title><description><![CDATA[
<p>I think another part of it is culture. Outside of Western tech circles there's far less a culture (it feels) to invent new languages. To my knowledge Ruby's Matz is the only notable exception, and he's highly unusual as a Japanese. Then, using non-ascii-friendly character set is an even greater challenge.<p>Non-ascii encodings are harder to program in due to the need to switch in and out of input methods.<p>That said, some languages like Arabic and Japanese (and possibly Korean and Hindi) lend naturally to VSO token ordering, which maps directly to LISP syntax, so it's unfortunate that there isn't a lot of interest in this. It would be lots of fun. Maybe agents will make this possible!<p>Here are some interesting examples.<p><pre><code>    - https://github.com/nasser/--- (Arabic)
    - https://honoka.nukenin.jp/Introduction/Loop.html (Japanese)
    - https://github.com/wenyan-lang/wenyan (Chinese, which is SVO like English)</code></pre></p>
]]></description><pubDate>Sun, 15 Mar 2026 03:03:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47383894</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=47383894</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383894</guid></item><item><title><![CDATA[Vibenchmarking different JSON schema validator CLI tools]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/whacked/cow/blob/main/vibe%20benchmarking%20json%20schema%20validators.md">https://github.com/whacked/cow/blob/main/vibe%20benchmarking%20json%20schema%20validators.md</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47085517">https://news.ycombinator.com/item?id=47085517</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 20 Feb 2026 09:08:19 +0000</pubDate><link>https://github.com/whacked/cow/blob/main/vibe%20benchmarking%20json%20schema%20validators.md</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=47085517</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47085517</guid></item><item><title><![CDATA[New comment by whacked_new in "Training a trillion parameter model to be funny"]]></title><description><![CDATA[
<p>Circa GPT-3.5 to GPT-4o I was involved in some research in figuring out how to make LLMs funny. We tried a bunch of different things, from giving it rules on homonym jokes [1], double-entendre jokes, fine tuning on comedian transcripts, to fine tuning on publicly rated joke boards.<p>We could not make it funny. Also interesting was that when CoT research was getting a lot of attention, we tried a joke version of CoT, asking GPT4 to explain why a joke was funny in order to produce training set data. Most of the explanations were completely off base.<p>After this work, I became a lot less worried about the GAI-taking-over narrative.<p>Funny is very, very hard.<p>[1] without a dictionary, which at first seems inefficient, but this work demonstrated that GPT could perfectly reconstruct the dictionary anyway</p>
]]></description><pubDate>Tue, 03 Feb 2026 02:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46865381</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46865381</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46865381</guid></item><item><title><![CDATA[New comment by whacked_new in "I'm addicted to being useful"]]></title><description><![CDATA[
<p>What sillysaurusx said, good on you.</p>
]]></description><pubDate>Wed, 21 Jan 2026 01:50:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46700224</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46700224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46700224</guid></item><item><title><![CDATA[New comment by whacked_new in "The Emacs Widget Library: A Critique and Case Study"]]></title><description><![CDATA[
<p>I spent some time reorganizing the code in my gist into a repo for better change tracking at <a href="https://github.com/whacked/inline-interactive-forms.el" rel="nofollow">https://github.com/whacked/inline-interactive-forms.el</a><p>I also pulled vui.el into the dev setup and basically instructed the agents to reach feature parity. I ran out of CC credits fast so switched to codex. Codex makes a lot of unbalanced parenthesis mistakes even in agent, although it does eventually get it right by telling it to run emacs itself. Codex wasn't able to reach feature parity though, like the background color indications (I supply a video in the readme). I didn't look too deep yet.</p>
]]></description><pubDate>Sun, 18 Jan 2026 17:40:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46670019</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46670019</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46670019</guid></item><item><title><![CDATA[New comment by whacked_new in "The Emacs Widget Library: A Critique and Case Study"]]></title><description><![CDATA[
<p>I haven't thought through the entire use case. But it loosely revolves around the interaction designs provided by org-mode, ipython/jupyter notebooks, atuin desktop, aka "interactive documents", where the execution intent is embedded in text.<p>Jupyter is objectively more powerful from an interactivity standpoint, but the cell-based editing strategy has always fell short from a navigation and versioning standpoint. OTOH text-only interaction is sometimes too free, so after all these years, I still haven't found anything that feels just right.<p>Say you are writing devops documentation. Skipping the many ugly ways you can achieve this in jupyter (e.g. you need ssh logins and creds), or even slightly less ugly in atuin, in org-mode you'd use a begin_src / end_src block and eval that block. The block kind of breaks the text flow. A possibly better interaction mode would be a text "button", borrowing from GNU Hyperbole's terminology.<p>Continuing the button use case, say the devops document says "<run this> to check the uptimes of our servers". That button is simple enough. You can evaluate this and get a buffer, or like org-babel, insert the output into a block inline. Now we want to extend the functionality: "<query the ps of a given server>". We want parameterization, but without breaking flow. So here I'm thinking of injecting a disposable form at cursor. In a web-based toolkit, we'd use a popup or expandable form, but that switches focus out of the document and into a modal. Does that make sense?<p>I'm not sure how well it will all fit, but every now and then I feel the same itch, and it seems like in 10+ years of using different tools, Emacs is still the best for providing "structured, validated input for in-document interaction".</p>
]]></description><pubDate>Fri, 16 Jan 2026 02:31:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46642336</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46642336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46642336</guid></item><item><title><![CDATA[New comment by whacked_new in "Ask HN: How are you doing RAG locally?"]]></title><description><![CDATA[
<p>Here's a rust one: <a href="https://github.com/BeaconBay/ck" rel="nofollow">https://github.com/BeaconBay/ck</a><p>I haven't used it extensively, but semantic grep alone was kind of worth it.</p>
]]></description><pubDate>Thu, 15 Jan 2026 15:41:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46634109</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46634109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46634109</guid></item><item><title><![CDATA[New comment by whacked_new in "The Emacs Widget Library: A Critique and Case Study"]]></title><description><![CDATA[
<p>I played with vui.el's hello world code earlier today, and it's a great showcase!<p>Is there a simple way to achieve in-buffer forms? The jsf-- stuff was instructed to make the widget form read-only except for the interactive widget components (took a few iterations to work), while keeping the rest of the buffer editable. The demos seem to all mount to a new buffer. Though I could also feed vui.el into an agent and ask :-)<p>Thanks for the tips. I guess I can add the deps to --eval "(load 'eldev)" in manual testing.<p>edit: wow, I just saw your implementation at <a href="https://gist.github.com/d12frosted/51edb747167c0fa8fcce40fed3338ab2" rel="nofollow">https://gist.github.com/d12frosted/51edb747167c0fa8fcce40fed...</a><p>this is awesome!</p>
]]></description><pubDate>Thu, 15 Jan 2026 15:38:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46634039</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46634039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46634039</guid></item><item><title><![CDATA[New comment by whacked_new in "The Emacs Widget Library: A Critique and Case Study"]]></title><description><![CDATA[
<p>The tradeoffs are very shallow, mainly I just wanted the maximum chance of seeing something working ASAP.<p>Staying vanilla reduces dependencies, which also makes testing easier during iteration. I forgot which agent (CC or codex) I used for the bulk of the code generation, but some times I manually do some one-off dialog and those get unbalanced parens.<p>In the agent I ask it to do `emacs -q -nw -l ...` to iterate, so it starts a bare emacs instance. This seems to have worked well when adding [Submit and Close] and [Cancel] buttons, as well as "move the cursor into the first text input widget when inserting a new array item" (the default action is to keep the cursor on the [INS] widget after inserting the list item).<p>The next consideration is just that I am less confident in the agent's ability to just ingest a .el library and use it correctly vs something more popular like python. Maybe it can, I just wanted results fast and not have to dig too deep myself. I had to go in and do some (setq debug-on-error t) toggles a few times while it was figuring out the json schema load into alist/hashmap differences and I didn't want to spend more time doing plumbing.<p>But as you probably can imagine, dynamic inline forms immediate gives us state issues, so I asked the agent to create a buffer-local alist (or hashmap?) to track the states of the form input, so it can be cleaned up on close. It's a bit unreliable now. If vui.el already has a solution I'll switch over next.</p>
]]></description><pubDate>Wed, 14 Jan 2026 17:08:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46618729</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46618729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46618729</guid></item><item><title><![CDATA[New comment by whacked_new in "The Emacs Widget Library: A Critique and Case Study"]]></title><description><![CDATA[
<p>I'm happy more people are interested in this critique! And thanks for d12frosted for joining the discussion.<p>I was searching for what's the latest in emacs widgets developments because I was interested in using widgets. Emacs Customize for example, renders text-based widgets in an editable buffer, which is very uncommon nowadays. Emacs <i>seems</i> like the best candidate for this kind of interactivity. I'm sure it's possible in other editors, but with significantly more effort and significantly slower rendering. I also considered lem, but the barrier also seems much higher.<p>His post also led me to his vui.el project, but I ended up not trying it, since after understanding the tradeoffs, I pushed the widget code creation to an LLM. I still get frequent unbalanced parentheses errors so I still stay close to the defaults.<p>The PoC is about testing a method to render a widgets-based, json-schema-validated input form that you can embed dynamically into an emacs buffer, enter the data, then do something post-validation. If anyone's interested, here's the latest state of the LLM-generated and human-fixed code: <a href="https://gist.github.com/whacked/6875c5117b48528e619755e13e241923" rel="nofollow">https://gist.github.com/whacked/6875c5117b48528e619755e13e24...</a></p>
]]></description><pubDate>Wed, 14 Jan 2026 10:39:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46614463</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46614463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46614463</guid></item><item><title><![CDATA[The Emacs Widget Library: A Critique and Case Study]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.d12frosted.io/posts/2025-11-26-emacs-widget-library">https://www.d12frosted.io/posts/2025-11-26-emacs-widget-library</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46584864">https://news.ycombinator.com/item?id=46584864</a></p>
<p>Points: 112</p>
<p># Comments: 41</p>
]]></description><pubDate>Mon, 12 Jan 2026 06:37:26 +0000</pubDate><link>https://www.d12frosted.io/posts/2025-11-26-emacs-widget-library</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46584864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46584864</guid></item><item><title><![CDATA[New comment by whacked_new in "There is No Quintic Formula [video]"]]></title><description><![CDATA[
<p>The 2swap lambda calculus video (<a href="https://www.youtube.com/watch?v=RcVA8Nj6HEo" rel="nofollow">https://www.youtube.com/watch?v=RcVA8Nj6HEo</a>) is a masterpiece!</p>
]]></description><pubDate>Mon, 01 Dec 2025 02:24:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46102797</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=46102797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46102797</guid></item><item><title><![CDATA[New comment by whacked_new in "“One Student One Chip” Course Homepage"]]></title><description><![CDATA[
<p>The organizers presented this at COSCUP 25 [1]. It's both extremely ambitious and impressive. They said there are basically no restrictions on who can join -- high schoolers to postdocs, and it's completely based on personal aptitude. The fastest students can finish in a few months, and some go on for years. Students who graduate finish an actual chip that (probably among other things) runs a video game.<p>[1] <a href="https://coscup.org/2025/sessions/SNHFTW" rel="nofollow">https://coscup.org/2025/sessions/SNHFTW</a></p>
]]></description><pubDate>Tue, 18 Nov 2025 06:08:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45961898</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45961898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45961898</guid></item><item><title><![CDATA[New comment by whacked_new in "Nix Derivation Madness"]]></title><description><![CDATA[
<p>Comparing nix style (hash head, package tail), and spack style (package head hash tail), and speaking from my own limited experience, the need arises in different cases, which also depends on the ease of tooling,<p>sometimes I'm grepping in /nix/store and you have (as shown earlier) a list of derivation paths like this<p>$ ls /nix/store | grep nodejs-2 | head | sed 's/^/    /'<p><pre><code>    0a9kkw6mh0f80jfq1nf9767hvg5gr71k-nodejs-22.18.0.drv
    0pmximcv91ilgxcf9n11mmxivcwrczaa-nodejs-22.14.0-source.drv
    0zzxnv3kap4r4c401micrsr3nrhf87pa-nodejs-20.18.1-fish-completions.drv
    2a7y7d38x8kwa8hdj6p93izvrcl9bfga-nodejs-22.11.0-source.drv
    2gcjb0dibjw8c1pp45593ykjqzq5sknm-nodejs-20.18.1-source.drv
</code></pre>
and thus as designed, your eyes ignore the block of hashes and you see the "nodejs-..." stuff<p>You might ask why are you grepping? Because it's fast and familiar and I don't know the native tooling as easily (possibly a UX problem).<p>Then in spack (see <a href="https://spack.readthedocs.io/en/latest/package_fundamentals.html" rel="nofollow">https://spack.readthedocs.io/en/latest/package_fundamentals....</a>) they have<p>$ spack find --paths<p><pre><code>    ==> 74 installed packages.
    -- linux-debian7-x86_64 / gcc@4.4.7 --------------------------------
        ImageMagick@6.8.9-10  ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/ImageMagick@6.8.9-10-4df950dd
        adept-utils@1.0       ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/adept-utils@1.0-5adef8da
        atk@2.14.0            ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/atk@2.14.0-3d09ac09
</code></pre>
and<p>$ spack find --format "{name}-{version}-{hash}"<p><pre><code>    autoconf-2.69-icynozk7ti6h4ezzgonqe6jgw5f3ulx4
    automake-1.16.1-o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
    bzip2-1.0.6-syohzw57v2jfag5du2x4bowziw3m5p67
    bzip2-1.0.8-zjny4jwfyvzbx6vii3uuekoxmtu6eyuj
    cmake-3.15.1-7cf6onn52gywnddbmgp7qkil4hdoxpcb
</code></pre>
you get the package name immediately from the left, which is nice, and you can pipe that straight to `sort`, but where the hash starts is more jagged on the right so there's a bit more noise when you're looking at the numbers. In the end the information is identical and it's a UX difference.<p>Tradeoffs wise I think they both made the right choice. Because for nix, the packages are almost always in /nix/store, so the path length including the hash is almost always the same.<p>For spack you can place your packages anywhere so the base directories can be highly variable, and so it's sensible to have the package names immediately after the package directory.<p>Or, I'm just trying to rationalize the choices each designer made post-hoc. But after using both I appreciate the design considerations that went in. In the end, humans are inefficient. When I make name / version / hash identifiers in my own applications I end up using one or the either design.</p>
]]></description><pubDate>Sat, 01 Nov 2025 08:24:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45780059</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45780059</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45780059</guid></item><item><title><![CDATA[New comment by whacked_new in "Nix Derivation Madness"]]></title><description><![CDATA[
<p>I can't find the video of the talk where either Eelco Dolstra (nix) or Todd Gamblin (spack) talks about this, but IIRC it's a design decision; you generally don't go spelunking in the nix store, but if you do, and you ls /nix/store, you'll see a huge list of packages, and due to the hash being a constant length, you can visually separate the tails of the package names like<p><pre><code>    0009flr197p89fz2vg032g556014z7v1-libass-0.17.3.drv
    000ghm78048kh2prsfzkf93xm3803m0r-default.md
    001f6fysrshkq7gaki4lv8qkl38vjr6a-python-runtime-deps-check-hook.sh.drv
    001gp43bjqzx60cg345n2slzg7131za8-nix-nss-open-files.patch
    001im7qm8achbyh0ywil6hif6rqf284z-bootstrap-stage0-binutils-wrapper-boot.drv
    001pc0cpvpqix4hy9z296qnp0yj00f4n-zbmath-review-template.r59693.tar.xz.drv
</code></pre>
Spack, another deterministic builder / package manager, IIRC uses the reversed order so the hash is at the tail. Pros/cons under different search / inspection conditions.</p>
]]></description><pubDate>Sat, 01 Nov 2025 02:25:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45778772</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45778772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45778772</guid></item><item><title><![CDATA[New comment by whacked_new in "Show HN: Timelinize – Privately organize your own data from everywhere, locally"]]></title><description><![CDATA[
<p>Thanks for the reply! I'll have to try this out... it almost looks like what perkeep was meant to become.<p>One interesting scenario re time traveling is if we use an LLM somewhere in data derivation. Say there's a secondary processor of e.g. journal notes that yield one kind of feature extraction, but the model gets updated at some point, then the output possibilities expand very quickly. We might also allow human intervention/correction, which should take priority and resist overwrites. Assuming we're caching these data then they'll also land somewhere in the database and unless provenance is first class, they'll appear just as ground truth as any other.<p>Bitemporal databases look interesting but the amount of scaffolding above sqlite makes the data harder to manage.<p>So if I keep ground truth data as text, looks like I'm going to have an import pipeline into timelinize, and basically ensure that there's a stable pkey (almost certainly timestamp + qualifier), and always overwrite. Seems feasible, pretty exciting!</p>
]]></description><pubDate>Wed, 08 Oct 2025 03:38:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45511807</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45511807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45511807</guid></item><item><title><![CDATA[New comment by whacked_new in "Vibe engineering"]]></title><description><![CDATA[
<p>so the progression of human technological revolutions is looking like industrial -> information -> AI -> vibe</p>
]]></description><pubDate>Wed, 08 Oct 2025 02:32:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45511412</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45511412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45511412</guid></item><item><title><![CDATA[New comment by whacked_new in "Show HN: Timelinize – Privately organize your own data from everywhere, locally"]]></title><description><![CDATA[
<p>Super interested in this as well (and thank you for Caddy)<p>How does this handle data updating / fixing? My use case is importing data that's semi structured. Say you get data from a 3rd party provider from one dump, and it's for an event called "jog". Then they update their data dump format so "jog" becomes subdivided into "light run" vs "intense walk", and they also applied it retroactively. In this case you'd have to reimport a load of overlapping data.<p>I saw the FAQ and it only talks about imports not strictly additive.<p>I am dealing with similar use cases of evolving data and don't want to deal with SQL updating, and end up working entirely in plain text. One advantage is that you can use git to enable time traveling (for a single user it still works reasonably).</p>
]]></description><pubDate>Wed, 08 Oct 2025 01:55:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45511215</link><dc:creator>whacked_new</dc:creator><comments>https://news.ycombinator.com/item?id=45511215</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45511215</guid></item></channel></rss>