HNHacker News
TopNewBestAskShowJobs

nitros

134 karma · joined March 6, 2017

submissionscomments
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Reverse engineering my e-scooter and rewriting the firmware in Rust
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.
nitros··on Ask HN: How do you keep up with HN these days?
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.
nitros··on Launch HN: ProvenMetal (YC S26) delivers circuit boards in days instead of weeks
I've used https://aisler.net/en (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.
nitros··on Launch HN: ProvenMetal (YC S26) delivers circuit boards in days instead of weeks
FYI: Aisler is the PCB manufacturer and assembler (based in Aachen iirc). LibrePCB is CAD software.
nitros··on Memory safety absolutists
> 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.

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: https://docs.rs/cordyceps/latest/cordyceps/trait.Linked.html

nitros··on What ORMs have taught me: just learn SQL (2014)
I really enjoy using Rel8 (https://rel8.readthedocs.io/), so much so that I reimplemented it in Rust (https://github.com/simmsb/rust-rel8).

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.

I wrote a bit about my Rust rewrite here: https://bensimms.moe/postgres-lateral-makes-quite-a-good-dsl...

nitros··on Darkbloom – Private inference on idle Macs
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.
nitros··on Vulnerability research is cooked
I'm suspicious of this prediction given the curl project's experiences...
nitros··on Microsoft's 'unhackable' Xbox One has been hacked by 'Bliss'
Months if the firmware properly sleeps.
nitros··on Microsoft's 'unhackable' Xbox One has been hacked by 'Bliss'
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.
nitros··on Ask HN: How to be alone?
It's probably less damaging to recommend abusing Xanax than recommending using a LLM.
nitros··on “Microslop” filtered in the official Microsoft Copilot Discord server
Klopilot: Klo ~ Toilet Vibrierkot: Kot ~ Faeces
nitros··on Detecting and Preventing Distillation Attacks
How exactly does distilling a censored model produce an uncensored model?
nitros··on Why I love OCaml (2023)
This is like saying Haskell doesn't have immutability because it has the state monad, or that rust doesn't because you can shadow with let.

Data is immutable and thats much more important than whether local variables can be modified imo.

nitros··on ./watch
It's also becoming possible to have transparent rigid PCBs as of quite recently: https://www.pcbway.com/blog/News/Transparent_Rigid_PCBs_Laun...

Naturally it does mean you can't have a ground pour, so the PCB needs to be designed to look nice with it.

nitros··on Informed poll
Also might be interesting to read about: https://embassy.dev/
nitros··on macOS Tahoe
The following should fix that:

  defaults write org.gnu.Emacs NSAutoFillHeuristicControllerEnabled "NO"
nitros··on I used standard Emacs extension-points to extend org-mode
Eh, Emacs isn't really a system where broken behaviour goes unnoticed. It either works as you expect or something isn't working correctly.
nitros··on The Awful German Language (1880)
Nope, but it's not so different to irregular plural forms or verbs in english.

Afaik: At some point in the history of the language there would(?) have been rules for these nouns, but not today.

nitros··on Ruby's Timeout is dangerous and Thread.raise is terrifying (2015)
bracket [1] is easy to use and ensures that the cleanup operation runs, the Control.Exception module is also well documented [2]

[1]: https://hackage.haskell.org/package/base-4.20.0.1/docs/Contr...

[2]: https://hackage.haskell.org/package/base-4.20.0.1/docs/Contr...

nitros··on RP2040 Runs Linux Through RISC-V Emulation
The low base clock is likely RF certification related
nitros··on Namecheap CEO offers $10k bounty for changing someone else's domain via helpdesk
https://stallman.org/articles/on-hacking.html
nitros··on Engineer distributes resume via IPv6 traceroute
For maximum 'performance' you can do it in-kernel with eBPF :^) https://github.com/simmsb/traceroute-spoof
nitros··on New Steganography Method for SVG Images Based on Improved LSB Algorithm (2019) [pdf]
This paper reads like it was written by an AI trained on plagiarized undergrad assignments.
nitros··on Ask HN: What are some tools / libraries you built yourself?
I built a tool https://github.com/simmsb/container-per-ip that manages spinning up containers such that each source IP gets it's own container, and automates shutting down containers after a period of inactivity.

It's main purpose is for running challenges of jeopardy style ctfs.

Page 1 of 2Next →