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

Back in my day, we used to call "closet management" and "outfit generator" a "wife".


Mate, you can't say that.


Are you saying that your wife has never said "Are you really going to wear that?"


"16GB ought to be enough for anybody."

If you think it's enough, it's probably not.


This is a blog post, not a product launch. It's intended to be a foundation on which a "real" GUI library can be written. The author mentions that it is one of several steps that should allow the Java community to coalesce around a better toolkit in the long term.


I think an option could be GPU-accelerated drawing. It won't look native, but one can create a UI that performs well on just about any platform. Vulkan greatly improves the portability of such applications (compared to the OpenGL vs. OpenGL ES mess), and Skia has a nice set of primitives on which one could build.

It's also worth pointing out that creating a cross-platform API is better for new players than for entrenched ones.


You're just inventing your own toolkit, which is going to end in tears for everyone since you will have to recreate every component from scratch, rediscover all the interesting edge cases thereof, fail to reimplement some expected behaviors (triple-click text selection, drag-scroll, whatever), and break every accessibility tool in the process.


This is exactly what the linked article is proposing.


Honest question: can someone explain the focus a lot of the HN crowd seems to have on "native"-looking UI? I've used plenty of applications that don't look "native" and it doesn't bother me. Is there a reason to prefer it? I get that performance can be an advantage, but one can easily write a very performant application using something like Skia, or doing one's own GPU acceleration, without having any native look.


There are a few reasons to prefer a native look and feel.

One is that if the look and feel of an app is native to the platform then it can lean on a design language that users of the platform assume, which makes it easier for those users to understand how to use the UI. Affordances look and act the way they expect, which reduces the time and effort it takes them to learn a UI.

Another reason to prefer it is that a UI that doesn't look native stands out as different. Noticeable differences are information. If something in a UI gets your attention, it should be because it's telling you something meaningful. Gratuitous differences from the platform's UI standard are not telling you anything meaningful, so they're just noise.

A third reason is that native platforms provide their native looks and feels through standard frameworks that also provide substantial whole-system features beyond just making things look alike. For example, Mac users can rely on a common set of keystrokes to do the same things across almost all applications (and the exceptions are badly behaved). UIs built without the platform frameworks must either recapitulate all of these platform-wide conventions or just ignore them. Commonly, they just ignore them, which means that conventions that users take for granted stop working in some apps for no good reason.


Back in the day in Unix desktop land there were 4 or 5 different UI toolkits and they looked behaved in a massively different way. X looked like ass. QT looked less like ass but had totally overloaded UIs. The differences were even starker on lower-res displays.

Also back then browser apps were a novelty instead of how most people interact with computers most of the time, and thus anything that wasn't using a native toolkit stood out pretty bad. A few apps like MP3 players used it for their advantage, but I remember those as being mostly a confusing mess.

More importantly, font rendering has improved incredibly and most rendering looks the same across toolkits in the same desktop environment. Back then some toolkits supported antialiasing, some did not, some had godawful rendering that looked like crap, some couldn't render certain symbols correctly, some didn't have good hinting for LCDs, etc.

The reality is that very slowly most UI paradigms have converged into a few well-established patterns (no more multiple-window apps, no more focus-follows-mouse, no more deep right-clicked context menus, etc). So now the styling differences are more apparent but most UIs are functionally the same nowadays. The same could not be said 15 years.

We have come a long way; despite the different looks, the feel is much more uniform, and there's a better understanding of what makes for good UIs.

As I write this, I'm frankly quite thankful that we have reached this state of good-enoughness. Spending hours looking into GTK themes and different fonts was fun, but in a frustrating way in which no exact font-icon-theme combination was entirely satisfactory.


I don't think X ever had a toolkit of its own, but i would guess you are thinking of Motif, because your description is spot on:

http://www.ist.co.uk/motif/books/vol6A/ch-3.fm.html


Indeed. It was about the closest you'd get to a standard X toolkit.


It's a fantasy problem. Hold on before you downvote folks and count the number of 'native' applications that were written since year 2010.

Most consumer applications are now webapps or electron apps. From accounting software to music players, they are not native.

If someone botheres to make a desktop app, you either have proffeshionals tools or resource intensive applications like Adobe Photoshop, Blender3D, 3Dmax, IntelliJ IDE's and Games. None of them look native either!

Almost noone bothers to develop platform spesific apps, and native applications are dying. If we don't stop squabbling about native look and feel, we will get no native applications at all.


> Almost noone bothers to develop platform spesific apps, and native applications are dying. If we don't stop squabbling about native look and feel, we will get no native applications at all.

Well, unless you're talking open source tools and/or everythign within the sphere of desktop productivity . Then invariably your "consumer" desktop apps of choice are some mixture of GTK2/3, Qt, Swing, WxWidgets......

