<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: jjnoakes</title><link>https://news.ycombinator.com/user?id=jjnoakes</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 10:20:26 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jjnoakes" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jjnoakes in "Microsoft gave FBI set of BitLocker encryption keys to unlock suspects' laptops"]]></title><description><![CDATA[
<p>The same way you know that your browser session secrets, bank account information, crypto private keys, and other sensitive information is never uploaded. That is to say, you don't, really - you have to partially trust Microsoft and partially rely on folks that do black-box testing, network analysis, decompilation, and other investigative techniques on closed-source software.</p>
]]></description><pubDate>Fri, 23 Jan 2026 19:17:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46736559</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=46736559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46736559</guid></item><item><title><![CDATA[New comment by jjnoakes in "The Future of Programming (2013) [video]"]]></title><description><![CDATA[
<p>I view code in many contexts though - diffs in emails, code snippets on web pages, in github's web UI, there are countless ways in which I need to read a piece of code outside of my preferred editor. And it is nicer, in my opinion, to read languages that have visually distinct parts to them. I'm sure it is because I'm used to it, but it really makes it hard to switch to a language that looks so uniform and requires additional tools outside of my brain to take a look at it.</p>
]]></description><pubDate>Wed, 19 Nov 2025 18:33:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45983177</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=45983177</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45983177</guid></item><item><title><![CDATA[New comment by jjnoakes in "Ask HN: A retrofitted C dialect?"]]></title><description><![CDATA[
<p>Safe pockets in ambient unsafety does have benefits though. For example, some code has a higher likelihood of containing undefined behavior (code that manipulates pointers and offsets directly, parsing code, code that deals with complex lifetimes and interconnected graphs, etc), so converting just that code to safe code would have a high ROI.<p>And once you get to the point where a large chunk of code is in safe pockets, any bugs that smell of undefined behavior only require you to look at the code outside of the safe pockets, which hopefully decreases over time.<p>There are also studies that show that newly written code tends to have more undefined behavior due to its age, so writing new code in safe pockets has a lot of benefit there too.</p>
]]></description><pubDate>Tue, 25 Feb 2025 17:47:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=43175020</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=43175020</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43175020</guid></item><item><title><![CDATA[New comment by jjnoakes in "How to add a directory to your PATH"]]></title><description><![CDATA[
<p>An article like this would be better if it didn't gloss over the different bash startup files and when they get loaded.<p>Many times when I help someone debug their shell, the root cause is not understanding what each of those files is for.<p>Adding an echo to the wrong one and not having it check if the shell is interactive can break all sorts of things like scp for example. And in weird and non-obvious ways.</p>
]]></description><pubDate>Mon, 17 Feb 2025 01:44:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43073979</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=43073979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43073979</guid></item><item><title><![CDATA[New comment by jjnoakes in "The Deck: An open-source cross-platform multiplayer card game engine in Flutter"]]></title><description><![CDATA[
<p>I like digital board games for quick setup and cleanup too. It lets us play more games in a session.</p>
]]></description><pubDate>Sun, 09 Feb 2025 03:33:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=42988225</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42988225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42988225</guid></item><item><title><![CDATA[New comment by jjnoakes in "Bitwarden is turning 2FA on by default for new devices"]]></title><description><![CDATA[
<p>If someone is locked out of their password vault, they are likely also locked out of their email...</p>
]]></description><pubDate>Tue, 28 Jan 2025 18:55:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=42856357</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42856357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42856357</guid></item><item><title><![CDATA[New comment by jjnoakes in "Llama.vim – Local LLM-assisted text completion"]]></title><description><![CDATA[
<p>Fill-in-the-middle. If your cursor is in the middle of a file instead of at the end, then the LLM will consider text after the cursor in addition to the text before the cursor. Some LLMs can only look before the cursor; for coding,.ones that can FIM work better (for me at least).</p>
]]></description><pubDate>Thu, 23 Jan 2025 21:56:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42808477</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42808477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42808477</guid></item><item><title><![CDATA[New comment by jjnoakes in "Firebase bill is usually $50, but I was surprised to see a $70k bill in one day"]]></title><description><![CDATA[
<p>I use fly.io. I pre-paid for credits and if they run out, things shut down.<p>No affiliation, just happy to use a provider with actual caps.</p>
]]></description><pubDate>Fri, 17 Jan 2025 03:26:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=42733779</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42733779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42733779</guid></item><item><title><![CDATA[New comment by jjnoakes in "Google is making AI in Gmail and Docs free, but raising the price of Workspace"]]></title><description><![CDATA[
<p>I take a slightly different approach - I usually have AI assist in writing a script that does the task I want to do, instead of AI doing the task directly. I find it is much easier for me to verify the script does what I want and then run it myself to get guaranteed good output, vs verifying the AI output if it did the task directly.<p>I mean if I'm going to proof-read the full task output from the AI, I might as well do the task by hand... but proof-reading a script is much quicker and easier.</p>
]]></description><pubDate>Thu, 16 Jan 2025 00:24:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=42719267</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42719267</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42719267</guid></item><item><title><![CDATA[New comment by jjnoakes in "Meta's memo to employees rolling back DEI programs"]]></title><description><![CDATA[
<p>I'm pretty sure all of the common areas in HOAs that I used to live in were equally owned by all members.</p>
]]></description><pubDate>Sat, 11 Jan 2025 04:30:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=42663306</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42663306</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42663306</guid></item><item><title><![CDATA[New comment by jjnoakes in "Show HN: Onramp Can Compile Doom"]]></title><description><![CDATA[
<p>> Security: Compiler binaries can contain malware and backdoors that insert viruses into programs they compile. Malicious code in a compiler can even recognize its own source code and propagate itself. Recompiling a compiler with itself therefore does not eliminate the threat. The only compiler that can truly be trusted is one that you've bootstrapped from scratch.<p>It is a laudable goal, but without using from-scratch hardware and either running the bootstrap on bare metal or on a from-scratch OS, I think "truly be trusted" isn't quite reachable with an approach that only handles user-space program execution.</p>
]]></description><pubDate>Tue, 31 Dec 2024 18:57:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=42560900</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42560900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42560900</guid></item><item><title><![CDATA[New comment by jjnoakes in "Ada's dependent types, and its types as a whole"]]></title><description><![CDATA[
<p>Memory safety and the borrow checker are useful even in the absence of dynamic memory allocation. This still doesn't bring rust and ada to the same place, but it is important to clarify that piece.</p>
]]></description><pubDate>Sat, 28 Dec 2024 13:46:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531011</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42531011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531011</guid></item><item><title><![CDATA[New comment by jjnoakes in "Advent of Code 2024"]]></title><description><![CDATA[
<p>I have a self-imposed goal of not using third-party libraries for any of the solve logic. It feels more satisfying to do it myself, even if it takes longer.</p>
]]></description><pubDate>Sun, 01 Dec 2024 19:31:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=42290161</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42290161</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42290161</guid></item><item><title><![CDATA[New comment by jjnoakes in "Tk9.0: CGo-free, cross platform GUI toolkit for Go"]]></title><description><![CDATA[
<p>The application menus (like File, Edit, etc) had a built-in way of detaching them when they were expanded so that you could keep them open and place them somewhere convenient on your screen. This was useful if you had to select different menu options frequently.</p>
]]></description><pubDate>Fri, 29 Nov 2024 03:06:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42270442</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42270442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42270442</guid></item><item><title><![CDATA[New comment by jjnoakes in "Stop making me memorize the borrow checker"]]></title><description><![CDATA[
<p>The number of times you shot yourself in  the foot that you know about. Some of those bullets just haven't landed yet. C and C++ give you very interesting foot-guns: sometimes they go off even when you don't touch them (compiler upgrade, dependencies changing, building on a new architecture, ...)</p>
]]></description><pubDate>Sun, 17 Nov 2024 06:05:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42162308</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42162308</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42162308</guid></item><item><title><![CDATA[New comment by jjnoakes in "Unusual Raku Features"]]></title><description><![CDATA[
<p>If you suggest a language here where nothing weird can be done, I bet someone will reply with something weird done in that language.</p>
]]></description><pubDate>Wed, 13 Nov 2024 17:58:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42128355</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42128355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42128355</guid></item><item><title><![CDATA[New comment by jjnoakes in "Dropbox announces 20% global workforce reduction"]]></title><description><![CDATA[
<p>That feature doesn't train the model on customer's data though, unless I'm missing something.<p>I agree it's annoying it was enabled by default in places, but I'm trying to either correct the incorrect "for AI training" part, or find a citation that shows they are actually doing AI training with it.</p>
]]></description><pubDate>Wed, 30 Oct 2024 20:40:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42000013</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=42000013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42000013</guid></item><item><title><![CDATA[New comment by jjnoakes in "Dropbox announces 20% global workforce reduction"]]></title><description><![CDATA[
<p>Citation please, about Dropbox training models with customer data?</p>
]]></description><pubDate>Wed, 30 Oct 2024 18:15:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41998446</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=41998446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41998446</guid></item><item><title><![CDATA[New comment by jjnoakes in "Show HN: Rust Web Framework"]]></title><description><![CDATA[
<p>You could generate a spec for the service and then diff to the expected perhaps.</p>
]]></description><pubDate>Tue, 22 Oct 2024 16:30:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=41916004</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=41916004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41916004</guid></item><item><title><![CDATA[New comment by jjnoakes in "Windows dynamic linking depends on the active code page"]]></title><description><![CDATA[
<p>The macro X turns its argument into a string, but using it on its own means you can't turn other macro values into strings, only macro names.<p><pre><code>    #define F 42
    #define X(s) #s
    X(5)  //  Expands to "5" (as a string literal)
    X(F)  //  Expands to "F" not "42"
</code></pre>
If you add one level of recursive macro expansion, though, that expands the macro argument as well as the macro definition:<p><pre><code>    #define F 42
    #define X(s) #s
    #define S(s) X(s)
    S(5) // "5" as expected
    S(F) // "42" because S(F) expands to X(42) expands to "42"</code></pre></p>
]]></description><pubDate>Fri, 11 Oct 2024 21:07:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=41813748</link><dc:creator>jjnoakes</dc:creator><comments>https://news.ycombinator.com/item?id=41813748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41813748</guid></item></channel></rss>