...

jp1016

220

Karma

2019-10-04

Created

Recent Activity

  • The technology argument is the most convincing one to me. I worked with a Japanese client a few years ago and the internal tools they used were wild by western standards. Like full-on frameset layouts in 2020. But it wasn't ignorance, it was continuity. The tools worked, people knew how to use them, and there was zero appetite for redesigning something that wasn't broken.

    The font thing is also underrated as a factor. When you only have a handful of web-safe CJK fonts and you can't rely on weight/size variations to create hierarchy the way you can with Latin text, you compensate with color and density. It's a constraint that pushes you toward a specific aesthetic whether you want it or not.

    I think the framing of "peculiar" is a bit western-centric though. Dense information-heavy pages are arguably more respectful of the user's time than the trend of spreading three sentences across five viewport-heights of whitespace.

  • Been running a handful of dedicated boxes on Hetzner for about 5 years now. Even with the increase, the price/performance ratio is still way better than anything comparable from the big three US clouds. Their AX-series auction servers especially.

    What concerns me more than the price hike itself is the trend. Memory prices spiking, hard drives selling out, and now this. If you're running anything with serious storage or RAM needs, it's worth locking in what you can now. I grabbed an extra auction server last month just because the specs were good and I figured prices were only going up.

    For anyone panicking about alternatives: OVH and Netcup are decent in Europe but have their own tradeoffs. OVH's network has been flaky for me, and Netcup's support is basically nonexistent. Hetzner's support has been solid every time I've needed it, which is worth something.

  • The insight that a blank status area means "the house is healthy" is the best part of this whole project imo. Most smart home dashboards try to show you everything all the time and you just end up tuning it all out. This is basically the opposite approach and it makes way more sense for something you glance at 50 times a day.

    I tried something similar with a Kindle a few years back for just weather + calendar and ran into the same jailbreak maintenance hell. Ended up giving up. The Visionect displays look great but $1000+ per screen is brutal. Curious if the author has looked at the Waveshare e-paper panels driven by an ESP32, they're like $40-80 for a 7.5" screen and you can do partial refreshes. Obviously way smaller than the Boox but might work as a cheaper bedroom/mudroom option for people who want to build something like this without spending $3k.

  • The byte-for-byte identical output requirement is the smartest part of this whole thing. You basically get to run the old and new pipelines side by side and diff them, which means any bug in the translation is immediately caught. Way too many rewrites fail because people try to "improve" things during the port and end up chasing phantom bugs that might be in the old code, the new code, or just behavioral differences.

    Also worth noting that "translated from C++" Rust is totally fine as a starting point. You can incrementally make it more idiomatic later once the C++ side is retired. The Rust compiler will still catch whole classes of memory bugs even if the code reads a bit weird. That's the whole point.

  • Banning "length" from the codebase and splitting the concept into count vs size is one of those things that sounds pedantic until you've spent an hour debugging an off-by-one in serialization code where someone mixed up "number of elements" and "number of bytes." After that you become a true believer.

    The big-endian naming convention (source_index, target_index instead of index_source, index_target) is also interesting. It means related variables sort together lexicographically, which helps with grep and IDE autocomplete. Small thing but it adds up when you're reading unfamiliar code.

    One thing I'd add: this convention is especially valuable during code review. When every variable that represents a byte quantity ends in _size and every item count ends in _count, a reviewer can spot dimensional mismatches almost mechanically without having to load the full algorithm into their head.

HackerNews