Granted, the different GUI libraries and applications using them tend to have _slight_ inconsistencies (GNOME 3 / GTK3 window titles versus everything else's window titles), but for the most part they're consistently themed, they render quickly, they behave the same way with the clipboard, mouse interactions, element focusing, keyboard shortcuts, accessibility functions......

So I have open right now LibreOffice Writer, Firefox, Evolution, many gnome-terminals, Transmission BT client, GNOME Files, GNOME Boxes... all of which look the same and there's no cognitive load spent switching between them, because they behave the same and look the same.

I can open up Inkscape and GIMP and Evince and KeePassXC and VLC and retain that experience.

Meanwhile, whilst still my IDE of choice, my PyCharm (so, JetBrains) IDE windows do whatever the hell they want (STOP STEALING FOCUS!!!), glitch out rendering, look completely different. And Spotify - gets all its points docked just for how it handles tabbing through UI elements. ("No, I don't want to tab through ALL of the Discover page, I want tab to cycle through the different UI elements, preferably not taking a painfully long time to reach "search".... Ugh fine, CONTRIBUTE TO MY CARPAL TUNNEL THEN!!!)

"Native" (as in, "consistent experience across the whole suite of desktop applications") toolkits still make it way easier for _developers_ to design applications consistent with the rest of the system.

Android and iOS UI toolkits serve same useful purpose. I tend to find that apps that are just a reactive web framework in a fullscreen frame are pretty painful to use. Like, wtf are you doing when I hit back!??? Why is this full screen splash form with two text boxes SCROLLING when I touch it???

tl;dr of my rant: Goddamn people stop trying to make your applications look the same on every device and let me use it how I like on MY device, for the same of a) my wrists and b) my attention deficit brain


I think Android and iOS killed the idea that you're ever going to be able to use a bunch of apps that behave consistently, because nowadays you're always using apps on at least two different platforms (phone and desktop). And it's far more important that Discord on my phone should look and feel like Discord on my desktop than having it match my other phone apps or my other desktop apps. So people have got over the idea that the platform is important and that apps need to match the platform conventions (rightly IMO; the platform is there to support the applications, not the other way around - of course it would be better if the platform makers could come together and agree some consistent cross-platform UI conventions that every app could use everywhere, but they didn't, so here we are).


If an app follows the UI conventions of the system it is running on, there is less cognitive overhead for users. However, with the rise of web apps users have at least become a little more used to interacting with a variety of UIs, though the problem is not entirely eliminated.


We've also eliminated a ton of crappy UI conventions and settled on some common paradigms in all platforms. I remember the four-layer-deep right-click context menus and I kinda shudder now.

There were also some really good ideas that I wish had caught on (I was a huge fan of focus-follows-mouse and I still use the X select-into-clipboard), but the general uniformity of UI patters nowadays is very much calming.


I really like the context menus in GIMP. Much less mouse travel than trying to hit the top of the window or screen.


True.

Main benefit to me is deflecting spurious input. All that Drive By Management.

Instead of explaining the history of ergonomics, the philosophy of ethnography, and our reams of data from usability testing, I'd just point at Apple's Human Interface Guidelines.

Like name dropping Aristotle in debate class.

More serious actors will try harder, lean in.


