Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Electron exists because there's a horde of developers whose only tool is a JavaScript hammer, so every problem looks like a nail. That's how you end up rewriting `dd` for Chrome[π].

π: https://www.balena.io/etcher/



My god... a 200+ MB install footprint, 200+ MB of RAM usage, requires a beefy GPU just to render its window. How did we get here?


I think we got there also by desperation of lacking good cross-platform GUI toolkits.

The current state is, you either use something that looks like Windows 95 in all platforms, or web app.

What the web made possible is to anyone to create a decent custom UI with little effort. I still remember how messed up was to create a custom component for Java Swing, which I believe is still one of the easiest to do. How would you do that for QT? GTK? WxWidgets? etc


I'll take Win95 in a heartbeat; consistent, accessible, responsive and clear. Vastly superior to the majority of web interfaces.


Also totally inflexible, you better have the right-sized screen/resolution: too small and you can't see that "ok" button; too large and you'll have a ridiculously small and crammed winform to fill/see your information.


Most cross platform toolkits support layout managers, since Motif days.

Actually even WinForms supports them, even though too many are happily doing fixed canvas positioning without using them.


Windows has shipped an accessibility magnifier since the 90s, before hidpi was a thing.


Take a look at Telegram client, looks great on Linux, not sure how it looks on macos or Windows.


Interesting Telegram has both a native (Swift/Obj-C not sure which) and an cross-platform-codebase app for macOS. The former is called Telegram for macOS and the latter Telegram Desktop. Both are on the app store even. So it would actually be a very good case to compare performance, etc. The native one presumably shares a lot of code with iOS which is probably why it exists at all, and it supports secret chats. Otherwise they have similar but slightly different design and features.

However, I think the Telegram Desktop client is not Electron either, it is just regular C++ compiled on different systems.


Yes, Telegram Desktop is a normal C++ app: https://github.com/telegramdesktop/tdesktop

So a cross-platform is quite easy, Electron one would need to be tested for different webviews on each system.


I might be crazy, but for me it's faster and more convenient to download and run Etcher than to read up on dd command arguments and device paths. Storage space is plentiful for me. RAM isn't an issue as it's only run once in a blue moon.

Is it crazy bloated and resource hungry for what it does? Undeniably! Does it matter? Not for me.

Electron resource use can be painful for apps that are running constantly, like Discord, VSCode and Slack. For utilities like Etcher, who cares.


I realize I'm replying six days later - but I can't help mentioning that the "dd situation" is even crazier than it first appears: you can just use `cp foo.iso /dev/sdb` or `cat > /dev/sdb`.

https://unix.stackexchange.com/a/189091/220387 https://eklitzke.org/the-cult-of-dd


The actual duplication is done in the Node.js runtime, not the V8 runtime inside of the Chromium GUI layer.

I do wish they had a command-line version that just ran node without Chromium, but there is a use-case to have a simple foolproof application like this; these days there are a lot of people who need to image drives like this and would be best not to mess with dd on their first time.

And dd doesn't exist for Windows so you've got to use some tool or another like this.


In fairness, for some reason Etcher works sometimes when other things don't.

It might be because it is slower and doesn't overheat my usb sticks, I don't know, but if nothing else works you can try etcher.

(Not sure how I found out, can have been something I read or a recommendation by a colleague 3 a 7 years ago or something.)




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: