<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: pittma</title><link>https://news.ycombinator.com/user?id=pittma</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 01 May 2026 20:10:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=pittma" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by pittma in "Beating Google's kernelCTF PoW using AVX512"]]></title><description><![CDATA[
<p>I am not the original author—this is adapted from an implementation by Shay Gueron, the author of that paper I linked, but I do agree that it's cool!</p>
]]></description><pubDate>Fri, 30 May 2025 19:43:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44139349</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=44139349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44139349</guid></item><item><title><![CDATA[New comment by pittma in "Beating Google's kernelCTF PoW using AVX512"]]></title><description><![CDATA[
<p>ymms were used here on purpose! With full-width registers, the IFMA insns have a deleterious effect on frequency, at least in the Icelake timeframe.</p>
]]></description><pubDate>Fri, 30 May 2025 19:21:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44139164</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=44139164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44139164</guid></item><item><title><![CDATA[New comment by pittma in "Beating Google's kernelCTF PoW using AVX512"]]></title><description><![CDATA[
<p>Cool stuff! This method is very similar to how AVX-512-optimized RSA implementations work too, as they also have to do Very Large Exponentiations. This paper[1] covers how RSA does its windowing, which includes the formula showing how the window size can be arbitrary. One additional thing AVX-512 RSA implementations do, though, is store the results of the multiplications for the range [0..2^{window-size}) in a table; then, for each window, that result is retrieved from the table[2] and only the shifting/repositioning has to be done.<p>1. <a href="https://dpitt.me/files/sime.pdf" rel="nofollow">https://dpitt.me/files/sime.pdf</a> (hosted on my domain because it's pulled from a journal)<p>2. <a href="https://github.com/aws/aws-lc/blob/9c8bd6d7b8adccdd8af4242e074633ef09b5ecdf/crypto/fipsmodule/bn/asm/rsaz-2k-avx512.pl#L509">https://github.com/aws/aws-lc/blob/9c8bd6d7b8adccdd8af4242e0...</a></p>
]]></description><pubDate>Fri, 30 May 2025 18:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44138586</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=44138586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44138586</guid></item><item><title><![CDATA[New comment by pittma in "Rewriting my website in plain HTML and CSS"]]></title><description><![CDATA[
<p>I have a pretty elaborate Hakyll site with custom routers and all kinds of junk (<a href="https://dpitt.me" rel="nofollow">https://dpitt.me</a>), but it's an <i>old</i> site that started as Django, then I built it from scratch with Sinatra, and then was Jekyll for years. There really is something special about a well-organized static site. For all the rewrites of this old thing, I can't imagine moving away from static site generation.</p>
]]></description><pubDate>Wed, 15 Jan 2025 00:46:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=42705998</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=42705998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42705998</guid></item><item><title><![CDATA[New comment by pittma in "Why is Idris 2 so much faster than Idris 1?"]]></title><description><![CDATA[
<p>Hm, that's not how I'm reading this. An infinite loop is, by definition, partial. What I'm gathering from this is that that stuckness that the typechecker can encounter in the face of partiality is okay in Idris, that its typechecker just says, "welp, this is as far as I go."</p>
]]></description><pubDate>Tue, 26 May 2020 01:50:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=23306711</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=23306711</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23306711</guid></item><item><title><![CDATA[New comment by pittma in "Why is Idris 2 so much faster than Idris 1?"]]></title><description><![CDATA[
<p>> Totality is orthogonal to dependent types. You can absolutely have non-total programs at the type level: Rust has such programs today in fact!<p>Absolutely, the talk I linked to gets at this to some extent. In rust, partiality causes type checking to fail. You could use it on purpose!<p>> You can have an infinite loop in a total language like Agda or Idris: coinduction is the mechanism.<p>For sure, but the totality checker is appeased by sized-types, or at least that's how I know to do it in Agda. I've heard it can be done without them, but I'm not familiar with the approach. This is what I intended w/r/t structural recursion.<p>> This doesn't make a whole lot of sense to me.<p>This is because, as the authors state, to type check the program is to evaluate it, so before it can run you have proof that it is correct.<p>By opting out I'm more talking about the converse, to opt in when you need it. Kind of the opposite of Idris's %partial directive.<p>> You can be total over IO, and effects do not imply non-totality either.<p>That's fair, you're right. This is poorly stated.</p>
]]></description><pubDate>Tue, 26 May 2020 01:41:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=23306663</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=23306663</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23306663</guid></item><item><title><![CDATA[New comment by pittma in "Why is Idris 2 so much faster than Idris 1?"]]></title><description><![CDATA[
<p>You can, in fact, use traits to do type-level programming in Rust[1], but this is type-level programming; it isn't  /dependent/ types. The biggest "blocker" for using dependent types is that programs must be /total/, because that program has to be evaluated for it to typecheck! If a program is not total, the typechecker has the potential of getting stuck. The two dependently-typed languages I've programmed in, Mostly Agda and a tiny bit of Idris, have totality checkers to aid in this. Generally this means that recursion is only allowed if its structural, and there can be no run-forever loops, i.e., no servers.<p>I think instead, for one of these languages, the ideal would be opt in should you need it. Dependent types are, by their nature, proof carrying[2], and there are times when you want this, but for a general-purpose programming language, also times that you do not. You can't be total over IO (or any effect for that matter), so, yeah, skip it when arg-parsing, but then opt-in when you're processing your financial transactions or actuating your robot.<p>[1] <a href="https://dpitt.me/talks/tt-for-rust/" rel="nofollow">https://dpitt.me/talks/tt-for-rust/</a><p>[2] <a href="http://www.cs.nott.ac.uk/~psztxa/publ/ydtm.pdf" rel="nofollow">http://www.cs.nott.ac.uk/~psztxa/publ/ydtm.pdf</a></p>
]]></description><pubDate>Tue, 26 May 2020 00:06:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=23306170</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=23306170</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23306170</guid></item><item><title><![CDATA[New comment by pittma in "Haskell and Rust"]]></title><description><![CDATA[
<p>> Are you saying there have been studies that show Haskell's type system has not been correlated to higher correctness than say Java or Python, or are you saying you are unaware of any such studies?<p>On the contrary! Consider for instance: "Total Haskell is Reasonable Coq"[1]<p>1. <a href="https://arxiv.org/abs/1711.09286" rel="nofollow">https://arxiv.org/abs/1711.09286</a></p>
]]></description><pubDate>Sat, 09 Nov 2019 21:34:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=21494528</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=21494528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21494528</guid></item><item><title><![CDATA[New comment by pittma in "Using Type-Level Programming in Rust to Make Safer Hardware Abstractions"]]></title><description><![CDATA[
<p>It would appear that I accidentally a link or two.<p><a href="https://github.com/auxoncorp/bounded-registers" rel="nofollow">https://github.com/auxoncorp/bounded-registers</a><p><a href="https://github.com/auxoncorp/tnfilt" rel="nofollow">https://github.com/auxoncorp/tnfilt</a></p>
]]></description><pubDate>Wed, 06 Nov 2019 22:31:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=21468292</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=21468292</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21468292</guid></item><item><title><![CDATA[Using Type-Level Programming in Rust to Make Safer Hardware Abstractions]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.auxon.io/2019/10/25/type-level-registers/">https://blog.auxon.io/2019/10/25/type-level-registers/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=21462926">https://news.ycombinator.com/item?id=21462926</a></p>
<p>Points: 8</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 06 Nov 2019 14:32:49 +0000</pubDate><link>https://blog.auxon.io/2019/10/25/type-level-registers/</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=21462926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21462926</guid></item><item><title><![CDATA[New comment by pittma in "Show HN: Cargo-fel4, Rust tools for working with the seL4 high-assurance kernel"]]></title><description><![CDATA[
<p>feL4 developer here. Happy to field questions, and to note that we'll keep introducing and extending the ergonomics for building complex applications, configuring platforms, and adding hardware support in the coming weeks/months.</p>
]]></description><pubDate>Tue, 05 Jun 2018 18:46:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=17240790</link><dc:creator>pittma</dc:creator><comments>https://news.ycombinator.com/item?id=17240790</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17240790</guid></item></channel></rss>