In addition to Swing also Qt and Gtk spent a lot of effort on this. Not to mention browsers reimplementing look and feel of native controls (not sure if they're still doing it). So it was wider than HN definitely. Other toolkits took the native route from the other direction (eg wxWdigets I think embeds the actual native widgets?).


> I think swing has since figured [HiDPI] out

I hear Java GUI has supposedly gotten better, but all of the Java GUI apps I see look awful. For instance, try telling that to Ghidra and it's butt-ugly text that shows up super thin on my hidpi display. I like Ghidra, but for a graphical RE tool, Cutter is so much prettier with its QT interface. Of course, r2 is great and works from CLI.


JetBrains products are all Java GUI apps and people love them. Depends on the team building it more than the technology.


I say that some who likes Jetbrains and buys their products:

No one in his right mind loves the UI of Jetbrains Apps and the Linux experience has always been a shitshow unless you were using Gnome or KDE. Because Swing does not implement the XWindows protocol properly. So yeah, a great team can still make a functional app with terrible GUI technology -- but there is a world of a difference to something that's really polished, fast and enjoyable to use.


I think IntelliJ has the best UI of all IDEs I've seen, it sure as hell beats Visual Studio (the paid one), it beats Netbeans, Eclipse.. What else?

VsCode and atom are simpler, but they just don't provide UI, for many setting you have to go to config files, and some functionality is missing outright.

Can you think of an IDE with better UX?


Jetbrains products are my preferred choice for full-featured IDEs, but this is not exactly an industry renowned for producing snappy and pleasing interfaces. And since LSP has narrowed the gap, most of the time I don't require the features that would make up for the bad UX so the majority of my coding happens outside an IDE.


MacVim is my favorite when it comes to UX. It starts instantly and stays fast even on huge files. It's very customizable and works exactly how I want, including the layout of nested horizontal and vertical split panes.

I like being able to configure just about everything in just a single config file, but still getting an additional escape hatch for overriding OS default keybindings I want to use.


People love IntelliJ despite Swing because its other qualities make up for the slightly off-looking Swing font rendering, the glitching Swing layout redrawing and the glitching Swing window focus.

Also, the menu bar in IntelliJ was reimplemented from scratch to make it work properly. The Swing menu bar would have been unusable with its broken handling of submenus.


But they're ugly and impossible to use, for some of us. Just awful and horrible UI and flow... I simply do not get the love for IntelliJ anything.


Agreed, the only thing going for IntelliJ is that its easier to use than Eclipse, but the product is still too complex and ugly.


Really? I love eclipse. Though not as much as I used to.

I suppose preferences here are at least partially determined by how you think about software project management. Eclipse makes perfect sense to me, and has since the first day I used it. IntelliJ is obtuse and odd and ... wrong to me.


I agree that Eclipse is better than IntelliJ, but is not as easy to use. But after you get used, Eclipse is a better product.


Take a look at Bitwig


Interesting project. I'm curious about his mention of server costs in the sponsor request - it looks like he's serving downloads of the icon pack from github, so that shouldn't be a big bandwidth cost. It appears that he's using vercel serverless; the free tier appears quite generous, and the $20 paid tier should be affordable. I understand asking for donations, more just curious why it is expensive to run this.

Edit: never mind; seems he's using firebase storage, which could get pricey. Maybe it would make sense to serve over github pages or similar to keep costs down. Or even an el cheapo VPS, which should have more than enough space to store the images and plenty of bandwidth to serve them. Cache the number of icons and run a cronjob every ten minutes that scans the directory and updates the number.


Ya he seems to be using an extremely expensive BaaS and asking for sponsors.

This could literally just be a single PHP files hosted for $1 a month unlimited bandwidth shared host or even free tiers that are available.

So it does seem a bit weird to ask for a sponsor for hosting costs while also using one of the most expensive options.


I'm not sure if I'm reading this project correctly but aren't all of the icons already hosted on github for free? This whole website can be hosted for free on github pages with one javascript script for search, right?


No, he's pulling the individual ones from firebase storage. That's also why the webpage displays "0 icons" for a second after it loads; it has to go fetch the icon total from firebase.


The issue is not actually hosting, all the icons are lazy loaded. I'm pulling the data about the icons from Firestore which include a URL for the png and the .icns file. Right now I'm looking at alternatives, I'm aware this is not the most efficient thing, but I just haven't had time to change it since it blew up last Friday. For reference, last week we had a little less than 1000 icons, and today there's almost 2000.


yeah but the icons are already on github aren't they? Why are they on reduntly hosted on firebase? This whole website can be free on github pages - very confusing.


Because I stopped using GitHub to submit icons to let non techies submit them, GitHub is all good for static sites but I needed something that would let uses submit icons directly from the website without needing to know how to use GitHub, here is a thread I created that explains it all better: https://twitter.com/elrumo/status/1328860367850758146?s=21

I’ll be moving away from Firebase into something that more sense soon anyway, it was just an oversight from me as I not expected it to to get to 40k visits in just a few days, I was only expecting a few hundred a day.


Check details here: https://github.com/sponsors/elrumo?o=esc

It uses Firebase. It really looks very expensive for the functionality and 1.5K monthly visits.. But the developer seems to be fully transparent about costs.


When I built this site I really didn't think much of it and used Firebase just because it was really quick to build and I was getting only a few hundred visits a day. But since last Friday it has received over 35K visits hence the really expensive bill, which by the way is not so much for the storage, but for reading the Firestore database. I simply haven't had the time to re-build the site in a more efficient way it since then, hopefully tomorrow I'll get working on it and find a better alternative solution.


Based on information from the developer's website, it looks like they're still a university student, so probably using what is a cool and easy approach; they probably haven't learned a lot about load and scale. That Firebase bill could probably be written off as tuition :-)


I only used Firebase because when I built the site it was only a small scale solution, but now that is has blown I'm looking at alternatives because this is just a waste of everyone's money. And by the way, I only graduated from my master's last month, and I'm not even a computer scientist, I went to design school and have a degree in industrial design, hence my messy code practices. I'm working on them though, so if anyone is willing to give me a hand or some guidance, feel free to do so.


Most probably you're right, it's sad, costs could probably be a lot smaller and contributions could be a small but sweet and deserved compensation for coffee/beer :-)


Not to mention that there are lots of things we should have precisely because they are a threat to the state: encryption that the government cannot break, automatic weapons, individual autonomy, etc. These things all can be abused by "the bad guys", and will be, but we accept those risks because they are inherent to being free.


This clearly isn't a popular opinion, but I may as well add it here: I like git. It's not that bad and not that hard to use. Occasionally I have to look up how to do something, usually involving git-filter-branch. But that's no surprise, because what I'm trying to do is usually inherently complex. I don't think a different interface would solve that. For most other stuff, git is simple and easy to use. It was a bit slow to learn, but most really good tools are (e.g. vim).


Some guy wrote a tool to intercept the keys for level three on windows. Most streaming services offer only low-quality streams with level three, but big G dmca'ed the repo and most forks. Mirrors are still up all over, though; here's one: https://github.com/kipyegonmark/widevine-l3-decryptor


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

Search: