<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: nitros</title><link>https://news.ycombinator.com/user?id=nitros</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 15 Sep 2026 09:04:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=nitros" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>The size of the type name isn't correlative, but the nesting depth of types roughly corresponds with how many function bodies are going to be generated. In the GUI library, the HStack/VStack types are type-parameterized by their children, which results in a new copy of the layout function for each combination of children types.</p>
]]></description><pubDate>Sun, 13 Sep 2026 21:07:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49688703</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49688703</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49688703</guid></item><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>A large part of this project was my personal learning. Ultimately I didn't improve the functionality of the device by a large margin; instead I learned a lot about how these devices are built. If I'd let Claude write replacent firmware it would've all been for naught.</p>
]]></description><pubDate>Sun, 13 Sep 2026 18:00:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49686734</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49686734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49686734</guid></item><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>This is definitely something to be aware of. Installing this firmware definitely invalidates the StVO (though I can always flash the original firmware back). Personally I am morally sound with replacing the firmware of the display unit as the critical functionality is still handled by the motor controller (for example, the brake lever sensors are wired to the motor controller directly, and the display must report the throttle position constantly to not trigger a shutdown); the display unit would need to contain intentionally malicious code to cause problems.</p>
]]></description><pubDate>Sun, 13 Sep 2026 16:35:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49685806</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49685806</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49685806</guid></item><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>With a SWD probe on the cracked open display initially, and this was necessary while I was still writing/porting the peripheral drivers. Once the firmware was stable (and after I'd asserted that it wasn't possible to accidentally brick the scooter) I moved to testing on the real scooter where the only feedback is if things work or not.</p>
]]></description><pubDate>Sun, 13 Sep 2026 16:03:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49685502</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49685502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49685502</guid></item><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>Yep, this is the case. Nine frames are transmitted with the first frame containing a sequence number and the first five bytes, followed by seven frames containing just data, and a final frame containing the last three bytes of data, and a two byte CRC.</p>
]]></description><pubDate>Sun, 13 Sep 2026 15:28:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49685082</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49685082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49685082</guid></item><item><title><![CDATA[New comment by nitros in "Reverse engineering my e-scooter and rewriting the firmware in Rust"]]></title><description><![CDATA[
<p>Heya, I tried using slint first, but slint needs even more flash, and an allocator on top. Just adding slint (with an empty UI) exhausted my binary size limit.</p>
]]></description><pubDate>Sun, 13 Sep 2026 15:25:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49685052</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49685052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49685052</guid></item><item><title><![CDATA[Reverse engineering my E-Scooter and rewriting it in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://bensimms.moe/reverse-engineering-scooter/">https://bensimms.moe/reverse-engineering-scooter/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49613459">https://news.ycombinator.com/item?id=49613459</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 08 Sep 2026 17:26:00 +0000</pubDate><link>https://bensimms.moe/reverse-engineering-scooter/</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49613459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49613459</guid></item><item><title><![CDATA[New comment by nitros in "Ask HN: How do you keep up with HN these days?"]]></title><description><![CDATA[
<p>I find I've not read HN as much over the last two years due to this. I think I see one interesting article a day at most now.</p>
]]></description><pubDate>Sat, 15 Aug 2026 07:08:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49308429</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49308429</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49308429</guid></item><item><title><![CDATA[New comment by nitros in "Launch HN: ProvenMetal (YC S26) delivers circuit boards in days instead of weeks"]]></title><description><![CDATA[
<p>I've used <a href="https://aisler.net/en" rel="nofollow">https://aisler.net/en</a> (based in Aachen) plenty of times. I like their quality and I was able to pull off some stupidly toleranced layouts. (This is as a hobbyist building some one-off circuit boards). I haven't used their assembly service.</p>
]]></description><pubDate>Thu, 06 Aug 2026 17:07:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49199431</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49199431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49199431</guid></item><item><title><![CDATA[New comment by nitros in "Launch HN: ProvenMetal (YC S26) delivers circuit boards in days instead of weeks"]]></title><description><![CDATA[
<p>FYI: Aisler is the PCB manufacturer and assembler (based in Aachen iirc). LibrePCB is CAD software.</p>
]]></description><pubDate>Thu, 06 Aug 2026 17:05:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49199410</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49199410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49199410</guid></item><item><title><![CDATA[New comment by nitros in "Memory safety absolutists"]]></title><description><![CDATA[
<p>> But it turns out there's all sorts of delightful data structures that you can only express with unsafe in Rust. Intrusive doubly linked lists are the coolest thing ever.<p>I don't mean this to be a gotcha, but I think it's important to say that we can have these in rust too! The only difference is that the first thing we have to talk about is you the user can go about using an intrusive collection correctly. I love the cordyceps crate for this. If you want to be able to use your type as a linked list node, you must implement a Linked trait, the documentation of which clearly explains how to use it safely: <a href="https://docs.rs/cordyceps/latest/cordyceps/trait.Linked.html" rel="nofollow">https://docs.rs/cordyceps/latest/cordyceps/trait.Linked.html</a></p>
]]></description><pubDate>Sat, 25 Jul 2026 22:11:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49052174</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=49052174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49052174</guid></item><item><title><![CDATA[New comment by nitros in "What ORMs have taught me: just learn SQL (2014)"]]></title><description><![CDATA[
<p>I really enjoy using Rel8 (<a href="https://rel8.readthedocs.io/" rel="nofollow">https://rel8.readthedocs.io/</a>), so much so that I reimplemented it in Rust (<a href="https://github.com/simmsb/rust-rel8" rel="nofollow">https://github.com/simmsb/rust-rel8</a>).<p>For me I find it's an excellent step up from a plain SQL query builder (with an API such as `select(Foo).join(bar)`) as it lets me both effortlessly perform projections (one can write `(\e -> (e.foo, e.bar) <$> someQuery` to take a query producing rows of `E` and turn it into rows of 2-tuples built from two projected fields.<p>I wrote a bit about my Rust rewrite here: <a href="https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl/" rel="nofollow">https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl...</a></p>
]]></description><pubDate>Sat, 04 Jul 2026 17:47:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48787282</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=48787282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48787282</guid></item><item><title><![CDATA[Postgres's lateral joins allow for quite the good eDSL]]></title><description><![CDATA[
<p>Article URL: <a href="https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl/">https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47921802">https://news.ycombinator.com/item?id=47921802</a></p>
<p>Points: 93</p>
<p># Comments: 24</p>
]]></description><pubDate>Mon, 27 Apr 2026 14:07:25 +0000</pubDate><link>https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl/</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47921802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47921802</guid></item><item><title><![CDATA[New comment by nitros in "Darkbloom – Private inference on idle Macs"]]></title><description><![CDATA[
<p>This entire paper smells of LLM, I'm sure even the most distinguished academic would refrain from using notation to prove that the SIP status cannot change during operation.</p>
]]></description><pubDate>Thu, 16 Apr 2026 08:12:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47790132</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47790132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47790132</guid></item><item><title><![CDATA[New comment by nitros in "Vulnerability research is cooked"]]></title><description><![CDATA[
<p>I'm suspicious of this prediction given the curl project's experiences...</p>
]]></description><pubDate>Mon, 30 Mar 2026 20:20:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47579247</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47579247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47579247</guid></item><item><title><![CDATA[New comment by nitros in "Microsoft's 'unhackable' Xbox One has been hacked by 'Bliss'"]]></title><description><![CDATA[
<p>Months if the firmware properly sleeps.</p>
]]></description><pubDate>Wed, 18 Mar 2026 10:51:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47423997</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47423997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47423997</guid></item><item><title><![CDATA[New comment by nitros in "Microsoft's 'unhackable' Xbox One has been hacked by 'Bliss'"]]></title><description><![CDATA[
<p>I don't see much motivation for fixing that when I can purchase a nrf52xx Bluetooth Beacon on aliexpress for €4 and flash it with firmware that pretends to be 50 different airtags, rotating every 10 minutes, and therefore bypassing all tracker detections.</p>
]]></description><pubDate>Tue, 17 Mar 2026 22:09:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47419013</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47419013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47419013</guid></item><item><title><![CDATA[New comment by nitros in "Ask HN: How to be alone?"]]></title><description><![CDATA[
<p>It's probably less damaging to recommend abusing Xanax than recommending using a LLM.</p>
]]></description><pubDate>Sun, 08 Mar 2026 23:30:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47302787</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47302787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47302787</guid></item><item><title><![CDATA[New comment by nitros in "“Microslop” filtered in the official Microsoft Copilot Discord server"]]></title><description><![CDATA[
<p>Klopilot: Klo ~ Toilet
Vibrierkot: Kot ~ Faeces</p>
]]></description><pubDate>Mon, 02 Mar 2026 15:39:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47219367</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47219367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47219367</guid></item><item><title><![CDATA[New comment by nitros in "Detecting and Preventing Distillation Attacks"]]></title><description><![CDATA[
<p>How exactly does distilling a censored model produce an uncensored model?</p>
]]></description><pubDate>Mon, 23 Feb 2026 22:09:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47129692</link><dc:creator>nitros</dc:creator><comments>https://news.ycombinator.com/item?id=47129692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47129692</guid></item></channel></rss>