Hacker News new | past | comments | ask | show | jobs | submit | jdcarter's comments login

Brilliant execution. I see so many knob-based inputs on home appliances where they have physical detents but the input encoder does not match the detents. Say you turn the appliance on, it starts at setting one, and you need to turn the dial to setting three. Any reasonable person would expect one physical click to take you to setting two, another click would take you to setting three. But I keep seeing devices where the detents are completely arbitrary and you have no idea how many “clicks” it takes to get to the setting you want. This makes the detents actively misleading.


I've had very good luck with the integrated fixtures. I have a number of them in my house and only one has failed (of maybe a dozen). This is a lot lower than the failure rate of LED bulbs. They are far brighter than the lights they replaced, and I personally like their lower profile. I also installed a number of the integrated fixtures in my father's house, and the increased brightness helps him quite a bit (he's 80).


I bought many of the Home Depot private label LEDs...and had to replace every single one of them. Outright failure, buzzing, flickering. They're just terrible. I've replaced them with Philips.


I'm just the other way: had an Instant Pot for a couple years (which is great) but I bought a Zojirushi rice cooker and LOVE LOVE LOVE it. Japanese medium-grain rice in the Zoji is amazing. I cook 1-2 cups nearly every day to snack on.


The red handwriting font is exceptionally good; I'd love to know what that is. It looks very natural, I assume with a ton of ligatures.


I used Photoshop and Illustrator for years and years (going back to 1990's) and switched to Affinity about 2 years ago. There's a lot of little details that are different--say, when you grab a resize handle, does aspect ratio stay locked or do you have to hold down shift?--but I found that it wasn't tough to retrain. Most things are where you'd expect. It's certainly not like Gimp or Inkscape, where absolutely everything is different and it feels impossible to get anything done.


For the HP48/50 fans here: try the HP Prime. The color display is amazing. It requires some relearning because the UI is different, but it still has full-featured RPN mode. The keys are good, too--it looks and feels like a proper HP calculator. I used a 48SX in college and 50G later, but the Prime is the one to have now. (It's also the one my daughter steals now that she's in more advanced math and science classes.)


Only the last Danger device ran NetBSD; all prior ones used a proprietary, in-house OS. It didn't run any of the normal BSD userland, however, as Danger had its own Java-based userland and UI layer.

Danger was bought by Microsoft, however, right around the time the NetBSD phone was going to market. AFAIK the tech didn't continue much past the Microsoft acquisition. (Source: worked at Danger on the NetBSD project, but left shortly before the Microsoft deal.)


> why do you say setup and loop are the worst imaginable way to write embedded software?

Because there's neither abstraction nor ways to combine things. Say you have a device that needs to do two things, and you look up some examples of how to do each thing. Each example is going to have its own loop() function--but how do you combine them? There's no notion of tasks or threads. There's no abstraction for device drivers. Arduino is a system that paints you straight into a corner.

[edit to add] Any reasonable software environment needs to provide three things, quoting "Structure and Interpretation of Computer Programs" here [1]:

* primitive expressions, which represent the simplest entities the language is concerned with,

* means of combination, by which compound elements are built from simpler ones, and

* means of abstraction, by which compound elements can be named and manipulated as units.

Arduino only provides the first.

[1]: https://mitpress.mit.edu/sites/default/files/sicp/full-text/...


You don't have to use `setup` and `loop` tough. We use Arduino as a library in C++ using PlatformIO as tooling. Best of both worlds.

The thing you are hating on is pretty much this file: https://github.com/arduino/ArduinoCore-avr/blob/master/cores...

Arduino is C++ with some boilerplate and a library.


But these `setup`, `loop` and `delay`, as well as the terrible "IDE" are central to the "simple" user experience of Arduino and are, imo, false friends. Teaching people busy loops and blocking behavior from day 1 is counterproductive because you'll have to unteach them later and jump through hoops to avoid them. Arduino libs are strongly optimized for "easy", not efficiency and flexibility.


I did just fine and so are millions of other people.

Using Arduino will not magically rot your brain and make you unable to ever learn other things. It will however get you started quickly and therefore give you an in. I started using Arduino in a student job, then used Micropython, did my masters thesis on using Micropython on cubesats and now I run a team of 15 hardware engineers.

All of this happened because I got started with easy beginner tools. There was no one to teach me the "real" way. The people preaching the real way and railing against simple beginner stuff usually don't write tutorials, build easy to use devboards or write easy to use libraries.


I'm using XXHash3 for verifying data integrity of large (10+MB) blobs. Very fast and appears to work very well in my testing--it's never missed any bit error I've thrown at it.

Aside: when storing hashes, be sure to store the hash type as well so that you can change it later if needed, e.g. "xxh3-[hash value]". RFC-6920 also has things to say about storing hash types and values, although I haven't seen its format in common use.


> be sure to store the hash type as well so that you can change it later if needed

Thanks for sharing this, I'd been doing this on my own for my own stuff (eg. foo.txt-xxh32-ea79e094), but it's good to know someone else has thought it through.

I ran into the problem once where someone had named some files foo-fb490c or something similar without any annotation, and when there was a problem, it took a file to figure out they were using truncated sha256 hashes.


Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: