<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: apple1417</title><link>https://news.ycombinator.com/user?id=apple1417</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 18 Aug 2026 13:42:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=apple1417" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by apple1417 in "RISC-V: They Should Have Known Better"]]></title><description><![CDATA[
<p>I worked on a project porting from an STM32L073 to a STM32U073, which management were assured was a complete drop in replacement. Well, it was only in the sense that you could drop one onto the old PCB. It became a running joke how many software compatibilities we ran into. My favourite was an "LCD clock disable" bit became "LCD clock enable". And this was for a specifically chip designed to be an easy replacement.</p>
]]></description><pubDate>Sat, 15 Aug 2026 17:50:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49312652</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=49312652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49312652</guid></item><item><title><![CDATA[New comment by apple1417 in "GitHub has alternatives, but no replacement"]]></title><description><![CDATA[
<p>Last time I looked into self hosting Windows CI, it seemed like everything kind of expected you to install all your tools ahead of time, rather than anything containerised. I assume Nix helps with that? Are there any docs you can point me at?</p>
]]></description><pubDate>Sat, 01 Aug 2026 17:33:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49136507</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=49136507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49136507</guid></item><item><title><![CDATA[New comment by apple1417 in "Having your insulin pump die while you're on vacation"]]></title><description><![CDATA[
<p>>> the Tandem tslim X2 requires the user to "prime" the pump tubing with 10 units of insulin every time the pump shuts down or the cartridge is replaced.<p>> This happens with every pump in one way or another to avoid getting air instead of insulin<p>The tandem doesn't allow you to finish priming before it's used 10u. Even if you know it's fine, and can see drops of insulin coming out immediately, you've got to wait until it reaches 10u first. I took the author's complaint to be more about that.<p>I've only had my battery die a couple of times, and I use a fresh line every cartridge, so I've only found it mildy annoying. If you're American and often reusing them, I could see it being more grating.</p>
]]></description><pubDate>Mon, 01 Jun 2026 07:27:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48353642</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=48353642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48353642</guid></item><item><title><![CDATA[New comment by apple1417 in "Ghidra by NSA"]]></title><description><![CDATA[
<p>Yup. It was actually an openjdk crash, which was extra interesting.<p>I figured I probably could remove some passes, but being a lite user I don't really know/didn't want to spend the time learning how important each one is and how long they take. Ida's defaults were just better.</p>
]]></description><pubDate>Mon, 16 Feb 2026 16:21:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47036915</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=47036915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47036915</guid></item><item><title><![CDATA[New comment by apple1417 in "Ghidra by NSA"]]></title><description><![CDATA[
<p>Leading this by saying I've only used Ida free, I can't comment on Ida pro. I'm also a very lite user of both, I give name functions/vars, save bookmarks, and occasionally work out custom types, and that's about it, none of the real fancy stuff.<p>I was recently trying to analyse a 600mb exe (denuvo/similar). I wasted a week after ghidra crashed 30h+ in multiple times. A seperate project with a 300mb exe took about 5h, so there's some horrible scaling going on. So I tried out Ida for the first time, and it finished in less than an hour. Faced with having decomp vs not, I started learning how to use it.<p>So first difference, given the above, Ida is far far better at interrupting tasks/crash recovery. Every time ghidra crashed I was left with nothing, when Ida crashes you get a prompt to recover from autosave. Even if you don't crash, in general it feels like Ida will let you interrupt a task and still get partial results which you might even be able to pick back up from later, while ghidra just leaves you with nothing.<p>In terms of pure decomp quality, I don't really think either wins, decomp is always awkward, it's awkward in different ways for each. I prefer ghidra's, but that might just be because I've used it much longer. Ida does do better at suggesting function/variable names - if a variable is passed to a bunch of functions taking a GameManager*, it might automatically call it game_manager.<p>When defining types, I far prefer ida's approach of just letting me write C/C++. Ghidra's struct editor is awkward, and I've never worked out a good way of dealing with inheritance. For defining functions/args on the other hand, while Ida gives you a raw text box it just doesn't let you change some things? There I prefer the way ghidra does it, I especially like it showing what registers each arg is assigned to.<p>Another big difference I've noticed between the two is ghidra seems to operate on more of a push model, while Ida is more of a pull model - i.e. when you make a change, ghidra tends to hang for a second propagating it to everything referencing it, while Ida tries pulling the latest version when you look at the reference? I have no idea if this is how they actually work internally, it's just what it feels like. Ida's pull model is a lot more responsive on a large exe, however multiple times I've had some decomp not update after editing one of the functions it called.<p>Overall, I find Ida's probably slightly better. I'm not about to pay for Ida pro though, and I'm really uneasy about how it uploads all my executables to do decomp. While at the same time, ghidra is proper FOSS, and gives comparable results (for small executables). So I'll probably stick with ghidra where I can.</p>
]]></description><pubDate>Mon, 16 Feb 2026 16:11:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47036793</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=47036793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47036793</guid></item><item><title><![CDATA[New comment by apple1417 in "Threat actors expand abuse of Microsoft Visual Studio Code"]]></title><description><![CDATA[
<p>When I used it, the one use case I used it was to automatically launch a Jekyll server - if I'm working on a site I'm almost certainly going to want to look at my changes in the browser. Now that I've switched I just run one extra command, it wasn't a big saving, but it was kind of nice.</p>
]]></description><pubDate>Thu, 22 Jan 2026 11:26:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46717823</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=46717823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46717823</guid></item><item><title><![CDATA[New comment by apple1417 in "You can't fool the optimizer"]]></title><description><![CDATA[
<p>The MSVC linker has a feature where it will merge byte-for-byte identical functions. It's most noticeable for default constructors, you might get hundreds of functions which all boil down to "zero the first 32 bytes of this type".<p>A quick google suggests it's called "identical comdat folding"
<a href="https://devblogs.microsoft.com/oldnewthing/20161024-00/?p=94575" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/20161024-00/?p=94...</a></p>
]]></description><pubDate>Wed, 03 Dec 2025 13:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46134071</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=46134071</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46134071</guid></item><item><title><![CDATA[New comment by apple1417 in "Details about the shebang/hash-bang mechanism on various Unix flavours (2001)"]]></title><description><![CDATA[
<p>My most common source of unintentional BOMs is powershell. By default, 'echo 1 > test' writes the raw bytes 'FF FE 31 00 0D 00 0A 00'. Not too likely for that to end up in a shell script though.</p>
]]></description><pubDate>Thu, 20 Nov 2025 11:31:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45991535</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45991535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45991535</guid></item><item><title><![CDATA[New comment by apple1417 in "Problems with C++ exceptions"]]></title><description><![CDATA[
<p>In normal use it's essentially the same yes. The one interesting edge case that might catch some people out is there's actually nothing special about std::exception, you can throw anything, "throw 123;" is valid and would skip any std::exception handlers - but you can also just catch anything with a "catch (...)".</p>
]]></description><pubDate>Wed, 12 Nov 2025 11:55:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45899055</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45899055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45899055</guid></item><item><title><![CDATA[New comment by apple1417 in "The lazy Git UI you didn't know you need"]]></title><description><![CDATA[
<p>I recently started working on a repo which historically had 100+ parallel branches. I've been jumping between a few tools recently trying to find something which handles browsing these sanely - I always liked browsing graphs, but the sheer amount of branches ruins most of them.<p>Currently the best workflow I've worked out is just a plain<p><pre><code>    git log --oneline --graph -- <dir>
</code></pre>
Followed by showing the specific commits. But this doesn't work so well with MRs that touched many files across different dirs. Anyone have suggestions for tools that might handle this better?</p>
]]></description><pubDate>Tue, 11 Nov 2025 07:07:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=45884827</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45884827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45884827</guid></item><item><title><![CDATA[New comment by apple1417 in "Linux gamers on Steam cross over the 3% mark"]]></title><description><![CDATA[
<p>An interesting example was Borderlands 2. The game originally had a native port by Aspyr, which worked quite well. 5 years pass and they release a new update and DLC - but they neglected to update the ports. 5 more years pass, then at some point in the past year or two they just plain removed the native Linux packages. They didn't announce it or anything so not 100% sure when. So these days when you install it you always get the (updated) Windows build under proton.<p>I'm a little sad we lost the native version, but on the other hand running it under proton just works, as I'd been doing for years, and the game would never have been updated otherwise.</p>
]]></description><pubDate>Mon, 03 Nov 2025 11:17:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=45797913</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45797913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45797913</guid></item><item><title><![CDATA[New comment by apple1417 in "Linux gamers on Steam cross over the 3% mark"]]></title><description><![CDATA[
<p>If you have an older game which still uses dx9, dxvk can give a decent little performance boost - even if you're running on Windows. It's kind of magical that <i>adding</i> a translation layer is able to <i>improve</i> performance.<p>In more modern games using dx11/12, I've always noticed a small loss like you'd expect. I haven't properly benchmarked any but I suspect a game with native Vulkan support would do pretty similarly, and might come out on top due to CPU load.</p>
]]></description><pubDate>Mon, 03 Nov 2025 11:01:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45797833</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45797833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45797833</guid></item><item><title><![CDATA[New comment by apple1417 in "S.A.R.C.A.S.M: Slightly Annoying Rubik's Cube Automatic Solving Machine"]]></title><description><![CDATA[
<p>They exist, but one of the problems is they're not particularly good cubes. While it might help you learn the basics, not being able to handle it like a speedcube means they're probably not going to help you get faster.<p><a href="https://m.youtube.com/watch?v=l-TWH5W-1fw" rel="nofollow">https://m.youtube.com/watch?v=l-TWH5W-1fw</a><p><a href="https://exmarscube.com/product/ex-mars-ai-robot-cube/" rel="nofollow">https://exmarscube.com/product/ex-mars-ai-robot-cube/</a><p>That being said, while looking up those links, I found out that, since I got out of the hobby, smart cubes have become a thing, and are made by real speedcube manufacturers.<p><a href="https://www.gancube.com/products/gan-356-i-carry-smart-magic-cube" rel="nofollow">https://www.gancube.com/products/gan-356-i-carry-smart-magic...</a><p>This is an easier problem to solve. I'm not sure if you have to solve it first or if it can identify pieces on power up, but after that it's just tracking rotations, which can be done from the (fixed position) centres alone. But if an actual speedcube manufacturer can already fit those electronics in without comprising performance, I can't imagine it's that much harder to fit some addressable LEDs on some slip-ring-esque connections. Must just not be much of a market.</p>
]]></description><pubDate>Sat, 01 Nov 2025 06:23:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45779628</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45779628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45779628</guid></item><item><title><![CDATA[New comment by apple1417 in "Fil-C: A memory-safe C implementation"]]></title><description><![CDATA[
<p>I'll preface this by saying my experience is with embedded, not kernel, but I can't imagine MMIO is significantly different.<p>There would still be ways to make it work with a more restricted intrinsic, if you didn't want to open up the ability for full pointer forging. At a high level, you're basically just saying "This struct exists at this constant physical address, and doesn't need initialisation". I could imagine a "#define UART zmmio_ptr(UART_Type, 0x1234)" - which perhaps requires a compile time constant address. Alternatively, it's not uncommon for embedded compilers to have a way to force a variable to a physical address, maybe you'd write something like "UART_Type UART __at(0x1234);". I believe this is technically already possible using sections, it's just a massive pain creating one section per struct for dozens and dozens.<p>Unfortunately the way existing code does it is pretty much always "#define UART ((UART_Type*)0x1234)". I feel like trying to identify this pattern is probably too risky a heuristic, so source code edits seem required to me.</p>
]]></description><pubDate>Wed, 29 Oct 2025 06:19:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45743269</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45743269</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45743269</guid></item><item><title><![CDATA[New comment by apple1417 in "A story about bypassing air Canada's in-flight network restrictions"]]></title><description><![CDATA[
<p>On a recent 12h Air New Zealand flight I went on they offered free wifi for everyone. They say you can:<p>- Browse the web.<p>- Send and receive emails and messages.<p>- Check and post to social media<p>In practice I think they just whitelist a few messenger apps. Everything else was unusable - I couldn't even load this site. Only had my phone so couldn't check if I was actually receiving any bytes from other sites, but it at least wasn't immediately blocked.</p>
]]></description><pubDate>Fri, 10 Oct 2025 14:46:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=45539684</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45539684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45539684</guid></item><item><title><![CDATA[New comment by apple1417 in "An opinionated critique of Duolingo"]]></title><description><![CDATA[
<p>2800 day streak here, primarily in Finnish. I haven't been a fan of the app for a long time, but the problem I've always had switching is the question: What else? There might be a thousand different Spanish courses, but for less popular languages there just aren't many choices, the fact that they still host one is great. Yes I haven't really learnt much, it's more maintaining what I do know, but I'd've lost it without.<p>Incidentally I do think Finnish is one of the cases where it could work well. The way I see it the difficulty in learning Finnish is primarily learning an entirely new vocabulary, the grammar and sentence structure isn't that hard, and Duolingo could work well to teach you thousands of new words. The problem is they have a very limited amount of exercises, to the point my phone's auto complete can solve half of them.<p>---<p>Please don't just link me stuff you've found on Google, I've tried them all. My favourite was Yle Kielikoulu, but that's been shut down.</p>
]]></description><pubDate>Wed, 01 Oct 2025 05:19:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45434490</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45434490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45434490</guid></item><item><title><![CDATA[New comment by apple1417 in "We all dodged a bullet"]]></title><description><![CDATA[
<p>I once got a "log into phishing training" email which spoofed the company address. No one even saw the email, it instantly hit the spam filter.<p>Our infra guy then had to argue with them for quite a while to just email from their own domain, and that no, we're weren't going to add their cert to our DNS, and let a third party spoof us (or however that works, idk). Absolutely shocking lack of self awareness.</p>
]]></description><pubDate>Tue, 09 Sep 2025 23:15:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=45190793</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=45190793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45190793</guid></item><item><title><![CDATA[New comment by apple1417 in "I run a full Linux desktop in Docker just because I can"]]></title><description><![CDATA[
<p>Not OP, outside of games I keep a dual boot pretty much exclusively for Visual Studio - imo it's one of the best debuggers I've ever used. I know gdb is just as powerful if not more, but it is so much less ergonomic, even with the different frontends I've tried. Edit and continue for C/C++ is such a killer feature too. I stick away from msbuild or using it as an editors it's purely my debugher.<p>Granted it helps that a lot of the time I need "advanced" debugging relates to msvc/windows specific issues, which while I could run it in wine, it's just easier if I'm on windows anyway.</p>
]]></description><pubDate>Sat, 23 Aug 2025 09:09:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44994543</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=44994543</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44994543</guid></item><item><title><![CDATA[New comment by apple1417 in "How to run an Arduino for years on a battery (2021)"]]></title><description><![CDATA[
<p>On one of the projects I worked on, I brought a PIC16 down to ~20nA - where our fancy meter only went down to 10nA precision. It was completely unnecessary, but I'm still quite proud of it.<p>For more standard cases, the 43uA from the article is roughly the same order of magnitude you'll get from pretty much any micro in sleep mode, after doing your first pass low power optimisation. The stuff I normally work with gets about 10. The thing is just, most of the time, that's low enough already - for this project 2500mAh/43uA = 6 years of sleeping. The bigger factor is the current it consumes while awake - and that's where the Arduino's a bit of a letdown, the stuff I normally use is only in the order of 100uA while awake.</p>
]]></description><pubDate>Sun, 20 Jul 2025 09:50:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=44623456</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=44623456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44623456</guid></item><item><title><![CDATA[New comment by apple1417 in "Hacking Coroutines into C"]]></title><description><![CDATA[
<p>I've worked on several low power projects, while yes we needed an interrupt to wake the processor, they all still used polling for all the actual button handling. At worst the interrupt just set a flag. It's actually kind of amazing how polling turns the main loop into a denounce filter, entirely for free.</p>
]]></description><pubDate>Sun, 13 Jul 2025 20:09:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=44553255</link><dc:creator>apple1417</dc:creator><comments>https://news.ycombinator.com/item?id=44553255</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44553255</guid></item></channel></rss>