<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: tibordp</title><link>https://news.ycombinator.com/user?id=tibordp</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Jul 2026 03:49:27 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tibordp" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tibordp in "Claude Is Not a Compiler"]]></title><description><![CDATA[
<p>Presumably these are new subdomains, if a caching DNS resolvers never saw the domain yet, it would simply query the authoritative server.<p>There's a small nuance here that DNS spec also caches negative (NXDOMAIN) results, but the TTL of those is controllable by the SOA record on the domain that contains it.<p>exe.xyz has a fairly short 10 second negative TTL, so even if you tried to resolve it before it was set up in the authoritative DNS, it wouldn't stay negative-cached very long (though some DNS caches put a lower bound on the TTL and cache it for longer)<p>> dig +short soa exe.xyz<p>ns1.exe.dev. hostmaster.exe.dev. 1854440 86400 7200 1209600 10</p>
]]></description><pubDate>Tue, 21 Jul 2026 15:34:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48993683</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=48993683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48993683</guid></item><item><title><![CDATA[New comment by tibordp in "The LLM Critics Are Right. I Use LLMs Anyway"]]></title><description><![CDATA[
<p>Good article! This matches how I feel about the situation.<p>It's really not incongruent to use LLMs and be in awe of their frankly incredible capabilities while at the same time recognize the risks and frankly real damage we are already seeing to junior training and hiring, open source communities and (in my opinion) very soon the entire fabric of our society.<p>I respect that people don't want to use agents themselves for whatever personal reason.<p>I respect maintainers not accepting AI-authored contributions. It's a tradeoff between progress, growing new contributors and maintainer sanity. Though I do feel that categoric opposition to anything AI will likely be futile in the mid-term.<p>I respect people pushing for regulation of AI or a global pause or whatever.<p>I don't particularly respect people dismissing everything AI authored as slop. Categorically refusing to read an article because it contains em-dashes or the term "load-bearing" is silly. While this is slowly changing now, many people are still in complete denial as to what the frontier AI is capable of.<p>Love it, hate it - I don't care, but at least respect it, goddamit.</p>
]]></description><pubDate>Thu, 16 Jul 2026 12:44:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48933705</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=48933705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48933705</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Kurvengefahr – browser CAD/CAM for pen plotters"]]></title><description><![CDATA[
<p>Yes! We played Achtung a lot on library computers in high school during breaks and I remembered it when I needed to pick a name for the app.</p>
]]></description><pubDate>Sun, 12 Jul 2026 19:20:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48883770</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=48883770</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48883770</guid></item><item><title><![CDATA[Show HN: Kurvengefahr – browser CAD/CAM for pen plotters]]></title><description><![CDATA[
<p>A few years ago I made a pen plotter attachment for Prusa MK4 (<a href="https://www.printables.com/model/827264-pen-plotter-attachment-for-prusa-mk4" rel="nofollow">https://www.printables.com/model/827264-pen-plotter-attachme...</a>) and at the time I didn't have a good way to turn artwork into G-code for it, and I put the project on ice for a while.<p>I recently wanted to dabble in line art again and made a small browser app to make it easier. As agentic AI tools of 2026 are quite addictive, it rather quickly grew into something quite a bit more - an integrated browser CAD/CAM for pen plotters that covers everything from importing existing artwork, creating artwork from scratch, preparing for plotting and hardware integration. It includes some off-beat features like a Logo interpreter for turtle art and Graves RNN for handwriting synthesis and in addition to 3D printer pretending to be pen plotters it now also supports actual pen plotters based on EBB (AxiDraw) and GRBL firmwares through Web Serial.<p>If you own an AxiDraw or a GRBL plotter, I'd very much appreciate it you gave it a try and give feedback. As I don't own those, I did all the testing with a hardware mock on STM32, so I am not sure how well it works attached to an actual plotter.<p>Source code and docs are on GitHub:
<a href="https://github.com/tibordp/kurvengefahr" rel="nofollow">https://github.com/tibordp/kurvengefahr</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48881352">https://news.ycombinator.com/item?id=48881352</a></p>
<p>Points: 20</p>
<p># Comments: 6</p>
]]></description><pubDate>Sun, 12 Jul 2026 14:09:23 +0000</pubDate><link>https://kurvengefahr.org/</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=48881352</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48881352</guid></item><item><title><![CDATA[New comment by tibordp in "A4 Paper Stories"]]></title><description><![CDATA[
<p>Given that we are talking about A4 papers and grams, I'd bet this wasn't in the US.<p>In Europe, the typical flat rate is up to 100g for standard letters. And that's 20 sheets, which is not a particularly unusual letter to send.</p>
]]></description><pubDate>Wed, 07 Jan 2026 14:34:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46526788</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=46526788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46526788</guid></item><item><title><![CDATA[New comment by tibordp in "Bypassing disk encryption on systems with automatic TPM2 unlock"]]></title><description><![CDATA[
<p>That's only true for information theoretically secure algorithms like one-time pad. It's not true for algorithms that are more practical to use like AES.</p>
]]></description><pubDate>Fri, 17 Jan 2025 15:06:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=42738267</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=42738267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42738267</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: HTML for People"]]></title><description><![CDATA[
<p>Similar - I learned HTML by tweaking ReadMe.htm that was included with Dweep videogame from (now defunct) Dexterity Software.</p>
]]></description><pubDate>Fri, 11 Oct 2024 18:11:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=41811796</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=41811796</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41811796</guid></item><item><title><![CDATA[New comment by tibordp in "Arpchat – Text your friends on the same network using just ARP"]]></title><description><![CDATA[
<p>Not sure I'd agree about it being esoteric. Understanding or at least knowing about ARP is still very much essential for people in networking. arping is a very useful tool for seeing if machines on the same network segment are up and just not responding to ICMP pings. Anyone looking at tcpdump/Wireshark dumps will run into it sooner or latter.<p>It is true that software engineers may sooner run into it when debugging their home network than their application though as cloud and traditional networks are very different.</p>
]]></description><pubDate>Wed, 09 Aug 2023 18:47:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=37066887</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=37066887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37066887</guid></item><item><title><![CDATA[New comment by tibordp in "Ask HN: LLVM vs. C?"]]></title><description><![CDATA[
<p>You can go surprisingly far with C, though LLVM is probably a better long-term option for a serious compiler, because it's a tool made for the job (unless you target exotic and/or embedded platforms that don't have LLVM support - but that's fairly unlikely).<p>C is very easy to get started with if you don't already know LLVM. You don't have to flatten everything to SSA + basic blocks and can keep expressions as trees. The downside is that once your compiler is reasonably complete, you may spend quite a bit of time working around quirks of C (e.g. int promotion is very annoying when you already have full type information, so your compiler either has to understand C semantics fairly well or defensively cast every subexpression).<p>I have a C backend in my compiler (<a href="https://github.com/alumina-lang/alumina">https://github.com/alumina-lang/alumina</a>) and it works really well, though the generated C is really ugly and assembly-like. With #line directives, you can also get source-level debugging (gdb/lldb) that just works out of the box.<p>There are a few goodies that LLVM gives you that you don't get with C, like coverage (<a href="https://clang.llvm.org/docs/SourceBasedCodeCoverage.html" rel="nofollow noreferrer">https://clang.llvm.org/docs/SourceBasedCodeCoverage.html</a>). It works when done through clang, but cannot easily be made to track the original sources.</p>
]]></description><pubDate>Fri, 30 Jun 2023 22:50:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=36543591</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=36543591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36543591</guid></item><item><title><![CDATA[New comment by tibordp in "How VSCode made bracket pair colorization faster (2021)"]]></title><description><![CDATA[
<p>Just the standard Remote-SSH<p><a href="https://code.visualstudio.com/docs/remote/ssh" rel="nofollow noreferrer">https://code.visualstudio.com/docs/remote/ssh</a></p>
]]></description><pubDate>Thu, 22 Jun 2023 16:10:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=36434372</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=36434372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36434372</guid></item><item><title><![CDATA[New comment by tibordp in "How VSCode made bracket pair colorization faster (2021)"]]></title><description><![CDATA[
<p>That's interesting, I don't find VSCode slow at all, even when working on large workspaces via SSH over a high latency link.<p>Sure, there are native editors that are snappier, but not to the point that affect my productivity in any way.<p>The one thing that VSCode does not handle well is large files (e.g. DB dumps, large JSONs, logfiles), but for coding, it really is not an issue.</p>
]]></description><pubDate>Thu, 22 Jun 2023 15:52:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=36434089</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=36434089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36434089</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>It's not that it's hard, it's just that it is not inline, so it requires a context switch because the CM is defined outside, even when it's doing something specific.<p>The most common problem that defer is trying to solve is cleanup when the function returns early (ususally because of an error). Writing the cleanup code inline before the early return results in code duplication.<p>C#/Java/Javascript have try/finally for this, C has the "goto cleanup" idiom, and C++ and Rust have the guard objects. Go and Alumina have defer.</p>
]]></description><pubDate>Sat, 03 Sep 2022 21:50:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=32706465</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32706465</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32706465</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>That's a good point and also one of the things I kinda like about Alumina. You can do thing like this and the file will only be closed at the end of the function rather than the end of the if block.<p><pre><code>    let stream: &dyn Writable<Self> = if output_filename.is_some() {
        let file = File::create(output_filename.unwrap())?
        defer file.close();

        file
    } else {
        &StdioStream::stdout()
    };</code></pre></p>
]]></description><pubDate>Sat, 03 Sep 2022 21:24:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=32706264</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32706264</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32706264</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>I wouldn't say it was very difficult, but it did take quite a bit of time. Apart from some basic principles (no GC, no RAII, "everything is an expression"), I basically kept adding features whenever I hit some pain point trying to write actual programs in Alumina. If I were to do it again, I'd probably be more methodical, but anyway, here we are :)<p>Protocols were probably the trickiest feature of the language to figure out. As for the compiler itself, surprisingly, the biggest hurdle to get over was the name resolution. It's a tiny part of the compiler today, but everything else was much more straightforward.<p>I don't have formal CS background, but I have been coding for a long time. I read the Dragon Book and would recommend it to anyone writing a compiler, even though it's a bit dated.<p>I don't know Racket or LISP myself so I cannot comment on that part.</p>
]]></description><pubDate>Sat, 03 Sep 2022 21:13:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=32706136</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32706136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32706136</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>No native compilation to WASM yet, but since the compiler outputs self-contained C, it should be fairly easy to do it with Emscripten.<p>The sandbox is running the code server-side in a nsjail container.<p>As for unwrap, I feel you! the try expression (expr?) is supported, which makes it look a bit nicer, but I'm still trying to figure out a good idiom for when you actually want to do specific things based on whether the result is ok or err.<p>Alumina does not have Rust-style enums (tagged unions) or the match construct, which makes it a bit tricky.</p>
]]></description><pubDate>Sat, 03 Sep 2022 20:59:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=32706028</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32706028</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32706028</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>Python context managers are actually very similar to guard objects in C++ and Rust.<p>What I meant was something like this (could also be done with `contextlib`, but it's also verbose)<p><pre><code>    seen_names = {}

    class EnsureUnique:
        def __init__(self, name: str):
            self.name = name
        
        def __enter__(self):
            if self.name in seen_names:
                raise ValueError(f"Duplicate name: {self.name}")
            seen_names.add(self.name)

        def __exit__(self, exc_type, exc_value, traceback):
            seen_names.remove(self.name)


    def bar():
        with EnsureUnique("foo"):
            do_something()
            ...
</code></pre>
With defer this could be simplified to<p><pre><code>    static seen_names: HashSet<&[u8]> = HashSet::new();

    fn bar() {
        if !seen_names.insert("foo") {
            panic!("Duplicate name: foo")
        }
        defer seen_names.remove("foo");

        do_something();
    }</code></pre></p>
]]></description><pubDate>Sat, 03 Sep 2022 20:08:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=32705586</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32705586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32705586</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>Scoped destruction is awesome in general, and I agree that it is superior to defer.<p>I think one case where defer might be nicer is for things that are not strictly memory, e.g. inserting some element into a container and removing it after the function finishes (or setting a flag and restoring it).<p>This can be done with a guard object in RAII languages, but it's a bit unintuitive. Defer makes it very clear what is going on.</p>
]]></description><pubDate>Sat, 03 Sep 2022 19:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=32705021</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32705021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32705021</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>Honestly, Tree Sitter is fantastic, I can highly recommend it. By far the most user friendly and powerful parser generator I've worked with. The C API is very nice.<p>The only two pain point I had is that the `node-types.json` that's generated only contains the names of the nodes, not the numerical IDs. This means that if you have some codegen generating Rust enums is difficult if you want to avoid matching nodes by string.<p>I wrote <a href="https://github.com/tibordp/tree-sitter-visitor" rel="nofollow">https://github.com/tibordp/tree-sitter-visitor</a> for generating visitor traits in Rust for a given grammar. I actually did it a bit differently in the end for Alumina, but it might come useful.</p>
]]></description><pubDate>Sat, 03 Sep 2022 18:59:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=32704944</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32704944</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32704944</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>Valgrind and Sanitizers should work on Alumina. I have not actually tried them myself yet, but I don't see any reason why they couldn't work.<p>The only potential problem I see that with the current C backend, the debugging information is very hard to trace back to the original Alumina source code, so it might be hard to see where the leaks are coming from. This is something I plan to address in the self-hosted compiler, once it is functional.</p>
]]></description><pubDate>Sat, 03 Sep 2022 18:24:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=32704633</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32704633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32704633</guid></item><item><title><![CDATA[New comment by tibordp in "Show HN: Alumina Programming Language"]]></title><description><![CDATA[
<p>As far as I know it doesn't have a single feature that is really unique. It's more like a combination of things I like from other languages, like syntax and expressions from Rust, defer expressions from Go, UFCS from D.<p>The overarching theme is to see how far you can go making a language that feels high level without having a garbage collector or RAII. I used to use Deplhi/Pascal a lot when I was younger and it was this kind of language.</p>
]]></description><pubDate>Sat, 03 Sep 2022 18:20:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=32704585</link><dc:creator>tibordp</dc:creator><comments>https://news.ycombinator.com/item?id=32704585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32704585</guid></item></channel></rss>