28 comments

[ 0.18 ms ] story [ 70.1 ms ] thread
Hi HN

Here to show a little library that makes it easier to write custom JavaScript code that flashes ESP32s.

The library uses the new WebSerial API available in Edge and Chrome browsers.

Not to belittle your project, I'm all for hackers hacking on interesting projects, but I really am confused why such an API exists within the browser. The MDN page talks about browser connected 3D printers and boards like the ESP32, but boggles my mind that time and energy was expended to enable this.
Knowing that Chromebooks exists should give you the rough answer why does this exists.
Do Chromebooks only run a browser? I never really looked into them.
No longer (it now also runs Android* and certain Linux applications), but at the time Google proposed Web(MIDI/USB/Bluetooth) ChromeOS was only a browser-based operating system.

* Works on their x86 models, but depending on the specific application it's slower due to translation. Android apps runs best on ARM models.

One of the big benefits of web apps, is that they are truly portable. I can run my app on any machine with a relatively up-to-date web browser. Like it or not, this is leading to more and more serious work being done in the browser. Aren't APIs like this almost inevitable?
I really, honestly hope that this by some miracle will not happen. The "modern web" is the most bloated, slow and inefficient mess imaginable. Not knocking the browsers themselves, those are marvels of engineering, but yeah.
I will give you three reasons why it will happen:

- ChromeOS

- Project Fugu

- Microsoft collaboration regarding Chrome and PWA adoption

The value proposition of this is pretty great, actually, and the implementation of it can be rather simple even though the actual interfaces underneath are rather fucked up historically because at it's core it's merely just getting a stream of bytes in/out.
Chrome is no longer “a browser”, it’s more like the new JVM - the “write once, run anywhere” platform for desktop app deployment
> available in Edge and Chrome browsers

Edge having better support for new features than firefox.. Truly a brave new world

The same was true of Active-X with IE at one point.
Ah, perfect. Was playing with Toit last Friday and it took me some time to successfully flash my device (for some reason could not easily find the instructions). I also shortened and destroyed my ESP32 (while not paying enough attention :D) and more are coming this week, so will give this a try!

The whole platform looks really interesting.

Want to know when Firefox will support Web Serial API, but turn out they won't since they consider it harmful: https://mozilla.github.io/standards-positions/#webserial
This makes sense when you realise Firefox is trying to be a web browser, and Chrome is trying to be an operating system...
And isn't the submission a prime example (of how it could be misused)?

Consider:

> Show HN: Trick people into flashing their ESP32s with your firmware by visiting your web page

Thinking about libidevice and webusb I’d be curious to try doing this with an iPhone.
They're going to have to implement this sooner or later if they want to remain relevant. More and more happens in the browser, regardless of whether they like it or not.
Yes, as a FF user it’s becoming more and more clear that FF is falling behind on implementing new APIs. It’s frustrating having to keep Chrome around to load certain web apps.

I ran into this specific API following the great blues wireless tutorial (cell connectivity cards and dev cards with ESP32 support) which only works in Chrome https://dev.blues.io/get-started/quickstart/notecarrier-af/

How long will that matter when the Web slowly turns into ChromeOS?
This seems like the perfect thing to implement as a browser addon. If you think you need it, install it. Otherwise, the code doesn't touch your install.

Much like the container tabs extension, in terms of requiring an addon for certain functionality. Or, if mozilla doesn't do it themselves, a (horrifying though warning) third-party-extension with an external helper application to connect to the serial device, and a API polyfill injected into every page.

Who thought that an API to connect to serial devices from browsers was a good idea? It seems kind of dangerous to me.
I would say the same thing for using a webcam in the browser or accessing the filesystem. But yet everyone use it today and a world without it is unimaginable.

Wrapping functionality with the right security is key, but I browsers in general is already doing a good job in that regard IMO.

Yes, but I really don't see the usecase for letting something potentially remote and untrusted to a serial device. How many people do actually need that? (Limited) filesystem access for web applications is also kind of dubious, outside of the trusty upload form.