<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: dfranke</title><link>https://news.ycombinator.com/user?id=dfranke</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Apr 2026 09:28:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dfranke" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dfranke in "Debian opens a can of username worms"]]></title><description><![CDATA[
<p>Yes, I'm aware, and POSIX has many such bugs that make command input or output unavoidably ambiguous if certain unexpected characters are present that they didn't think to prohibit. A lot of the revisions that went into POSIX 2024 were aimed at fixing some of these, such as standardizing find -print0 and xargs -0. The fact that this one got overlooked doesn't mean it's a good idea to make the situation worse and harder for future POSIX revisions to address.</p>
]]></description><pubDate>Fri, 06 Dec 2024 14:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42339870</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=42339870</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42339870</guid></item><item><title><![CDATA[New comment by dfranke in "Debian opens a can of username worms"]]></title><description><![CDATA[
<p>Allowing purely numeric usernames seems like a terrible idea to me, because it creates ambiguity between what's a username and what's a UID. It's common for tools like ls or ps to display a username when one is found and fall back to displaying a UID if it isn't, and similarly tools like chown will accept either a UID or a username and disambiguate based on whether it's numeric or not. Now suppose there's a numeric username that doesn't match its own UID, but does match some other user's UID. It doesn't take a lot of imagination to see how this would lead to vulnerabilities.</p>
]]></description><pubDate>Fri, 06 Dec 2024 13:25:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=42339573</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=42339573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42339573</guid></item><item><title><![CDATA[New comment by dfranke in "Gen Z never learned to read cursive"]]></title><description><![CDATA[
<p>I retrained myself on Barchowski last year. Barchowski and its close cousin Getty-Dubay are italic rather than looped, and a lot easier to read for someone who only ever learned print.</p>
]]></description><pubDate>Sun, 18 Sep 2022 12:18:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=32886921</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=32886921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32886921</guid></item><item><title><![CDATA[New comment by dfranke in "Code Free or Die(): Why Hackers Are So Often Libertarians (2008)"]]></title><description><![CDATA[
<p>Author of the essay here. I did a double take at seeing it posted here because I thought it was completely forgotten, nearly including by myself. I think the actual date of this essay is 2007 or maybe 2006, because I remember writing it from my university computer lab and I was class of '07. Anyway, there's certainly a lot of water under the bridge since then and the political composition of hackerdom today looks nothing like it did 15 years ago. With the growth of the FAANGs there are far more hackers today than there were then, and the younger ones are a lot more likely to be leftists than libertarians. Still, though, when I travel in libertarian circles it's pretty clear to me that hackers are overrepresented there, so I think the reverse remains true as well, even though it's not as dramatic or obvious as it was in the '00s.</p>
]]></description><pubDate>Sat, 13 Aug 2022 01:03:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=32445854</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=32445854</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32445854</guid></item><item><title><![CDATA[New comment by dfranke in "Calling NSA to find your encryption key after a few bits were flipped (2010)"]]></title><description><![CDATA[
<p>It probably wasn't the only thing affected. It's just flipping bits in encryption keys has much more dramatic and obvious effect than flipping other random bits in memory. Flip a bit in a raster image and you get one funny-looking pixel. Flip a bit in an AES key and you completely corrupt all the data handled by that key.</p>
]]></description><pubDate>Sun, 24 Apr 2022 18:29:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=31146785</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=31146785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31146785</guid></item><item><title><![CDATA[New comment by dfranke in "Keyboard lets people type so fast it’s banned from typing competitions"]]></title><description><![CDATA[
<p>Steno devices are well-known to the speed typing community. Some competitions allow them, some don't. You can't bring this to one that doesn't for the same reason you can't bring a F1 to a stock car race.</p>
]]></description><pubDate>Thu, 06 Jan 2022 23:27:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=29832140</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=29832140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29832140</guid></item><item><title><![CDATA[New comment by dfranke in "Freqfs: In-memory filesystem cache for Rust"]]></title><description><![CDATA[
<p>That's what mmap is for.</p>
]]></description><pubDate>Fri, 01 Oct 2021 19:16:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=28722343</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28722343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28722343</guid></item><item><title><![CDATA[New comment by dfranke in "Weird Languages"]]></title><description><![CDATA[
<p>You're not up to your elbows if somebody else has already done the work for you. If the input to your macro is a valid production in Rust, then all the parsing work that's incumbent on the macro author is to write<p><pre><code>    let ast = parse_macro_input!(input as Foo);
</code></pre>
Where foo is some type defined by the `syn` crate and there's one for every production in Rust's grammar. But neither are you <i>limited</i> to those. You can also extend or replace that grammar as you see fit, but in that case the added parsing is on you.</p>
]]></description><pubDate>Sun, 29 Aug 2021 17:01:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=28348416</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28348416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28348416</guid></item><item><title><![CDATA[New comment by dfranke in "Weird Languages"]]></title><description><![CDATA[
<p>Haskell and Rust both pass this. The input doesn't even have to <i>be</i> a production in the source language; you can parse it any way you'd like.</p>
]]></description><pubDate>Sun, 29 Aug 2021 03:00:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=28343712</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28343712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28343712</guid></item><item><title><![CDATA[New comment by dfranke in "Weird Languages"]]></title><description><![CDATA[
<p>Common Lisp macros are precisely "compile time code execution that enables syntax manipulation". If by "runtime generation of code" you mean to include executing that code after it's been generated, that's not macros, that's `eval`.<p>Just as use of `eval` tends to be discouraged in Lisp land, it's not something that a Haskell or Rust programmer would often reach for. But in Haskell, if you really want it, GHC has an API and you can have the whole power of the compiler available to you at runtime. This isn't really a language feature per se, it's literally just linking in the whole compiler and calling it like an ordinary library. I'm not aware of anything similar to that in Rust but I haven't really looked. However, if you're only trying to generate code and not JIT-compile or execute it, the same Rust crates that support compile-time AST manipulation (like `syn` and `quote`) can equally well be used at runtime.</p>
]]></description><pubDate>Sun, 29 Aug 2021 02:22:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=28343519</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28343519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28343519</guid></item><item><title><![CDATA[New comment by dfranke in "Weird Languages"]]></title><description><![CDATA[
<p>Implementing a modern, production-quality compiler is not easy as a baseline, but nothing in the design of OCaml, Haskell, or Rust adds any significant obstacles, relative to Common Lisp, to supporting this feature. Slinging an AST around and dropping it into a quasiquoted template is a well-understood problem. The simplicity of Lisp's syntax is not a prerequisite and hasn't been since the parsing techniques that were developed in the 1970s.<p>Done properly? I can't speak to camlp4, but at least in the case of Haskell and Rust, certainly. Incidentally I just had my first occasion to write a Rust procedural macro last weekend. I had a significantly complex transformation written and working in half a day, learning curve included, and I found it all pretty frictionless.</p>
]]></description><pubDate>Sat, 28 Aug 2021 20:38:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=28341289</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28341289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28341289</guid></item><item><title><![CDATA[New comment by dfranke in "Weird Languages"]]></title><description><![CDATA[
<p>> [Lisp macros] by their nature would be hard to implement properly in a language without turning it into a dialect of Lisp.<p>Camlp4, Template Haskell, and Rust procedural macros all serve as counterexamples to this claim.</p>
]]></description><pubDate>Sat, 28 Aug 2021 16:17:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=28339212</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=28339212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28339212</guid></item><item><title><![CDATA[New comment by dfranke in "Ask HN: for senior positions is it advisable to list side projects on your CV?"]]></title><description><![CDATA[
<p>You should list your side projects if they've been influential in some significant way, e.g., if they've developed a large user base, become a dependency of some other noteworthy project, or changed how other people approach similar problems. If you're merely proud of the code, then don't list them directly; instead, pin those repos on your GitHub profile and link to it from your résumé.</p>
]]></description><pubDate>Thu, 22 Jul 2021 14:27:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=27919258</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=27919258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27919258</guid></item><item><title><![CDATA[New comment by dfranke in "“They introduce kernel bugs on purpose”"]]></title><description><![CDATA[
<p>If there's some deeply legalistic answer explaining how the IRB correctly interpreted their rules to arrive at the exemption decision, I believe it. It'll just go to show the rules are broken.<p>IRBs are like the TSA. Imposing annoyance and red tape on the honest vast-majority while failing to actually filter the 0.0001% of things they ostensibly exist to filter.</p>
]]></description><pubDate>Wed, 21 Apr 2021 14:00:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=26889800</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26889800</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26889800</guid></item><item><title><![CDATA[New comment by dfranke in "“They introduce kernel bugs on purpose”"]]></title><description><![CDATA[
<p>How in the world is conducting behavioral research on kernel maintainers to see how they respond to subtly-malicious patches not "human subject research"?</p>
]]></description><pubDate>Wed, 21 Apr 2021 13:47:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=26889620</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26889620</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26889620</guid></item><item><title><![CDATA[Superluminal NTP]]></title><description><![CDATA[
<p>Article URL: <a href="https://mailarchive.ietf.org/arch/msg/ntp/ofZp5bwlS2mEV9N3_-ptbzznY-U/">https://mailarchive.ietf.org/arch/msg/ntp/ofZp5bwlS2mEV9N3_-ptbzznY-U/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=26654985">https://news.ycombinator.com/item?id=26654985</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 01 Apr 2021 00:07:53 +0000</pubDate><link>https://mailarchive.ietf.org/arch/msg/ntp/ofZp5bwlS2mEV9N3_-ptbzznY-U/</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26654985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26654985</guid></item><item><title><![CDATA[New comment by dfranke in "We created a fake language to root out resume liars"]]></title><description><![CDATA[
<p>Last time I applied for job through a headhunter (2010), they ran my LaTeX resume through an automated .doc converter that destroyed all the formatting and then didn't even attempt to fix any of it. Somehow I still managed to get some interviews, and when I saw the printout on the interviewer's desk I shrieked in horror and handed him one the original paper copies that I'd luckily had the foresight to bring with me.</p>
]]></description><pubDate>Wed, 10 Mar 2021 15:40:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=26412351</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26412351</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26412351</guid></item><item><title><![CDATA[New comment by dfranke in "Show HN: Byztime – Byzantine-fault-tolerant time synchronization"]]></title><description><![CDATA[
<p>So am I! Permissioned blockchains (essentially, as you say, distributed databases) are the motivating use case, but I'm excited to discover what uses other people come up with.</p>
]]></description><pubDate>Thu, 25 Feb 2021 23:49:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=26269881</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26269881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26269881</guid></item><item><title><![CDATA[Show HN: Byztime – Byzantine-fault-tolerant time synchronization]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/akamai-contrib/byztimed">https://github.com/akamai-contrib/byztimed</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=26269729">https://news.ycombinator.com/item?id=26269729</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 25 Feb 2021 23:30:57 +0000</pubDate><link>https://github.com/akamai-contrib/byztimed</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26269729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26269729</guid></item><item><title><![CDATA[New comment by dfranke in "Practical Color Theory for People Who Code (2016)"]]></title><description><![CDATA[
<p>The CIECAM02 and CAM16 color models include a "hue quadrature" correlate from which "redness/greenness" and "yellowness/blueness" can be calculated. I find changing the hue quadrature by 200 (which flips the signs on the latter two quantities) gives results that match my own perception of "complementary" pretty well.</p>
]]></description><pubDate>Tue, 23 Feb 2021 16:07:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=26238910</link><dc:creator>dfranke</dc:creator><comments>https://news.ycombinator.com/item?id=26238910</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26238910</guid></item></channel></rss>