<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: mbid</title><link>https://news.ycombinator.com/user?id=mbid</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Jul 2026 07:12:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mbid" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mbid in "Grok CLI uploaded the whole home directory to GCS"]]></title><description><![CDATA[
<p>That's pretty much the flow I formalized here: <a href="https://github.com/nvidia/rumpelpod" rel="nofollow">https://github.com/nvidia/rumpelpod</a><p>Instead of generating patches, this exposes the agent's checkout as a git remote though.<p>Most similar tools (and I believe your tooling as well?) bind-mount the repository checkout from the host into the container. This was always a source of user and permission errors for me, since you have to align the user ids inside and outside the container. Also, some build tools don't like it when the repo is on a different filesystem (bind mount vs container root) than the rest of the system. So I made rumpelpod just bake the repo checkout into the base image that the container is launched from, and since then I haven't had any issues like this.<p>For giving the agent access to a docker daemon I found sysbox to work very well. Usually the advice for nested containers is to pass in the host's docker socket into the container. But that would break the outer container isolation completely, since access to the docker daemon is equivalent to root access on the host. With sysbox it's trivial to run a nested docker instance inside the outer container. I haven't tried it with podman yet though. In theory sysbox is just another OCI runtime, but there's probably some tinkering required to get it to work.</p>
]]></description><pubDate>Mon, 13 Jul 2026 18:08:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48896462</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48896462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48896462</guid></item><item><title><![CDATA[New comment by mbid in "A way to exclude sensitive files issue still open for OpenAI Codex"]]></title><description><![CDATA[
<p>Yeah I should add a video to the README.<p>Have you tried running `rumpel codex foo123` in one of your repositories, asking it to commit something, then `rumpel merge foo123` to get the changes back to your local checkout? Use a different terminal for the merge command, or detach from the codex session with `ctrl-a d`. You can also look at the commit first with `rumpel review foo123`, or get a shell inside the agent environment via `rumpel enter foo123`.</p>
]]></description><pubDate>Sun, 28 Jun 2026 14:10:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48707417</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48707417</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48707417</guid></item><item><title><![CDATA[New comment by mbid in "A way to exclude sensitive files issue still open for OpenAI Codex"]]></title><description><![CDATA[
<p>I recently got the tool I use to orchestrate agents in (remote/secure) devcontainers open-sourced at work to solve this properly: <a href="https://github.com/nvidia/rumpelpod" rel="nofollow">https://github.com/nvidia/rumpelpod</a><p>As others here have pointed out, it's exceedingly unlikely that a blocklist like proposed in the issue would ever be complete. You shouldn't allow agents direct yolo-access to your machine if it has sensitive data.<p>Codex works particularly well as a remote agent harness because of its client-server architecture: The server component runs in the container, which might be remote, while the client runs locally. So, in contrast to e.g. the claude cli where the frontend also runs remotely, there's no lag when you write/edit prompts.</p>
]]></description><pubDate>Sun, 28 Jun 2026 13:47:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48707230</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48707230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48707230</guid></item><item><title><![CDATA[New comment by mbid in "Spain has become one of Europe’s cheapest power markets"]]></title><description><![CDATA[
<p>What's the point?<p>Sweden has lots of potential for long-term energy storage as hydro power, which makes wind power viable. Northern Germany is mostly flat and there's not even close to enough storage capacity (on the order of ~weeks) to make a wind powered grid economically competitive.</p>
]]></description><pubDate>Mon, 11 May 2026 12:31:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48094144</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48094144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48094144</guid></item><item><title><![CDATA[New comment by mbid in "Spain has become one of Europe’s cheapest power markets"]]></title><description><![CDATA[
<p>How many solar panels does the UK produce?</p>
]]></description><pubDate>Mon, 11 May 2026 12:24:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48094082</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48094082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48094082</guid></item><item><title><![CDATA[New comment by mbid in "Spain has become one of Europe’s cheapest power markets"]]></title><description><![CDATA[
<p>> similar as in Sweden<p>Sweden's electricity is ~40% hydro, ~27% nuclear and ~23% wind. How is this in any way comparable to Northern Germany?</p>
]]></description><pubDate>Mon, 11 May 2026 11:19:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48093559</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48093559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48093559</guid></item><item><title><![CDATA[New comment by mbid in "Spain has become one of Europe’s cheapest power markets"]]></title><description><![CDATA[
<p>Not sure if you're serious, but this was not viable in the 2010s, or even today in Germany at all because of Germany's high latitude: No matter how efficient solar panels become, they will always be more economical to operate closer to the equator.  Anyway, the Chinese factories for the most energy intensive parts of solar panel production mostly run on coal power.</p>
]]></description><pubDate>Mon, 11 May 2026 10:34:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48093223</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48093223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48093223</guid></item><item><title><![CDATA[New comment by mbid in "Spain has become one of Europe’s cheapest power markets"]]></title><description><![CDATA[
<p>Solar panel production is extremely energy intensive. Germany has one of the highest energy costs in the world. So there was no way for Germany to maintain a competitive solar panel industry.</p>
]]></description><pubDate>Mon, 11 May 2026 07:11:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48091942</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=48091942</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48091942</guid></item><item><title><![CDATA[New comment by mbid in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>Relevant prior work: <a href="https://github.com/jimblandy/context-switch" rel="nofollow">https://github.com/jimblandy/context-switch</a></p>
]]></description><pubDate>Sun, 26 Apr 2026 07:17:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908134</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47908134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908134</guid></item><item><title><![CDATA[New comment by mbid in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>This is outside of my expertise, but wouldn't multiple threads each submitting a single operation in parallel have the same effect?</p>
]]></description><pubDate>Sun, 26 Apr 2026 07:16:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908130</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47908130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908130</guid></item><item><title><![CDATA[New comment by mbid in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>Right, I think the argument should be that transitioning from a synchronous to asynchronous programming model can improve the performance of a previously CPU/Memory-bound system so that it saturates the IO interface.</p>
]]></description><pubDate>Sat, 25 Apr 2026 19:30:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47903885</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47903885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47903885</guid></item><item><title><![CDATA[New comment by mbid in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>I read this argument ("async is for I/O-bound applications") often, but it makes no sense to me. If your app is I/O bound, how does reducing the work the (already idling!) CPU has to spend on context switching improve the performance of the system?</p>
]]></description><pubDate>Sat, 25 Apr 2026 18:53:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47903633</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47903633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47903633</guid></item><item><title><![CDATA[New comment by mbid in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>How many systems are there that can't just spawn a thread for each task they have to work on concurrently? This has to be a system that is A) CPU or memory bound (since async doesn't make disk or network IO faster) and B) must work on ~tens of thousands of tasks concurrently, i.e. can't just queue up tasks and work on only a small number concurrently. The only meaningful example I can come up with are load balancers, embedded software and perhaps something like browsers. But e.g. an application server implementing a REST API that needs to talk to a database anyway to answer each request doesn't really qualify, since the database connection and the work the database itself does are likely much more resource intensive than the overhead of a thread.</p>
]]></description><pubDate>Sat, 25 Apr 2026 18:32:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47903484</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47903484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47903484</guid></item><item><title><![CDATA[New comment by mbid in "The acyclic e-graph: Cranelift's mid-end optimizer"]]></title><description><![CDATA[
<p>I believe these ideas are much more mature and better explored for code gen, but similar techniques are useful also in the frontend of compilers, in the type checker. There's a blog post [1] by Niko Matsakis where he writes about adding equalities to Datalog so that Rust's trait solver can be encoded in Datalog. Instead of desugaring equality into a special binary predicate to normal Datalog as Niko suggests, it can be also be implemented by keeping track of equality with union-find and then propagating equality through relations, eliminating now-duplicate rows recursively. The resulting system generalizes both Datalog and e-graphs, since the functionality axiom ("if f(x) = y and f(x) = z, then y = z") is a Datalog rule with equality if you phrase it in terms of the graph of functions.<p>Systems implementing this are egglog [2] (related to egg mentioned in the article) and (self-plug, I'm the author) eqlog [3]. I've written about implementing Hindley-Milner type systems here: [4]. But I suspect that Datalog-based static analysis tools like CodeQL would also benefit from equalities/e-graphs.<p>[1] <a href="https://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/" rel="nofollow">https://smallcultfollowing.com/babysteps/blog/2017/01/26/low...</a><p>[2] <a href="https://github.com/egraphs-good/egglog" rel="nofollow">https://github.com/egraphs-good/egglog</a><p>[3] <a href="https://github.com/eqlog/eqlog" rel="nofollow">https://github.com/eqlog/eqlog</a><p>[4] <a href="https://www.mbid.me/posts/type-checking-with-eqlog-polymorphism/" rel="nofollow">https://www.mbid.me/posts/type-checking-with-eqlog-polymorph...</a></p>
]]></description><pubDate>Tue, 14 Apr 2026 18:01:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47768999</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=47768999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47768999</guid></item><item><title><![CDATA[New comment by mbid in "SQL, Homomorphisms and Constraint Satisfaction Problems"]]></title><description><![CDATA[
<p>If you're interested in the details, you might want to have a look at papers [1] or [2].<p>You can add existentials in this framework, which basically means that the lifting problems mentioned above don't need to have <i>unique</i> solutions. But as you say, then the "minimal" databases aren't determined uniquely up to isomorphism anymore. So the result of Datalog evaluation now depends on the order in which you apply rules.<p>If I recall correctly, then [3] discusses a logic corresponding to accessible categories (Datalog + equality corresponds to locally presentable categories) which includes the the theory of fields. The theory of fields involves the negation 0 != 1, so perhaps that might give you a nicer way to incorporate negations without stratification.<p>[1] <a href="https://www.mbid.me/eqlog-semantics/" rel="nofollow">https://www.mbid.me/eqlog-semantics/</a><p>[2] <a href="https://arxiv.org/abs/2205.02425" rel="nofollow">https://arxiv.org/abs/2205.02425</a><p>[3] <i>Locally presentable and accessible categories</i>, <a href="https://www.cambridge.org/core/books/locally-presentable-and-accessible-categories/94CB48295B6AF097FC232313A57BDE17" rel="nofollow">https://www.cambridge.org/core/books/locally-presentable-and...</a></p>
]]></description><pubDate>Thu, 21 Nov 2024 12:03:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=42203479</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=42203479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42203479</guid></item><item><title><![CDATA[New comment by mbid in "SQL, Homomorphisms and Constraint Satisfaction Problems"]]></title><description><![CDATA[
<p>I actually started working on Eqlog because I wanted to use it to implement a type checker. You might want to skim the posts in my series on implementing a Hindley-Milner type system using Eqlog, starting here [1]. The meat is in posts 3 - 5.<p>The type checker of Eqlog is mostly implement in Eqlog itself [2]. The general idea is that your parser populates a Database with syntax nodes, which are represented as `...Node` types in the Eqlog program at [2], and then you propagate type information with Datalog/Eqlog evaluation. Afterwards, you check whether the Database contains certain patterns that you want to rule out, e.g. a variable that doesn't have a type [3].<p>There are still some unsolved problems if you're interested in writing the whole type checker in Datalog. For example, variable lookup requires quadratic memory when implemented in Datalog. I mention this and a possible solution at [4]. However, Datalog as is can probably still be useful for some subtasks during type checking. For example, the Rust compiler uses Datalog in some parts of the type checker I believe. Reach out via e.g. github to mbid@ if you'd like to discuss in more detail.<p>Regarding optimization you probably want to talk with somebody working with egglog, they have a dedicated Zulip [5]. I'd imagine that for prql you want to encode the algebraic rules of pipeline transformations, e.g. associativity of filter over append. Given the query AST, eqlog or egglog would give you all equivalent ways to write the query according to your rules. You'd then select the representation you estimate to be the most performant based on a score you assign to (sub)expression.<p>[1] <a href="https://www.mbid.me/posts/type-checking-with-eqlog-parsing/" rel="nofollow">https://www.mbid.me/posts/type-checking-with-eqlog-parsing/</a><p>[2] <a href="https://github.com/eqlog/eqlog/blob/9efb4d3cb3d9b024d681401b7fe46bb9f37fac02/eqlog-eqlog/src/eqlog.eqlog">https://github.com/eqlog/eqlog/blob/9efb4d3cb3d9b024d681401b...</a><p>[3] <a href="https://github.com/eqlog/eqlog/blob/9efb4d3cb3d9b024d681401b7fe46bb9f37fac02/eqlog/src/semantics/mod.rs#L235-L256">https://github.com/eqlog/eqlog/blob/9efb4d3cb3d9b024d681401b...</a><p>[4] <a href="https://www.mbid.me/posts/dependent-types-for-datalog/#morphisms" rel="nofollow">https://www.mbid.me/posts/dependent-types-for-datalog/#morph...</a><p>[5] <a href="https://egraphs.zulipchat.com" rel="nofollow">https://egraphs.zulipchat.com</a></p>
]]></description><pubDate>Thu, 21 Nov 2024 11:49:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=42203381</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=42203381</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42203381</guid></item><item><title><![CDATA[New comment by mbid in "SQL, Homomorphisms and Constraint Satisfaction Problems"]]></title><description><![CDATA[
<p>The post mentions the idea that querying a database D can be understood algebraically as enumerating all morphisms Q -> D, where Q is the "classifying" database of the query, i.e. a minimal database instance that admits a single "generic" result of the query. You can use this to give a neat formulation of Datalog evaluation. A Datalog rule then corresponds a morphism P -> H, where P is the classifying database instance of the rule body and H is the classifying database instance for matches of both body and head. For example, for the the transitivity rule<p><pre><code>  edge(x, z) :- edge(x, y), edge(y, z).
</code></pre>
you'd take for P the database instance containing two rows (a_1, a_2) and (a_2, a_3), and the database instance H contains additionally (a_1, a_3). Now saying that a Database D satisfies this rule means that every morphism P -> D (i.e., every match of the premise of the rule) can be completed to a commuting diagram<p><pre><code>  P --> D
  |    ^
  |   /
  ⌄  /
  Q 
</code></pre>
where the additional map is the arrow Q -> D, which corresponds to a match of both body and head.<p>This kind of phenomenon is known in category theory as a "lifting property", and there's rich theory around it. For example, you can show in great generality that there's always a "free" way to add data to a database D so that it satisfies the lifting property (the orthogonal reflection construction/the small object argument). Those are the theoretical underpinnings of the Datalog engine I'm sometimes working on [1], and there they allow you to prove that Datalog evaluation is also well-defined if you allow adjoining new elements during evaluation in a controlled way. I believe the author of this post is involved in the egglog project [2], which might have similar features as well.<p>[1] <a href="https://github.com/eqlog/eqlog">https://github.com/eqlog/eqlog</a>
[2] <a href="https://github.com/egraphs-good/egglog">https://github.com/egraphs-good/egglog</a></p>
]]></description><pubDate>Wed, 20 Nov 2024 19:11:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=42197125</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=42197125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42197125</guid></item><item><title><![CDATA[Stop using REST for state synchronization (2024)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.mbid.me/posts/stop-using-rest-for-state-synchronization/">https://www.mbid.me/posts/stop-using-rest-for-state-synchronization/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41617793">https://news.ycombinator.com/item?id=41617793</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 22 Sep 2024 15:38:30 +0000</pubDate><link>https://www.mbid.me/posts/stop-using-rest-for-state-synchronization/</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=41617793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41617793</guid></item><item><title><![CDATA[New comment by mbid in "I don't always use LaTeX, but when I do, I compile to HTML (2013)"]]></title><description><![CDATA[
<p>For me, the main problem with most tools that render to HTML was that they don't support all math typesetting libraries that latex supports. I used to work with category theory, where it's common to use the tikz-cd library to typeset commutative diagrams. tikz-cd is based on tikz, which is usually not supported for HTML output.<p>But apart from math typesetting, my latex documents were usually very simple: They just used sections, paragraphs, some theorem environments and references to those, perhaps similar to what the stack project uses [3]. Simple latex such as this corresponds relatively directly to HTML (except for the math formulas of course). But many latex to html tools try to implement a full tex engine, which I believe means that they lower the high-level constructs to something more low level (or that's at least my understanding). This results in very complicated HTML documents from even simple latex input documents.<p>So what would've been needed for me was a tool that can (1) render all math that pdflatex can render, but that apart from math only needs to (2) support a very limited set of other latex features. In a hacky way, (1) can be accomplished by simply using pdflatex to render each formula of a latex document in isolation to a separate pdf, then converting this pdf to svg, and then incuding this svg in the output HTML in the appropriate position. And (2) is simply a matter of parsing this limited subset of latex. I've prototyped a tool like that here [1]. An example output can be found here [2].<p>Of course, SVGs are not exactly great for accessibility. But my understanding is that many blind mathematicians are very good at reading latex source code, so perhaps an SVG with alt text set to the latex source for that image is already pretty good.<p>[1] <a href="https://github.com/mbid/latex-to-html">https://github.com/mbid/latex-to-html</a><p>[2] <a href="https://www.mbid.me/lcc-model/" rel="nofollow">https://www.mbid.me/lcc-model/</a><p>[3] <a href="https://stacks.math.columbia.edu/" rel="nofollow">https://stacks.math.columbia.edu/</a></p>
]]></description><pubDate>Fri, 26 Jan 2024 10:18:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=39140934</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=39140934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39140934</guid></item><item><title><![CDATA[New comment by mbid in "MathJax: Beautiful and accessible math in all browsers"]]></title><description><![CDATA[
<p>If you're going to send out math as SVGs anyway, you can also just use your normal latex to PDF renderer (e.g. pdflatex) on each formula, and then convert the output PDFs to SVGs. That way, you get the same output you'd get with latex, and you can also use latex packages that aren't supported by MathJax (e.g. tikz-cd). I've prototyped a latex to html converter [1] based on that approach, but it's probably not ready for serious use. Here's an example: <a href="https://www.mbid.me/lcc-model/" rel="nofollow noreferrer">https://www.mbid.me/lcc-model/</a><p>[1] <a href="https://github.com/mbid/latex-to-html">https://github.com/mbid/latex-to-html</a></p>
]]></description><pubDate>Sat, 14 Oct 2023 09:01:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=37879074</link><dc:creator>mbid</dc:creator><comments>https://news.ycombinator.com/item?id=37879074</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37879074</guid></item></channel></rss>