Hacker Newsnew | past | comments | ask | show | jobs | submit | drowe859's commentslogin

Same! Interested in this but need it to work for Slack, where I often type more informally and don't take the time I should to proofread.


I agree, I develop small utilities as single HTML for all the reasons you list (and fun), but having to work around browser protections for some various APIs can be a bummer.

The average internet user could be exploited fairly easily if every HTML file had immediate access to all the lower level APIs being introduced[0], and we end up looping back around to some sort of signing or alternative install method (pwa).

Curious to find the balance between distributable and "safe" enough to achieve wide adoption.

0: https://developer.mozilla.org/en-US/docs/Web/Security/Secure...


In practice most of those APIs are also gated behind a user's informed consent to e.g. enable access to a webcam or some other sensitive kind of I/O. I'd argue that the HTTPS delivery side of the requirements is superfluous theater pushed by "HTTPS Everywhere" ideologues and doesn't actually enhance the real security and privacy benefits already afforded by requiring manual user interaction.


How would one know if the AI is sufficient? Maybe there is a place for a real human validation and curation service.

Aside Note: I've already seen for hire posts of human artists offering to touch up AI generated work.


Overall I still love it, but mainly I miss being able to idly complain and grouse about things with my co-workers off the record. With all communication happening through company channels, I always assume someone has access.

Complaining about work is a time honored tradition, and bonds teams together.


So I think the ultimate answer is that there is no standardized way to do some of these things on the web. There are many ways to accomplish UI as listed, I'll explain some here for a React app as an example.

* Tree view [0]: There is no browser level widget for this type of UI, so in a React app we would include the needed code as a dependency through NPM, and prepared for a browser with a bundler. For a tree view I think most devs would consider using a library/dependency.

* Resizable Pane [1]: Technically some resizing can be done with CSS but it's pretty superficial. I think many frontend devs would roll this themselves with some basic JS.

* Scrollable Container [2]: This is firmly in the CSS wheelhouse, and most cases will be handled by the overflow property. Some more advanced cases might use react-window [3] for a virtualized list, when you have 1000s of items.

* Spin buttons [4]: Here HTML does have us covered, as well as other basic controls like selects (drop downs), radio buttons, and checkboxes. But again if unhappy with the look you'll be reimplementing it with some light JS.

I'm a ~10yr frontend-ish web dev and have found this thread very interesting, thanks for sharing and discussing. On the web just don't have that standardized library of widgets like GTK+ or Qt, MUI is probably the closest, and that narrows you into a React app in most cases.

As for the vocabulary, a few things come to mind.

* Very low barrier to entry, just need Notepad and a browser, nothing to compile or install. One can find a beginning career without knowing much about coding logic at all. It wasn't until I moved into "modern" JS and "back of front-end" that I began to learn formal patterns and principles, and I still consider myself quite a novice in them.

* GUI exists on the barrier between design and code, so is hard to formalize and document in general. Additionally the culture of web development is slightly different, in that the expectation is every little thing can be styled and customized. This is at odds with the native approach, where a button looks like a OS button no matter what. This culture of customization/branding contributes to things like Electron where web CSS can be directly reused.

Thanks again for starting this thread, I've looked at making cross platform desktop applications before, but quickly abandoned it as it was so foreign to me. I usually opt for a small pkg'd [5] node server for my hobby application, exposing the GUI via a browser pointed to localhost.

[0] https://mui.com/components/tree-view/

[1] https://www.npmjs.com/package/react-resize-panel

[2] https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\

[3] https://react-window.vercel.app/#/examples/list/fixed-size

[4] https://developer.mozilla.org/en-US/docs/Web/HTML/Element/in...

[5] https://github.com/vercel/pkg


Thanks for the detailed response.

A few additional points. First, neither GTK nor Qt really represent a particularly standardized library of widgets. They are not particularly consistent across major versions, but then in addition if you compare to some other toolkit (e.g. Cocoa/NextStep on macOS), you'll find extras and omissions no matter how you do the comparison. Moving existing code between even just major versions of any cross-platform toolkit is painful and often triggers major rewrites/refactoring that quadruple whatever the time would have been anyway. Going between toolkits (e.g. Qt <-> GTK) is essentially a complete rewrite (you retain what you learned the first time, but very few lines of code will survive). Having said, the basic structure of your code will survive, because the fundamental model of a heirarchical structure of nested widgets that trigger callbacks in response to user input (and other) events remains in place.

One critical difference with native development is that we (the developer) control the event loop. This is important enough that even Qt was smart enough to allow you use it with a foreign event loop (e.g. the one from Glib that underpins GTK). In a browser context, the actual event loop is far below your JS that you could almost pretend there's another "virtual" event loop running (and this indeed matches some React-ish docs I've read).

> This is at odds with the native approach, where a button look like a OS button no matter what

Actually, this is less and less true, especially as "office productivity" apps migrate to the cloud and what's left "native" are "creative" apps. These typically have no (or at least, less) issue with adopting look-n-feel that is wildly different from platform standards, even for something as basic as a button. Even within Apple, there is apparently a separate toolkit that they use for some/all of their creative tools (e.g. Logic Pro) which overrides a lot of the default platform theme.


Yup this is what I use it for as well! It's been very handy for when I want to text a link to an article I've read on the work computer (which doesn't have iMessage/Discord/chat apps)


I'm not finding the section you linked to very damning at all. Of the four issues, all were resolved quickly and according to community wishes.

1. Unverified Brave Creators UI - Two days after the complaint, Brave issued an update to "clearly indicate which publishers and creators have not yet joined Brave Rewards so users can better control how they donate and tip. Tom Scott, the original complainant, tweeted in response: "These are good changes, and they fix the complaints I had!".

2. Affiliate Links to Crypto Exchanges - Two days later, Brave released a new version which they said disabled the auto-completion to partner links, followed by a blog post explaining the issue and apologizing. Def the most scummy of the list IMO.

3. DNS Leaks with built in TOR - An issue was discovered and fixed via their Bug Bounty program, where they have an average 6 days to bounty payout.

4. A company violated their terms of service.

I definitely have my biases, although I don't use Brave daily anymore. But I don't think the controversies section you linked is particularly egregious or indicative of bad faith.


When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."

https://news.ycombinator.com/newsguidelines.html


I love the intention here, but feel they should have gone further by removing much of the JS + tracking.

This site only scores 20 on Page Speed Insights mobile, and 651 out of 806kb transferred is JS (80%).


Oh my gosh thank you.


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

Search: