<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: sgeisenh</title><link>https://news.ycombinator.com/user?id=sgeisenh</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 19 Jun 2026 23:57:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=sgeisenh" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by sgeisenh in "Introduction – Rust for Python Programmers"]]></title><description><![CDATA[
<p>This closely resembles implicit conversion from C++ and in many serious codebases it is considered poor practice because it leads to a <i>lot</i> of hidden control flow.<p>I think Rust strikes a nice balance but there’s enough magic that some people still get frustrated. Following traits can get tedious at times.</p>
]]></description><pubDate>Sat, 06 Jun 2026 13:40:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48425028</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=48425028</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48425028</guid></item><item><title><![CDATA[New comment by sgeisenh in "Is Rust faster than C?"]]></title><description><![CDATA[
<p>Yes, for most real-world examples JavaScript is significantly slower; JIT isn’t free and can be very sensitive to small code changes, you also have to consider the garbage collector.<p>Speed is also not the only metric, Rust and C enable much better control over memory usage. In general, it is easier to write a memory-efficient program in Rust or C than it is in JS.</p>
]]></description><pubDate>Wed, 14 Jan 2026 14:05:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46616205</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=46616205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46616205</guid></item><item><title><![CDATA[New comment by sgeisenh in "Fun with uv and PEP 723"]]></title><description><![CDATA[
<p>Similar to ruff, uv mostly gathers ideas from other tools (with strong opinions and a handful of thoughtful additions and adjustments) and implements them in Rust for speed improvements.<p>Interestingly, the speed is the main differentiator from existing package and project management tools. Even if you are using it as a drop-in replacement for pip, it is just so much faster.</p>
]]></description><pubDate>Tue, 24 Jun 2025 21:29:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44371276</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=44371276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44371276</guid></item><item><title><![CDATA[New comment by sgeisenh in "TPU Deep Dive"]]></title><description><![CDATA[
<p>This is an oversimplification. When distributed, the nondeterministic order of additions during reductions can produce nondeterministic results due to floating point error.<p>It’s nitpicking for sure, but it causes real challenges for reproducibility, especially during model training.</p>
]]></description><pubDate>Sun, 22 Jun 2025 12:54:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44346539</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=44346539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44346539</guid></item><item><title><![CDATA[New comment by sgeisenh in "Things Zig comptime won't do"]]></title><description><![CDATA[
<p>Lifetime annotations can be burdensome when trying to avoid extraneous copies and they feel contagious (when you add a lifetime annotation to a frequently used type, it bubbles out to anything that uses that type unless you're willing to use unsafe to extend lifetimes). The solutions to this problem (tracking indices instead of references) lose a lot of benefits that the borrow checker provides.<p>The aliasing rules in Rust are also pretty strict. There are plenty of single-threaded programs where I want to be able to occasionally read a piece of information through an immutable reference, but that information can be modified by a different piece of code. This usually indicates a design issue in your program but sometimes you just want to throw together some code to solve an immediate problem. The extra friction from the borrow checker makes it less attractive to use Rust for these kinds of programs.</p>
]]></description><pubDate>Sun, 20 Apr 2025 19:35:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43745963</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=43745963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43745963</guid></item><item><title><![CDATA[New comment by sgeisenh in "Levels of configuration languages"]]></title><description><![CDATA[
<p>> Don't waste time on discussions within a level.<p>I disagree with this. YAML has too many footguns (boolean conversions being the first among them) not to mention it is a superset of JSON. Plain old JSON or TOML are much simpler.</p>
]]></description><pubDate>Sat, 12 Apr 2025 22:30:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=43668419</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=43668419</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43668419</guid></item><item><title><![CDATA[Resource Management and Generators in Python]]></title><description><![CDATA[
<p>Article URL: <a href="https://samgeo.codes/python-generator-cleanup/">https://samgeo.codes/python-generator-cleanup/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40963080">https://news.ycombinator.com/item?id=40963080</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 14 Jul 2024 20:38:43 +0000</pubDate><link>https://samgeo.codes/python-generator-cleanup/</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=40963080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40963080</guid></item><item><title><![CDATA[New comment by sgeisenh in "A write-ahead log is not a universal part of durability"]]></title><description><![CDATA[
<p>Thanks for the quick response, and for the nice write up. I thoroughly enjoy the python-like pseudocode, it was the main reason I was able to pick that out reasonably quickly!</p>
]]></description><pubDate>Mon, 01 Jul 2024 13:23:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=40845639</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=40845639</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40845639</guid></item><item><title><![CDATA[New comment by sgeisenh in "A write-ahead log is not a universal part of durability"]]></title><description><![CDATA[
<p>In the pseudocode snippet that introduces a WAL, the semaphores are signaled before the fsync occurs. This seems like a mistake but maybe there’s a good reason to do this that I am missing?<p>Edit: it looks like this is the case in the first batched fsync example, as well.</p>
]]></description><pubDate>Mon, 01 Jul 2024 13:19:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=40845609</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=40845609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40845609</guid></item><item><title><![CDATA[New comment by sgeisenh in "From bare metal to a 70B model: infrastructure set-up and scripts"]]></title><description><![CDATA[
<p>I did some of the work in the post (though mostly post-setup).<p>Speaking in generalities: the initial failure rates of these units are much higher than those of traditional non-GPU machines.<p>In general, the failure rates decline significantly during the operating life of hardware. So you deal with a bunch of issues up front that you try to resolve to reach a much more stable state.<p>There was a recent Meta engineering blog post that echoed some of our own experiences wrangling GPUs and high performance networks: <a href="https://engineering.fb.com/2024/06/12/data-infrastructure/training-large-language-models-at-scale-meta/" rel="nofollow">https://engineering.fb.com/2024/06/12/data-infrastructure/tr...</a></p>
]]></description><pubDate>Tue, 25 Jun 2024 18:21:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=40791766</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=40791766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40791766</guid></item><item><title><![CDATA[New comment by sgeisenh in "Use Rails"]]></title><description><![CDATA[
<p>You may want to add some moderation features or otherwise increase friction for adding job postings for www.firmwarejobs.com because the very first listing that I see when I load the page is "Doing your mom".</p>
]]></description><pubDate>Tue, 07 May 2024 16:18:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=40287660</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=40287660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40287660</guid></item><item><title><![CDATA[New comment by sgeisenh in "We need to talk about parentheses (2020)"]]></title><description><![CDATA[
<p>I think it's more subtle than that. Rust has a notion of non-lexical lifetimes (<a href="https://rust-lang.github.io/rfcs/2094-nll.html" rel="nofollow">https://rust-lang.github.io/rfcs/2094-nll.html</a>) and the compiler often completely avoids the use of the stack for small, trivially droppable values, regardless of their lexical scope. In some ways, `let` in Rust is a more C-like variant of the `let ... in ... end` construct from OCaml.<p>Not to mention that you can always introduce a new lexical scope with `{ ... }` in Rust code.</p>
]]></description><pubDate>Mon, 12 Feb 2024 19:04:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=39348855</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=39348855</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39348855</guid></item><item><title><![CDATA[New comment by sgeisenh in "Tom Scott: After ten years, it's time to stop making videos [video]"]]></title><description><![CDATA[
<p>Stuff Made Here</p>
]]></description><pubDate>Mon, 01 Jan 2024 18:23:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=38833974</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=38833974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38833974</guid></item><item><title><![CDATA[New comment by sgeisenh in "Ask HN: Share your favorite software blog posts of 2023"]]></title><description><![CDATA[
<p>Usually from GC. Anthony Sottile has a nice explanatory video: <a href="https://youtu.be/sdmcCQ7Em04?si=9PObAJixALFiZ9vd" rel="nofollow noreferrer">https://youtu.be/sdmcCQ7Em04?si=9PObAJixALFiZ9vd</a></p>
]]></description><pubDate>Tue, 26 Dec 2023 06:28:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=38769361</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=38769361</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38769361</guid></item><item><title><![CDATA[New comment by sgeisenh in "HATEOAS: Hypermedia as the Engine of Application State"]]></title><description><![CDATA[
<p>Client means browser in this context.</p>
]]></description><pubDate>Tue, 01 Aug 2023 20:33:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=36962363</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=36962363</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36962363</guid></item><item><title><![CDATA[New comment by sgeisenh in "What's up, Python? The GIL removed, a new compiler, optparse deprecated"]]></title><description><![CDATA[
<p>Unfortunately the generational GC modifies bits all over the heap, so you have to use some tricks to really leverage copy on write (as the commenter alludes to).</p>
]]></description><pubDate>Mon, 31 Jul 2023 00:26:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=36937542</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=36937542</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36937542</guid></item><item><title><![CDATA[New comment by sgeisenh in "Problems of C, and how Zig addresses them"]]></title><description><![CDATA[
<p>I don't think I fully understand the analogy.<p>Typescript has almost identical semantics to Javascript but adds typing syntax to improve developer experience and make it easier to manage a large-scale JS codebase.<p>Zig is a fundamentally different language than C that has a lot of new features. Two great examples are comptime and allocators which have complements in C, but are really very different from what C provides.<p>If you're suggesting that zig is aiming to provide a C alternative with better ergonomics, then I agree; but zig and C have a lot more differences than Typescript and Javascript.</p>
]]></description><pubDate>Mon, 03 Jul 2023 15:36:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=36574423</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=36574423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36574423</guid></item><item><title><![CDATA[New comment by sgeisenh in "Principles of Imperative Computation"]]></title><description><![CDATA[
<p>There is an option to circumvent the prerequisites as a non-major:<p><pre><code>  You may also get permission from an advisor if you performed very high on the CS Assessment on Canvas.
</code></pre>
I took the course over the summer as a music major and subsequently took several other CS courses as a music major after having a discussion with an advisor in the CS department. I ended up finishing a CS degree a year after my music degree. CMU was really great about providing opportunities for students to explore courses outside of their majors, especially over the summer.</p>
]]></description><pubDate>Sun, 25 Jun 2023 16:05:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=36469686</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=36469686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36469686</guid></item><item><title><![CDATA[New comment by sgeisenh in "Principles of Imperative Computation"]]></title><description><![CDATA[
<p>"Principles of Imperative Programming" is a misnomer.<p>The course is really about developing techniques for reasoning about low-level software. You build up abstractions in C by leveraging contracts and writing proofs of correctness based on those contracts.<p>Explore the "Learning Objectives" section to read about what the course really entails: <a href="https://www.cs.cmu.edu/~15122/about.shtml#LO" rel="nofollow noreferrer">https://www.cs.cmu.edu/~15122/about.shtml#LO</a><p>This was the first computer science course that I took at CMU and it was absolutely mind blowing for me. I had previously taken AP CS and had played around with making games in flash and writing little programs for my graphing calculator. But this course taught me how to reason about my programs (and why that might be valuable, to begin with).</p>
]]></description><pubDate>Sun, 25 Jun 2023 15:59:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=36469614</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=36469614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36469614</guid></item><item><title><![CDATA[New comment by sgeisenh in "My thoughts on OCaml"]]></title><description><![CDATA[
<p>Especially if modular implicits land, you get the best of both functions and typeclasses.<p>Pretty weird way to start the post.</p>
]]></description><pubDate>Tue, 25 Apr 2023 13:55:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=35700520</link><dc:creator>sgeisenh</dc:creator><comments>https://news.ycombinator.com/item?id=35700520</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35700520</guid></item></channel></rss>