An experiment in UI density created with Svelte

882 points by 11001100 11 months ago | 256 comments
  • SloopJon 11 months ago
    I deal with a lot of data in tabular form, and I like to have as much of it in front of me at once as I can. The biggest influence on my report design has been, believe it or not, iTunes: no more padding than necessary, zebra striping, fast and easy sorting, and something like a column browser if possible. I've been using DataTables happily for years.

    One thing I've been experimenting with lately is sorting vs. showing. If I'm pulling data from Jira, and an issue is blocked, do I need a separate boolean column to sort or filter, or is it enough to style another column (say, age)? In a table with a hundred or more rows, will an orange, red, or bold red value in a single cell stand out enough for me to recognize something I need to address now?

    Looking at the table view of this experiment, the things I like are:

    * live updating

    * stable sorting for multiple columns

    * row highlight on hover

    * dimming the trailing zeros

    * colors aren't overdone; basically just three pairs of colors

    * graph in the 24H Low/High column, kind of like a sparkline

    The things that don't land as well with me:

    * horizontal scroll bar is almost invisible

    * the wide vertical scroll bar with the graph

    * how does 24H Low/High actually sort?

    * no filtering (although it may not be essential for this data source)

    The other thing I notice, comparing this to some of my own reports, is that there isn't much variance in the width of the values. It's harder to manage column widths with text than a bunch of numbers.

    • sgt 11 months ago
      I remember delaying my upgrade to Catalina because I worried that iTunes.app would disappear. It was completely underrated. I was so happy to find out that Music.app is pretty much the same app and the migration was easy.
      • jgalt212 11 months ago
        DataTables is great. Been using it for 10+ on a single product. We keep looking for a newer and better replacement, but have yet to find it.
        • reaperman 11 months ago
          Same, absolutely "stuck" with DataTables. It seems to work well even with comprehensive UI frameworks on top of it like SB Admin Pro. Just super easy to integrate DataTables and has 90% of the features I ever want.
          • halfcat 11 months ago
            ”90% of the features I ever want”

            What’s in the other 10%?

            • LoganDark 11 months ago
              Honestly this doesn't even sound like a particularly bad thing. Sort of like how Houdini has literally no competition whatsoever. Like it's actually hilarious how nothing even comes close. It just works so well that nobody can really hope to ever do better, and there is nearly 0 enshittification happening, so its existing users have no reason to ever switch.
          • brailsafe 11 months ago
            I've also been experimenting with mac app development for interfacing with Jira and other work that's ongoing but async. Less so on the data viewing side, and moreso on having agency over what I'm alerted to and when, but your comment and this UI has inspired me to try other ideas, since I kind of got stuck on a main data view
            • dr_dshiv 11 months ago
              Conditional formatting to indicate magnitude via color?
            • btbuildem 11 months ago
              I quite like how you extended the table scrollbar to carry extra information -- akin to a minimap in code editors. At a glance it helps orient the data on screen in context of the larger dataset.

              The helix I find hard to read and not useful. These types of graphs are better suited for periodic data where the period is much shorter than the span of the dataset.

              The cube made me curious, but I couldn't quite see the advantage. Usually using a 3D viz is not as effective as using three 2D equivalent graphs (here would be 3 scatter plots) -- simply because the projection from 3D to 2D distorts things and messes with our innate ability to compare locations (and a bit less so, areas). What was the effect you were after here?

              • 11001100 11 months ago
                To clarify: I'm not the creator of this beautiful project.
                • localfirst 11 months ago
                  i actually just came here to comment on helix tab and how fcking amazing this is. For example, I can use this view to chart out volatility of stocks and other instruments especially derivatives I'd imagine.

                  Having a super natural way to peer into the past as much as possible while the more recent data are larger is pure fcking genius. I can't believe why I never thought of this.

                • Bluestein 11 months ago
                  I'd like to think projects like these are somehow signaling a return to well designed but information dense, space saving interfaces ...

                  The amount of bloat, whitespace, extra spacing, "air" and other such waste - starting with (now Google-dead) "Material Design" has been egregious.-

                  (One can dream ...)

                  • Spivak 11 months ago
                    1. Mobile needs to have somewhat spacious UIs to deal with touch targets needing to be finger sized.

                    2. Companies don't want to design two very different UIs and by-in-large users prefer their skills transfer across platforms.

                    3. Accessibility is easier if the design leaves room for bigger font sizes and doesn't require fine motor control. Watching my dad start to noticeably age I'm realizing that even spacious spacious apps don't go far enough in this regard.

                    I'm not sure how we get to information dense design without something changing the forces that pushed us that way in the first place.

                    • wruza 11 months ago
                      >1.

                      This is not true. Mobile platforms do help with tapping on small elements. E.g. HN isn't mobile friendly "as is", but I have no issues with tapping any of the links. I've also used Exante mobile trading terminal for some time and had no issues with it either.

                      I agree that accessibility still is the concern, but watching my grandma struggle with her tablet, it's mostly the fact that buttons aren't buttons and everything jumps around like clowns in circus and cannot stop, instead of being a proper user interface. I bet she'd have similar issues with appliances if their design was just random flat symbols on white surfaces that randomly disappear.

                      • g15jv2dp 11 months ago
                        > This is not true. Mobile platforms do help with tapping on small elements. E.g. HN isn't mobile friendly "as is", but I have no issues with tapping any of the links. I've also used Exante mobile trading terminal for some time and had no issues with it either.

                        Good for you, maybe your phone screen is huge. I routinely tap on the wrong element when using HN on mobile. Even on desktop I have to set the zoom level to 125%.

                        • Aeolun 11 months ago
                          > I bet she'd have similar issues with appliances if their design was just random flat symbols on white surfaces that randomly disappear.

                          That sounds like the control panel for my fridge :)

                        • Bluestein 11 months ago
                          I see and understand your well placed and valid examination.-

                          True. Mobile (and the path from "responsive" to "mobile native" - ergo, pre conditioned by everything you well mention ...)

                          ... has led us to a what I think is today's sorry state of things.-

                          • Spivak 11 months ago
                            I think the best we're going to get is some law or other that requires services not block 3rd party clients so that folks that want hacker-ui-theme, like me, have the ability.
                        • ra1231963 11 months ago
                          > starting with (now Google-dead) "Material Design"

                          I thought it was still actively developed. Are you saying this has been killed by Google?

                          https://m3.material.io/

                        • pb060 11 months ago
                          I think it started with Apple when switching from OS 9 to OS X, I couldn’t explain it at the time and still feel disappointed with so much waste of expensive screen estate.
                          • anton96 11 months ago
                            It's a weird turn of event that OS X stayed a much more classic os than what Windows 8 was becoming. I remember that for a long time OS X was wasting less screen estate than Windows 8 and all that mix that was Windows 10.

                            But since Big Sure it means that it got even worse than what It was with the first version of OS X. I remember how crazy it was it setup a mac emulator, set it's resolution to my mac's resolution, full screen mode, and see how much space you could have with classic Mac OS, it's just crazy and everything remains legible.

                            Suddenly the windows desktop metaphor makes more sense because you can actually have many windows next to each other. OS X has almost always tried to diverge from than, that lead to great things like exposé, spaces and then mission control but it looks like they never considered to reduce elements size.

                            • Bluestein 11 months ago
                              > weird turn of event that OS X stayed a much more classic os than what Windows 8 was becoming

                              Indeed.-

                              At the time - I seem to recall - it really felt like Win8 was trying to "out-Mac" the Mac.-

                            • Bluestein 11 months ago
                              You might very well have a point there.-
                          • pavlov 11 months ago
                            In my opinion this experiment is missing a key element of designing for UI density: typography.

                            These screens use a fixed-width font at a single size. It’s a retro 1980 text-mode UI look, and it’s fine if that was the design constraint they wanted.

                            But you can squeeze a lot more information on screen if you can have a proper hierarchy of typefaces and sizes.

                            (As a basic example, the “About” box now consumes almost a quarter of the screen on a phone. A change to a smaller proportional font could fit this information in half the space and still remain readable on a phone.)

                            If you look at the works of an accomplished information designer like Edward Tufte, he often obsesses about getting the typography right. His books use many typographic elements and scales even for the body text, outside of the visualizations.

                          • encodedrose 11 months ago
                            Would an accurate comparison be something like perspective? (https://perspective.finos.org/)

                            Is the focus on density around performance, visualization, or something else?

                            • localfirst 11 months ago
                              It loaded a lot slower than OP's website which btw the helix tab is just mind blowing.
                              • sbarre 11 months ago
                                When I first loaded this, I assumed it was built with Perspective..

                                It definitely feels very influenced by it.

                              • electroly 11 months ago
                                One thing I especially like about developing data-heavy financial apps in Windows Forms is the DataGridView control. High density and high performance with filtering, sorting, and drag-and-drop column reordering and resizing. No paging required; if you want to stick 10,000 rows in there, that's fine. Most of the UIs we write are screens full of DataGridView panes. Ugly? Yes. Fast? Also yes.

                                My attempts to write similar UIs in React have mostly been failures due to poor performance. I resorted to bypassing React entirely for data tables in order to get acceptable render performance. Even then, I have to minimize the number of DOM elements per row so that the browser rendering itself isn't unacceptably slow.

                                • mystified5016 11 months ago
                                  WinForms is still probably my favorite UI framework. It's absolutely a blunt tool but by god can you swing it around. Incredibly flexible, reasonably easy to use, pretty fast, and ugly as all hell.

                                  Hell, you can even throw arbitrary Objects at it and it will just work. You can nest PropertyGrids within PropertyGrids, extend them to collections of objects, build arbitrarily deep nests of controls. All without touching or even caring about the underlying structure of the objects your UI connects to (within limits).

                                  WinForms is my platonic ideal of a UI framework. It's exactly how I would design things.

                                • breck 11 months ago
                                  I love information density!

                                  I collect old newspapers and back then info density was way higher (for an _amazing_ coffee table book, google "nytimes complete front pages"). So much critical info above the fold.

                                  I think high information density === high intelligence. Getting sort priorities right is very valuable and important.

                                  The past few years the web seemed to be going the other way. Good to see people still rowing in the other direction.

                                  Other examples:

                                  I designed my blog to allow one to zoom in/zoom out to see ~20 years of posts at once (https://breckyunits.com/).

                                  I've got some stuff coming out to promote (and make it easier to build) highly information dense cheat sheets (I'm trying to get the name "Leet Sheet" to catch on - https://pldb.io/blog/leetSheets.html)

                                  • mattlondon 11 months ago
                                    > I think high information density === high intelligence.

                                    Just packing loads of stuff on-screen at once, with tiny fonts and tiny margins and all the rest presents a lot of accessibility issues, even for intelligent people.

                                    Google et al are adding padding and white space to make their UIs more accessible for more people. It's not just eye sight we're talking here, but also physical issues with clicking/tapping small targets accurately (e.g. someone with Parkinson's), and also neuro divergent issues where a page full of text or whatever can disorient just by sheer amount of stuff happening on-screen at once (e.g. epilepsy)

                                    You can be very intelligent, but still benefit from well-designed and accessible UIs. Don't assume people who need it are less intelligent.

                                    • wiseowise 11 months ago
                                      > Google et al are adding padding and white space to make their UIs more accessible for more people. It's not just eye sight we're talking here, but also physical issues with clicking/tapping small targets accurately (e.g. someone with Parkinson's), and also neuro divergent issues where a page full of text or whatever can disorient just by sheer amount of stuff happening on-screen at once (e.g. epilepsy)

                                      We’re not in a physical world and FAANG is not bound by money (no, I don’t care about budget allocated to specific teams, I’m sure Android team has Pichai’s credit card), so why are we settling for lowest common denominator instead of creating best UIs for every user type?

                                      • hombre_fatal 11 months ago
                                        Maybe the design that addresses accessibility is better for most people, and the high density crowd for most types of apps is tiny.
                                      • breck 11 months ago
                                        All my stuff is 100% public domain and open source and can be piped through whatever people need to make the most custom experience.

                                        The default is high information density. This is how they did it in the old days. It makes a lot more sense to default to high information density with 100% public domain open source content in clean code for perfect accessibility.

                                        Anything with a (c) or license has bad accessibility.

                                        • Mindwipe 11 months ago
                                          Google's design frameworks for the last five years have been completely unaccessible for those of who need concise and compact UIs.
                                          • antifa 11 months ago
                                            Font too small? Just ctrl +. Raw data with huge padding is inaccessible to literally everyone who's trying to do work (the intelligence framing of the other user was stupid) and it's meant to look pretty, not be accessible. If you're genuinely concerned about accessibility, the computing world is a never ending world of inaccessibility, but this ain't it.
                                        • ecjhdnc2025 11 months ago
                                          This is interesting because it proves something to me about my vision and visual comprehension.

                                          The "Grid" view is absolutely fine for me. The "Table" view is unworkable.

                                          I have a lot of trouble scanning across lines like this, where I will lose which line I am on (when my glance shifts). This, I have realised, is due to the tendency to shift eye dominance slightly across to the right. (My eyes are subtly misaligned so I have some prism correction; a recent change to my prism correction has improved this situation for me.)

                                          This particular presentation has the indicator line in the low/high column placed so that it makes this accidental row shifting (which is always upwards) even worse.

                                          For me, the line graph would be better off either as the background to the cell, or towards the bottom of the cell. And the rows would need zebra-striping, subtly.

                                          The lesson from me, a fast and able reader who is not vision- or cognitively-impaired is: don't assume that you can put stuff across wide lines in tables like this. Provide affordances so people can hold onto the "row" as they scan across. The keyline separators are not enough, and the hover-over background change is not usable on a touch device.

                                          As it is, when I encounter stuff like this, I often have to un-maximise the window and reduce the window height so I can scroll and use the bottom of the window or the title bar of another one to provide a consistent "edge" to see the data on. If I am using my iPad, I have been known to use a piece of paper or card.

                                          • Dalewyn 11 months ago
                                            I think your trouble with the table has far more to do with the design (specifically color) choices made by the author.

                                            1. You mentioned this in passing, but I'll repeat for emphasis: The contrast between a hovered/highlighted table row and ones that are not is too low. I have decent eyes and I also have a hard time seeing it.

                                            2. Table rows (and/or columns) should be striped between two or more high contrast colors for better legibility. White, black, white, black for example. This table is all black through and through.

                                            3. The table borders' contrast is way too low, it's hardly even visible. This combined with the singular row/column color makes legibility even worse.

                                            TL;DR: Table itself is actually fine, the colors are terrible.

                                        • daemonologist 11 months ago
                                          Some very cool looking UI elements here, but I'm also wondering what the experiment was and what conclusions you drew from it.

                                          On sheer number of interactive elements, my experience (Svelte 4) is that the rendering usually starts to cause problems before the interactivity, i.e. you run into performance problems at the same number of elements regardless of whether they're interactive. As you implemented for the some of these pages, the solution is to go to a canvas.

                                          • benatkin 11 months ago
                                            Svelte can be used with renderless components. https://imfeld.dev/writing/svelte_domless_components

                                            Svelte can also draw on a canvas. There is Threlte: https://threlte.xyz/

                                            As for performance within Svelte, I don't think it needs something like Jotai as much as React does to prevent unnecessary re-rendering.

                                            • FractalHQ 11 months ago
                                              Also a Svelte component just takes JavaScript… so you can just create and use a canvas and interact with the DOM normally.
                                            • jonahx 11 months ago
                                              > you run into performance problems at the same number of elements regardless of whether they're interactive. As you implemented for the some of these pages, the solution is to go to a canvas.

                                              That's surprising. I thought Svelte's whole selling point was ultra-targeted and efficient DOM updates as a result of the compilation step and not having vdom. Are simple large tables still a problem within that paradigm? Which of the elements here, eg, could have been rendered via DOM but needs canvas purely for perf?

                                              • moritzwarhier 11 months ago
                                                The browser can take very long to layout and draw a page with a huge number of DOM elements.

                                                Hardware starts to mask a lot of these issues, but even a table with 1000 to 10,000 rows will already cause issues. And table layout is very optimized (for this reason, there are plenty of CSS gotchas around tables). So a 10,000 row plain HTML table still is rendered relatively fast, but not practical for an interactive UI.

                                                But for "snappy" UI and more involved CSS + many nested DOM elements, you'll need to start to consider viewport virtualization a lot earlier.

                                                This is independent of JS UI frameworks though.

                                                HTML+CSS rendering is an expensive, blocking operation. CSS even requires multiple passes for rendering nowadays AFAIK. Of course this is optimized to hell by browsers too.

                                                But you still need "viewport virtualization" in markup+CSS, or switch to canvas rendering, which does away with the markup and CSS entirely.

                                                • selvan 11 months ago
                                                  VS Code Editor which is based on Electron, is really fast, even with large codebase & many open tabs. Their monaco engine (https://microsoft.github.io/monaco-editor/) uses custom, virtual code processor that is optimized for surgically updating underlying DOM. It also uses WebGL + canvas rendering to show minimap of the file.

                                                  Similar approach (custom virtual processor) is leveraged by Google docs/sheets.

                                                  Canvas rendering may be the last resort when nothing worked.

                                                • Mathnerd314 11 months ago
                                                  > Svelte's whole selling point was ultra-targeted and efficient DOM updates as a result of the compilation step and not having vdom

                                                  Going by performance (https://krausest.github.io/js-framework-benchmark/), Svelte 4 is essentially vdom, Svelte 5 is ultra-efficient based on the direct-DOM approach pioneered by Solid. Svelte 5 is currently a release candidate, API stable but also not necessarily production ready. https://svelte.dev/blog/svelte-5-release-candidate

                                                  Disclaimer: I haven't actually looked at Svelte 4 to see why it is so much slower than Svelte 5

                                              • d13 11 months ago
                                                You can combine Svelte with an excellent WebGl framework like Phaser for blindingly fast graphics rendering: https://phaser.io/news/2024/03/official-phaser-3-and-svelte-...
                                              • karaterobot 11 months ago
                                                That helix chart is very sexy. I'm not really sure I could use it, but danged if it isn't cool looking.

                                                If this is an experiment, what were your conclusions?

                                                • arendtio 11 months ago
                                                  It doesn't seem to work in Firefox, or is it just me?
                                                  • karaterobot 11 months ago
                                                    I'm on FF, and it works for me. :shrug:
                                                • gorgoiler 11 months ago
                                                  I absolutely love it, very intelligently put together. The gold standard for this in the terminal is btop. Check it out if you’re into this sort of thing:

                                                  Example: https://terminalroot.com.br/assets/img/cpp/btop.png

                                                  Repo: https://github.com/aristocratos/btop

                                                • jonahx 11 months ago
                                                  I love this -- dense but still easy to read.

                                                  Also beautiful and polished as a piece of design, apart from the dataviz.

                                                  • hliyan 11 months ago
                                                    One thing we may still haven't realised is that UI designs are subject to fashion cycles, just like clothing. Except enough time hasn't elapsed for us to observe a full cycle similar to peak-bell-bottoms or peak-low-riders or peak-sideburns. We may be in a low-contrast / low-density peak, but we won't know until we pass it. However, looking back, we did seem to have passed at least one peak-skeuomorphic cycle (remember all the toolbars, icons, drawers and Microsoft Bob?). We may see another high contrast monochrome text-heavy cycle yet.
                                                    • andrewstuart 11 months ago
                                                      https://static.crowdwave.link/index.html

                                                      Above is the evidence that react can handle this sort of thing just fine.

                                                      I hacked/converted the page in question to React to show something similar.

                                                      Its randomly generating updates to the table and then resorting the table and repeating.

                                                      You can grab the source here but I warn you it's hacked together in less than an hour:

                                                      https://static.crowdwave.link/sveltetest.zip

                                                      • Thro4l31 11 months ago
                                                        Of course React can handle complex and large scenarios. And those scenarios aren't even large. It's good that you created that proof. Still, Svelte is much easier while more performant, even if that extra performance is most often not needed. Large amounts of data can be managed by react-virtualized in React. IME Svelte (and Vue) can handle more without virtualization, but for really large data sets you need it anyway. The downsides of React are not performance IMO, but DX.
                                                        • xsepsisx 11 months ago
                                                          What's so special about it? Golden rule - make granular components/updates, just it.
                                                        • kibwen 11 months ago
                                                          Reminiscent of the Bloomberg Terminal: https://en.wikipedia.org/wiki/Bloomberg_Terminal
                                                          • jnordwick 11 months ago
                                                            came here to see if anybody else compared to blbg terminal. loved that thing
                                                          • Waterluvian 11 months ago
                                                            Having to support mobile throws a big wrench in all design. You suddenly have to worry about a very different viewport and now you’re significantly limited or designing two UIs.
                                                            • solardev 11 months ago
                                                              It's half the fun!

                                                              I'm biased, but as a frontend dev and sometimes-UI guy, responsive design is one of my favorite parts of the job. It forces me to think creatively (and scientifically, whenever we can actually afford to do testing) on how to present information and create controls for everything from a small iPhone to a giant ultrawide monitor.

                                                              I mean, even in the Windows days (as in when most apps were still desktop Windows apps), basic responsiveness was already a thing, since even then you had no guarantee your app was going to be running in fullscreen at 1024*768 only. How your main windows, toolbars, etc. scale to different screen widths & orientations is a fun challenge to solve. Even in gaming, it's fun to see how desktop games (like Terraria) scale their controls down to a phone.

                                                              Anyway, for me it usually ends up being about 1.5x the work compared to a single viewport, since most components can still be reused in slightly different arrangements. Menu navigation and information architecture can be tricky though, switching from "broad but shallow" organization to "narrow but deep" hierarchies.

                                                              • 01HNNWZ0MV43FF 11 months ago
                                                                just make a responsive design that allows you to either drink from a fire hose or a coffee stirrer
                                                                • Waterluvian 11 months ago
                                                                  “Responsive design” is basically couched language that hides that you’re either designing it twice or are making compromises to one or both aspects/sizes.

                                                                  There isn’t really any other choice. It’s reality. But it’s just sometimes quite frustrating.

                                                              • ctippett 11 months ago
                                                                On mobile, if I zoom out to 85% everything gets smaller and more things fit on the screen (great!). Zooming out further to 75% makes everything larger... 50% and things get larger still (more so than they were at their default size at 100%).

                                                                The layout works remarkably well on mobile regardless, but I wasn't expecting such unintuitive zoom behaviour.

                                                                • yazzku 11 months ago
                                                                  I've seen this behaviour on other web pages too, and it also occurs on desktop. A mystery of life.
                                                                  • hollerith 11 months ago
                                                                    >I wasn't expecting such unintuitive zoom behaviour.

                                                                    Huh. I expect user-interface surprises on web pages. Interacting with the other user interfaces in my life is much less surprising.

                                                                    • hombre_fatal 11 months ago
                                                                      You usually can’t viewport zoom non-web UI.
                                                                      • hollerith 11 months ago
                                                                        I beg to differ. The most useful kind of zoom zooms the entire UI and this is straightforward to do on Windows and ChromeOS in increments of 25%. It is possible in Gnome, too, (again in increements of 25%, at Settings > Displays > Scale), but it is not straightforward because before you can do it, you have to say, `gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"` once per install of the OS.

                                                                        None of them exhibit the wonky behavior of zooming a web page described above.

                                                                    • saagarjha 11 months ago
                                                                      Are you on iOS perhaps?
                                                                      • ctippett 11 months ago
                                                                        Yes, an iPhone. As an occasional writer of CSS, I assume the behaviour is the result of using font-size as the basis for sizing elements. As the font-size increases due to various media breakpoints triggering, so too do the elements on the page.
                                                                    • jbrimble 11 months ago
                                                                      Is there a code repo for this site? I can't seem to see one, and I'm curious to see the svelte source.
                                                                      • severak_cz 11 months ago
                                                                        DAWs and video editing programs can be very information dense.
                                                                        • zongitsrinzler 11 months ago
                                                                          Reminds me of the Tron Legacy boardroom scene UI!
                                                                          • jbs789 11 months ago
                                                                            I’m curious about what the objective and conclusion is. Admittedly I’m in the “less technical” audience, so less focused on the “sexiness” (as I’ve heard others refer to it).
                                                                            • stonethrowaway 11 months ago
                                                                              I would assume the objective is to find an approach, or a repeatable formula that gives a good trade off between readability(visual navigability?) and visual density. More than likely it’s a search for constraints, and then determining the boundaries of those constraints.
                                                                            • squarefoot 11 months ago
                                                                              Well done. Tables are very dense, still easy to read. Proof that information hidden behind empty screens with tons of blank space has never been the way to go.
                                                                              • xyst 11 months ago
                                                                                I see you took a page out of the Bloomberg Terminal.
                                                                                • PhilipRoman 11 months ago
                                                                                  Love the cube view! Tangentially related - anyone know a linux tool which takes a bunch of points/lines/labels as input and generates a nice interactive 3d view of it? I've considered using .obj file viewers, but it doesn't quite hit the mark. Gnuplot is nicer but doesn't have interactive features as far as I can tell.
                                                                                  • kristjansson 11 months ago
                                                                                    If you’re comfortable in R, rgl was pretty straightforward when I used it moons ago: https://cran.r-project.org/web/packages/rgl/index.html
                                                                                    • ladberg 11 months ago
                                                                                      I love plotly for all my graphics needs (mainly 2D but supports 3D too)! Can export to a standalone interactive html file, can be used as a pandas plotting backend, can be easily extended with some client-side JS if you want to add more interactivity to the final result
                                                                                      • rdedev 11 months ago
                                                                                        I had initially used plotly to build my dashboard but switched over to bokeh mostly because it's really hard to make plotly express api work with the graph objects api. Bokeh is pretty new though so ymmv but I have been liking the apk so far
                                                                                    • PaulHoule 11 months ago
                                                                                      That Helix reminded me of this old game

                                                                                      https://en.wikipedia.org/wiki/Tempest_(video_game)

                                                                                      except it really is a helix and not a cylinder like a Tempest level. Still would be fun to fight bugs in.

                                                                                      • terribleperson 11 months ago
                                                                                        Adding a tiny bit of Y-padding made this a lot more readable for me. I wish more information display interfaces offered these kinds of controls. A thought that occurs to me: does densely-packed data get more readable the more experience you have with the data in question?
                                                                                        • sbr464 11 months ago
                                                                                          This is great work.
                                                                                          • tengbretson 11 months ago
                                                                                            The mini-map/scrub view in the table seems to suspend the drag motion if you target outside that vertical element with the mouse. Intuitively I would assume it would just let you drag until mouse release.
                                                                                            • 11 months ago
                                                                                              • ChrisMarshallNY 11 months ago
                                                                                                I'm in the final release phase of an app that I have developed over the last month, but it builds on a test app that I wrote, a couple of months ago, and that had multiple screens, showing tabular data, in various forms (and ways to sort and filter said data). Fairly similar process to this, but on a more humble scale.

                                                                                                I tested for a while, settled on one form, and made an app for that.

                                                                                                It's not the most exciting variant, but it seems to work very well, and the reception in the public beta has been quite positive (one problem is that it's not an app that I would use, personally, so I had to rely a lot on the feedback of others).

                                                                                                • ChrisMarshallNY 11 months ago
                                                                                                  Just to expand, I have found that the best UI, is the UI that no one notices, appreciates, or compliments.

                                                                                                  Bit humbling, but there you have it.

                                                                                                  Case in point: I have a fancy “prize wheel spinner” for UIKit, that I wrote, a few years ago[0]. I started working on a SwiftUI version of it, but stopped.

                                                                                                  The reason was, because I kept not using it, in my shipping projects. It’s too “in your face.”

                                                                                                  Some of the UI approaches that I tried, in my test app, were “sexy,” but I didn’t use any of them. The one I ended up using, was a bit pedestrian.

                                                                                                  [0] https://github.com/RiftValleySoftware/RVS_Spinner

                                                                                                • klaussilveira 11 months ago
                                                                                                  I love this, specially the minimap idea on the table. Have you considered a different way of adding/removing/moving columns with too many columns (100+)?
                                                                                                  • keinsinn 11 months ago
                                                                                                    There's a company in Iceland called "CCP" that did a similar interface. They call it "Eve Online"
                                                                                                    • perdomon 11 months ago
                                                                                                      I've heard that the DX with Svelte is among the best out of all web libraries/frameworks. Curious how it went creating this UI.
                                                                                                      • MOARDONGZPLZ 11 months ago
                                                                                                        This is slick. Does anyone have recommendations for high density real world maps with tracks like FlightRadar or similar do?
                                                                                                        • tgtweak 11 months ago
                                                                                                          This is surprisingly fast. A really impressive showcase of the design philosophy of Svelte. Even loads and renders fast on mobile!

                                                                                                          DOM Loaded: 134ms

                                                                                                          FCP/FP: 163ms

                                                                                                          LCP: 218ms

                                                                                                          TTI: 1826ms

                                                                                                          • 11 months ago
                                                                                                            • jeffbee 11 months ago
                                                                                                              This obviously does not fit "as much data on a screen as possible". My laptop has a 7.7 megapixel display and each pixel has 1 billion possible states. This page is putting maybe 10000 bits of information on the screen, not even scratching the surface of machine's capacity.
                                                                                                              • razodactyl 11 months ago
                                                                                                                I hate that this can be taken seriously even though it's obviously a joke. It's a joke right?
                                                                                                                • kristjansson 11 months ago
                                                                                                                  This is the future. Traders staring at 60hz rainbow static and making completely grounded, data driven trades.
                                                                                                                  • razodactyl 11 months ago
                                                                                                                    Seriously though. I'm finding it increasingly frustrating how small the screen is on my iPhone 13. Makes me wonder how the hell I managed on the 4. Perhaps I'm just getting old.
                                                                                                                    • solardev 11 months ago
                                                                                                                      Heh, I have the opposite problem as Mr. Tiny Hands. I wish I could get a smaller phone with good cameras. Apple had the smaller iPhone, SE maybe, for a while (maybe they still do?). But all the Pixels are humongous and I miss being able to operate it with one hand.

                                                                                                                      Seems like there's way more huge phones (especially folding ones) than small ones these days.

                                                                                                                    • lucianbr 11 months ago
                                                                                                                      If it was about a data structure and how much information can be stored in a number of bytes, would a similar comment have to be a joke? Seems rather reasonable for HN. If you hate this kind of thing maybe you're on the wrong site.

                                                                                                                      I am more incredulous about the comments saying "I am happy Apple takes my freedom away in exchange for security and convenience". Of which there are plenty on certain threads. And clearly not joking.

                                                                                                                      • sbr464 11 months ago
                                                                                                                        Between the redditors and the autistic people, I can’t tell who’s joking any more.
                                                                                                                    • layer8 11 months ago
                                                                                                                      s/as possible/as practical/
                                                                                                                      • 11 months ago
                                                                                                                        • 11 months ago
                                                                                                                        • fitsumbelay 11 months ago
                                                                                                                          the helical visualization is a new one for me and very nice, tho I agree with previous commenter about its usability, mainly bc of having to zoom in and out. really nice interaction tho
                                                                                                                          • bowsamic 11 months ago
                                                                                                                            You could make it far far denser than this
                                                                                                                            • perching_aix 11 months ago
                                                                                                                              the experiment fails pretty hard on my phone where i have js turned off by default :p
                                                                                                                              • Nathanael_M 11 months ago
                                                                                                                                I suspect it would also fail if you tried it on Internet Explorer 6.
                                                                                                                                • perching_aix 11 months ago
                                                                                                                                  probably, although i feel keeping js turned off by default when browsing random sites is infinitely better motivated than using internet explorer 6
                                                                                                                              • rkagerer 11 months ago
                                                                                                                                It's a thing of beauty
                                                                                                                                • FpUser 11 months ago
                                                                                                                                  Love it
                                                                                                                                  • chrisstanchak 11 months ago
                                                                                                                                    Love this. Amazing work.
                                                                                                                                    • wiseowise 11 months ago
                                                                                                                                      That is just amazing!
                                                                                                                                      • createwith 11 months ago
                                                                                                                                        meta: I would have upvoted this post 2x if you did the backend in Rust.
                                                                                                                                        • cranberryturkey 11 months ago
                                                                                                                                          svelte 4 is handsdown the best framework out there. I really am disappointed svelte5 is turning into react-ish framework. That was the main reason I used svelte was because it was NOT react.
                                                                                                                                        • felipefar 11 months ago
                                                                                                                                          Low UI density is the new emperor's clothes in modern UI design. It's being actively promoted by companies in order to cut design costs, but the truth is that it's only reasonable on touch interfaces or casual apps.

                                                                                                                                          Mouse interfaces are fundamentally different, because you have much more pointing precision, so it pays off to show more data on the screen. You don't have to cram your interface with with spaces to make it scan-friendly, you just use heterogeneous elements and colors. Look at Blender and you'll know it can be done.

                                                                                                                                          I'm designing a desktop reference manager (https://getcahier.com), and one of its aims is to provide a UI with high information density. The mobile version will be able to adjust the experience, replacing desktop-only interaction patterns with mobile ones, and the UI elements that are shared will be somewhat bigger, so that users are able to interact them with touch.

                                                                                                                                          Apart from that, it seems that the whole industry is confused regarding UI styles. UI frameworks are either favoring touch interfaces and degrading the experience on desktop, or vice-versa. Even Windows 10 released certain parts of the control panel with desktop look and feel and others with touch-friendly but desktop-antagonistic screens. It's time we realize that both platforms are different and we shouldn't degrade one in favor of the other.

                                                                                                                                          • jwr 11 months ago
                                                                                                                                            > Low UI density is the new emperor's clothes in modern UI design

                                                                                                                                            I design, develop and maintain an ERP-style application with lots of tables. The fashions in UI design have made my life much more difficult over the last decade.

                                                                                                                                            The problem is that designers tend to follow fashion trends. And the trend over the last decade has been "lightweight! clean! lots of space!". This is great if you are making a landing page, not so great if you need to display lots of data.

                                                                                                                                            Google made things worse with its terrible UI design, which people accepted as mantra. Yes, there is lots of white. Your screen will mostly display… space. But just try using the Google Ads interface: it doesn't even fit in a normal browser, you need to have an extra-wide window just to see stuff in the tables. Not to mention they keep redesigning it, and every new update is hated by the customers, as well as by Google people (I've been told by Google ads consultants how to switch to the older interface, "which they all use because the new one is worse").

                                                                                                                                            Another problem which compounds the situation for me is that designing tables is not cool. So, UI designers (and self-proclaimed UX experts) will "obsess" over every pixel in iOS-style switches that for some reason have replaced checkboxes, writing blog posts about how things are misaligned, while tables are left as an afterthought. Take a look at all modern UI toolkits: you will find very few with good tables, and likely not a single one with dense tables.

                                                                                                                                            Oh, and on the functionality front: JavaScript libraries like DataTables are great for simple things, but are nowhere near a complete solution for complex apps.

                                                                                                                                            • cageface 11 months ago
                                                                                                                                              This is because mobile is where all the money is. All the vendors have neglected their desktop SDKs to such a degree that Flutter is now in many ways the best desktop UI stack.

                                                                                                                                              Even Apple has sorely neglected their desktop APIs. Play around with SwiftUI on the Mac for more than a few hours and this will become glaringly apparent.

                                                                                                                                              • elschneider 11 months ago
                                                                                                                                                I think there is a fundamental difference depending on what kinds of users you are targeting and how often they're using your app. Blender is a prime example of software for professionals, that are also willing the spend a considerable amount of time on learning the UI. A lot of software is not targeting a similar audience and should limit cognitive overload.
                                                                                                                                                • panta 11 months ago
                                                                                                                                                  I'm constantly frustrated by software that tries to limit cognitive overload. Stop treating your users as if they were cognitively impaired. In other words, write a software that also an idiot can use, and only idiots will want to use it.
                                                                                                                                                  • jorvi 11 months ago
                                                                                                                                                    I have had the (dis)pleasure of watching my 60yr old mother having to re-learn the entire administrative part of her healthcare job three times over and deeply struggle because the insurance suits decided a new software package was needed.

                                                                                                                                                    Nothing humbles you more as a dev than seeing a layman struggle through an interface, getting increasingly frustrated and desperate because she can’t find the button she needs due to complexity and sensory overload due to a million tabs, buttons and text fields.

                                                                                                                                                    The worst of it is, you can see that she knows what she wants to do, but can’t translate that into the steps needed to get the computer to “understand” that, effectively making it feel as if it is trying to sabotage her. Something that would have taken 20 minutes with pen & paper suddenly takes 40 minutes digitally. Weren’t computers supposed to make us more efficient?

                                                                                                                                                    Considerately, screw your attitude. Eat some humble pie.

                                                                                                                                                    • hk__2 11 months ago
                                                                                                                                                      > I'm constantly frustrated by software that tries to limit cognitive overload. Stop treating your users as if they were cognitively impaired. In other words, write a software that also an idiot can use, and only idiots will want to use it.

                                                                                                                                                      I disagree. I’ve been using IntelliJ for a few years now, and the new, simplified interface has made my experience a lot better. IMHO you should limit the cognitive overload but enable power users to increase it. See also Wikipedia, where the main editor is basic but if needed you can switch to the code editor and/or add plugins to make the interface a lot more powerful.

                                                                                                                                                      • Ygg2 11 months ago
                                                                                                                                                        I'm calling bullshit on this one. In more ways than one.

                                                                                                                                                        1. Stuff that benefits imparied users benefits others. Subtitles help both. You'll never operate always at peak capacity either.

                                                                                                                                                        2. You can design UI to be layered. Easy mode for beginners and more advanced options for advanced users.

                                                                                                                                                        3. Software that's easy to use sees bigger audience. Period.

                                                                                                                                                        • petre 11 months ago
                                                                                                                                                          They’re the ones asking for it. Release an application with dense UI today and the clients will quickly dismiss it because the market wants to do things as easily as possible with a few clicks - instant gratification. They want a language - computer interface, like Google’s Assistant, but one that works. This is why everybody pushes AI features: the promise of Clippy doing the work for you.
                                                                                                                                                        • LtWorf 11 months ago
                                                                                                                                                          That usually just results in an excessive amount of clicks to get anything done.
                                                                                                                                                        • asoneth 11 months ago
                                                                                                                                                          > It's being actively promoted by companies in order to cut design costs

                                                                                                                                                          I'm curious why you think it reduces design costs to put less information on the screen? My experience has been the reverse -- the companies that chase trends (including but not limited to low-information-density screens and using mobile-first designs for desktop applications) also tend to spend more money on UI design compared to other companies.

                                                                                                                                                          • funcDropShadow 11 months ago
                                                                                                                                                            > I'm curious why you think it reduces design costs to put less information on the screen?

                                                                                                                                                            The question is for whom it saves costs? For the developers of UI framework it certainly saves cost to treat the desktop as a second rate platform and to focus just on mobile.

                                                                                                                                                            Developers of desktop applications have to pay the price, by working around libraries and frameworks that do not consider them as a first tier clients.

                                                                                                                                                            • sulandor 11 months ago
                                                                                                                                                              maybe oversimplified:

                                                                                                                                                              things on screen take effort. less things, less effort

                                                                                                                                                          • zozbot234 11 months ago
                                                                                                                                                            Touch interfaces have less pointing precision, but more swiping precision compared to mouse interfaces. The optimal touch interface probably involves lots of pie menus and/or drag-and-drop gestures that ought to easily compensate for the somewhat increased size of initial touch targets. (Note that, by contrast, these gestures tend to be quite awkward when using mouse or touchpad input.)
                                                                                                                                                            • LtWorf 11 months ago
                                                                                                                                                              Ah, the always easy to discover (only in the mind of the designer) gestures.

                                                                                                                                                              Let's not forget that with the current gigantic size of phones, I can actually easily reach less than 50% of the screen. The top part is completely out of reach.

                                                                                                                                                              • mst 11 months ago
                                                                                                                                                                Because I tend to hold it with my left hand and tap with my right, I've deliberately moved icons around until my most commonly launched apps are as close to the bottom right corner as possible.

                                                                                                                                                                I've actually stopped using the 'switch between running apps' UI almost entirely now because with that done, it's faster for me to tap to the home screen then on the icon of the app I want to switch to.

                                                                                                                                                              • nsonha 11 months ago
                                                                                                                                                                gestures are the time wasting way of doing a click
                                                                                                                                                              • shit_game 11 months ago
                                                                                                                                                                > Mouse interfaces are fundamentally different, because you have much more pointing precision, so it pays off to show more data on the screen. You don't have to cram your interface with with spaces to make it scan-friendly, you just use heterogeneous elements and colors.

                                                                                                                                                                Another massive consideration is that a mouse (and a keyboard, if you want to expand from UI to UX) pairs that precision with significantly more available control actions - LMB, RMB, MMB, scrolling, and hovering.

                                                                                                                                                                With a mouse, the edges and corners of the screen are the easiest and most reliable areas to interact with; this is the inverse of touchscreen UIs, in which the center of the screen is the most ergonomic area of the screen to use, and edges and corners are practically unusable, leading to large margins in almost every UI targeting them.

                                                                                                                                                                With controls like LMB/RMB, you can also have functionality _immediately_ available wherever the pointer is located, which is now quintessential for practically all desktop applications, and which can't be faithfully emulated with touchscreen UIs.

                                                                                                                                                                • Eudaimion 11 months ago
                                                                                                                                                                  Is Cahier built on top of Zotero? It looks very similar.

                                                                                                                                                                  Good notetaking support is something Zotero lacks, so I see the appeal for an alternative that focuses more on it.

                                                                                                                                                                  • felipefar 11 months ago
                                                                                                                                                                    Cahier is built from scratch with native tech. Besides more comprehensive notetaking support, I also want to provide support for synchronization with existing cloud providers (Dropbox, iCloud, etc.).
                                                                                                                                                                  • danielvaughn 11 months ago
                                                                                                                                                                    I should add that I think Tailwind, much as I love it, has been responsible for much of this problem. Tailwind’s creator, Adam Wathan, wrote a book called Refactoring UI. It’s a book that teaches you how to design, and one of the things it explicitly states is that you should add generous spacing around elements.

                                                                                                                                                                    If you look at Tailwind UI, which is clearly governed by the principles laid out in Refactoring UI, you can pretty much see the blueprint behind 95% of websites today.

                                                                                                                                                                    • 11 months ago
                                                                                                                                                                    • mhh__ 11 months ago
                                                                                                                                                                      I work have built some dense UI for certain types of fixed income (bonds and swaps) trading, looking to move it all to svelte because react cannot handle the quantities of data (and if even if it could the code is unbelievably ugly).

                                                                                                                                                                      Something I've been banging on about for a while is the following: Programmers and designers keep trying to rebuild instagram in every domain, pretty UIs, regular UIs, "simple" UIs.

                                                                                                                                                                      This is great when every interaction might be an onboarding, but can be really limiting and stupid in an environment where people are actually paying attention.

                                                                                                                                                                      A proxy I like to use for the above distinction is whether the users are paid more than the programmers

                                                                                                                                                                      • solardev 11 months ago
                                                                                                                                                                        > looking to move it all to svelte because react literally cannot handle the quantities of data

                                                                                                                                                                        I have nothing against Svelte, but how much data are you showing on screen, exactly?

                                                                                                                                                                        Here's an example table with 100,000 cells (100 rows * 1000 columns per row) that seems fine, from a common React UI kit: https://mui.com/x/react-data-grid/virtualization/#column-vir...

                                                                                                                                                                        It seems fast on my computer normally (M2 Max), slow but usable when the CPU is throttled down 4x, and too slow after that. But that's a lot of cells.

                                                                                                                                                                        Here's a performance comparison, btw: https://krausest.github.io/js-framework-benchmark/2024/table...

                                                                                                                                                                        Or filtered down to just Svelte vs some common React libs: https://share.cleanshot.com/LlFXtNx9p6y4kMvqXgc7 (lower numbers are faster; React is generally just a little slower than Svelte, except when it's swapping 2 rows in a big table... then it's 8x slower)

                                                                                                                                                                        • funcDropShadow 11 months ago
                                                                                                                                                                          > Here's an example table with 100,000 cells ...

                                                                                                                                                                          > It seems fast on my computer normally (M2 Max), slow but usable when the CPU is throttled down 4x, and too slow after that. But that's a lot of cells.

                                                                                                                                                                          No, it is not a lot of cells in a table. It is something a Windows95 era PC had no problem doing in something like Delphi Builder. And you find it acceptable that it slows down, if an M2 Max throttles down? Even a throttled down M2 Max is supposed to be 1000x (obviously an exageration, because I am to lazy to apply Moore's Law more rigorously on a Sunday morning) faster than an Intel 486DX. Where did all the compute power go? Are we really using the right tools for our jobs?

                                                                                                                                                                          • rtpg 11 months ago
                                                                                                                                                                            > It is something a Windows95 era PC had no problem doing in something like Delphi Builder.

                                                                                                                                                                            I would recommend you actually try this, because it's not as true as you would like to believe.

                                                                                                                                                                            I am very much pro-"make things fast" but let's not pretend that old machines didn't randomly hiccup on things all the time as well.

                                                                                                                                                                            • pfix 11 months ago
                                                                                                                                                                              In general I agree with your sentiment. But here we are in a browser environment so we should compare performance to a raw HTML table. And then complain if the raw HTML is still slower than Delphi on win95 because HTML tables have been around since back then :D
                                                                                                                                                                              • solardev 11 months ago
                                                                                                                                                                                I think all software is a balance of factors, from performance to ease of use to DX to maintainability, cost, etc.

                                                                                                                                                                                I don't think most tables need to be as peformant as possible, especially when a slow render is still measured in sub-seconds.

                                                                                                                                                                                That level of performance is totally fine for many use cases. If you have a special need for large datasets, yes, you should pay more attention to how that's optimized.

                                                                                                                                                                                But for your average bog standard web app, I think any framework will be just fine, performance wise, on any 10 ish year old device. If it's slow, it's more likely because of ads, tracking, large media, poor caching, distance from a CDN, etc. Especially since React these days is typically rendered to HTML during the build anyway and then rehydrated for interactivity later.

                                                                                                                                                                                React isn't a performance optimization to begin with, but a DX improvement and architecture abstraction lib (vs vanilla or jQuery). It makes some apps much easier to write and maintain across generations of low cost developers. The performance is a small sacrifice, but it's usually not even noticeable.

                                                                                                                                                                                For performance critical apps, probably you'd just bypass the DOM anyway and draw to canvas instead, and offload all the heavy processing to wasm.

                                                                                                                                                                                Yeah, compared to the 90s, our computers and modems are much faster and used less efficiently. But there are billions more users and millions more developers of various skill levels now, and that's just a tradeoff we get for mass adoption. It's no longer just a tool for elites, but just another tool in the office, and often times a race to the bottom like anything else in business (in terms of React devs being low cost commodities). A small React team can put together a functional app much quicker and cheaper than with vanilla, at the cost of some usually negligible performance. Probably a good tradeoff for most apps.

                                                                                                                                                                                If you're talking about web apps in general, compared to desktop or CLI apps, then yeah, I agree that it's a bit of a shame this is what won the desktop platform wars. At least on mobile we have native apps (which often feel much faster than anything web based), so there's that at least.

                                                                                                                                                                              • cageface 11 months ago
                                                                                                                                                                                React is also considerably slower than svelte in this benchmark in selecting, clearing, adding and creating rows and also uses a lot more memory.

                                                                                                                                                                                For a lot of apps React is fast enough but you're definitely starting at a non-negligible performance disadvantage compared to faster frameworks.

                                                                                                                                                                                • solardev 11 months ago
                                                                                                                                                                                  I don't know that a 15 millisecond difference in rendering performance is going to matter to anyone =/ The memory usage is in megabytes too. It's not much. For sure React is slower on paper, but in most cases it's a non-issue. Nobody chooses React for its performance benefits anyway, but because of its huge ecosystem of libs and developers. In most cases it's fast enough.
                                                                                                                                                                                • treyd 11 months ago
                                                                                                                                                                                  I don't know what GitHub projects uses but we have ~200 tickets in it and it absolutely chugs. Even typing text into new entries will regularly hang for multiple seconds every few words.
                                                                                                                                                                                  • anonymoushn 11 months ago
                                                                                                                                                                                    It's defective because the browser's find feature does not work.
                                                                                                                                                                                    • solardev 11 months ago
                                                                                                                                                                                      Good catch! I didn't realize that about this lib. It has some consideration for what it calls "overscanning", but that only extends a little bit past the current view.
                                                                                                                                                                                    • mhh__ 11 months ago
                                                                                                                                                                                      Amongst other things, the primary expense is lot of visual elements in a very dense chart that ideally would be ticking with the market in ~real time and allow more than one on the screen.

                                                                                                                                                                                      A lot of it probably should be a canvas but there's a good amount of interactivity on the chart itself so moving it all over might be expensive.

                                                                                                                                                                                      You obviously can bludgeon that into react but it's at the point where the diffing does seem to be non-trivially expensive and requires a bunch of nursing in the code which is frankly an insane waste of time in 2024.

                                                                                                                                                                                      React is completely fine for big tables, especially if they don't actually change very much.

                                                                                                                                                                                      I will also note that in turn this started out as a d3 project, react was much much faster than d3.

                                                                                                                                                                                      Edit: Completely forgot to mention memory consumption. We have beefy machines so it's not really a critical problem but think of the poor caches!

                                                                                                                                                                                      • solardev 11 months ago
                                                                                                                                                                                        (Not that you're asking for advice, but hope you don't mind me sharing some anecdotal experience...)

                                                                                                                                                                                        When we had to do similar things, we found that it was much much much faster to take all that sort of stuff out of the DOM and put it into Canvas. You can still wrap React around it for the UI and controls and data passing and all that, but the actual rendering need not involve the VDOM or even the real DOM at all. With ChartJS we were able to get it to show tens of thousands of individual data points in a time-series scatterplot, each datapoint interactive and real-time, with no noticeable lag. And it was super easy to integrate into our React app. https://www.chartjs.org/

                                                                                                                                                                                        If it's not just charts, here's another canvas-based drawing lib: https://konvajs.org/docs/sandbox/20000_Nodes.html (and its React tie-in: https://konvajs.org/docs/react/Intro.html)

                                                                                                                                                                                        Not trying to discourage you from exploring Svelte if you want to, but it might be less work to just use an existing optimized drawing lib. Regardless of the JS framework used, the DOM is going to be much slower than a Canvas.

                                                                                                                                                                                    • devjab 11 months ago
                                                                                                                                                                                      I’m not going to discourage your move to svelte, but we do solar data from over a thousand plants and over a million inverter datapoints supplying literal fuckton of data every minute. We combine this with financial data from over 20 countries and budgeting from so many companies we’ve had to buy so many BC365 instances it’s ridiculous that we even use BC365. We present all of it, along with hundreds of tools in a react frontend. It has various backend services, from external to internal in c++, C#, Go, Typescript and Python

                                                                                                                                                                                      We don’t have performance issues with react. I’m not sure I’d really recommend react as such, with the way the ecosystem is leaning more and more into Next, but I doubt that its react itself which is giving you performance issues. I think you should look into how you’re loading and unloading data.

                                                                                                                                                                                      • art0rz 11 months ago
                                                                                                                                                                                        At $dayjob I work on a very dense UI for a financial institution. Think Bloomberg terminal in React and RTK. It's extremely customizable and had lots of elements updating multiple times per second (charts, graphs, enormous tables, etc.) with realtime data coming through over a websocket. We do very little actual performance tuning and mostly just follow best practices.

                                                                                                                                                                                        I don't think React is to blame for your performance issues.

                                                                                                                                                                                        • korm 11 months ago
                                                                                                                                                                                          If seeing how common `eslint-disable-next-line react-hooks/exhaustive-deps` is any indication, people just don't bother with best practices. Not to mention the majority of people I interview or hire don't know anything about CSS performance, they learn on the job. They'll happily add 1000 box shadows in a view if it's in the design.

                                                                                                                                                                                          Also OP is looking to move an existing React UI to Svelte, why not try Preact first instead of an entire rewrite? Or even Inferno or million.dev? If they did and they're insufficient, I don't even believe the browser's DOM is the right technology for that UI then.

                                                                                                                                                                                        • steve_taylor 11 months ago
                                                                                                                                                                                          I love Svelte and agree with you about performance, but its built-in CSS management has some showstopper bugs that are more likely to become apparent the bigger your app gets. If you use :global to target elements in child components (which is inevitable), you’ll run into specificity issues caused by Svelte not removing CSS after components stop rendering. Apparently it’s “by design”, i.e. it’s too hard for the Svelte maintainers to figure out and/or cleaning up would hurt them in benchmarks.

                                                                                                                                                                                          I guess it’s OK if you use something else for CSS such as Tailwind.

                                                                                                                                                                                          • candu 11 months ago
                                                                                                                                                                                            It's always worth thinking about who the audience / userbase of your UI is, and whether they'd benefit from an expert user interface [1] or not.

                                                                                                                                                                                            Sometimes, they would (e.g. the "users paid more than the programmers" rule of thumb, but also: various technical disciplines, most anything used for professional-grade work). Sometimes, they wouldn't - or perhaps some would and some wouldn't (so perhaps you're looking for a simple base UI with some accelerators [2]).

                                                                                                                                                                                            IMHO the issue is that many products fall into this last camp - where a well-designed simple UI is called for, but also accelerators could greatly help a small but important subset of power users - but we treat the power users as though they don't exist.

                                                                                                                                                                                            [1] https://www.nngroup.com/articles/testing-expert-users/ [2] https://www.nngroup.com/articles/ui-accelerators/

                                                                                                                                                                                            • doctorpangloss 11 months ago
                                                                                                                                                                                              > Programmers and designers keep trying to rebuild instagram in every domain, pretty UIs, regular UIs, "simple" UIs.

                                                                                                                                                                                              Well, Instagram is basically the only application people use, along with e-mail, YouTube and TikTok. Some people use Spotify, and fortunately no one is trying to copy its design, so I feel like the programmers and designers are onto something.

                                                                                                                                                                                              • funcDropShadow 11 months ago
                                                                                                                                                                                                > Well, Instagram is basically the only application people use, along with e-mail, YouTube and TikTok

                                                                                                                                                                                                No, those people are not using email, they are using what Google tells them what email is. A poor imitation of email.

                                                                                                                                                                                                • The_Colonel 11 months ago
                                                                                                                                                                                                  * basically the only people from your bubble use
                                                                                                                                                                                                • andrewstuart 11 months ago
                                                                                                                                                                                                  >> react literally cannot handle the quantities of data

                                                                                                                                                                                                  Presented at fact but I’m not sure this is universally correct.

                                                                                                                                                                                                  I don’t see why the application that is linked here couldn’t be done in react.

                                                                                                                                                                                                  • solardev 11 months ago
                                                                                                                                                                                                    The application linked here is only showing 270 cells at once. I think even the slowest framework can handle that...

                                                                                                                                                                                                    It's when you get to thousands/tens of thousands of data points that things can really slow down without good optimizations, especially if you're modifying the DOM or manipulating SVGs (as opposed to drawing to Canvas, typically).

                                                                                                                                                                                                    • funcDropShadow 11 months ago
                                                                                                                                                                                                      But isn't that exactly the point of such UI libraries? To provide those optimizations. Because the easy case, I can do myself.
                                                                                                                                                                                                    • mhh__ 11 months ago
                                                                                                                                                                                                      Removed the word "literally" (riffed too enthusiastically there) because my point was that's its already a bit slow, will only get slower as more things are added, and the code is already ugly despite being basically conventional/boring react.

                                                                                                                                                                                                      The data I'm displaying also is quite deep and results in the creation of a lot of DOM elements (i.e. its visual rather than tabular). It noticeably chugs a bit even when the actual changes to be displayed are relatively small.

                                                                                                                                                                                                      • 11 months ago
                                                                                                                                                                                                      • moomoo11 11 months ago
                                                                                                                                                                                                        Yep not true at all lol. I’ve built extremely complex UIs with react with solid performance. Just need to know react better, I guess.
                                                                                                                                                                                                        • cageface 11 months ago
                                                                                                                                                                                                          React can handle dense interfaces with a lot of elements but you have to be very careful with memoization and it's extremely easy to accidentally introduce significant performance regressions if something in your memoization chain breaks.
                                                                                                                                                                                                          • mhh__ 11 months ago
                                                                                                                                                                                                            Would you say all that useMemo (et al) was a productive use of your time? One of the things I like about svelte is that it seems to encourage code to be naturally fast rather than deal with a load of abstraction leakage (very productive abstraction leakage, but still) everywhere

                                                                                                                                                                                                            Dan Abramov's favourite UI is apparently spotify, I think it shows in the things react seems to be designed for.

                                                                                                                                                                                                            I dropped the word "literally" from my original comment as I didn't think before I wrote (classic), now I think it's a fair comment.

                                                                                                                                                                                                        • ChrisMarshallNY 11 months ago
                                                                                                                                                                                                          I suspect Bloomberg terminals fit that bill.
                                                                                                                                                                                                          • solardev 11 months ago
                                                                                                                                                                                                            I'd never heard of those until your post, and had to look up a Youtube about what they were: https://www.youtube.com/watch?v=2ee-x6IXWK8

                                                                                                                                                                                                            That's super fascinating. There's an entire industry that runs off these things, on their totally custom UI, showing everything from stock tickers to news headlines to maps? That must be a fun project to work on (except probably the finance users don't like random UI changes, lol).

                                                                                                                                                                                                            • funcDropShadow 11 months ago
                                                                                                                                                                                                              > except probably the finance users don't like random UI changes, lol

                                                                                                                                                                                                              I have bad news for you, nobody who works with a system more than casually, likes random UI changes. NOBODY. Younger people are often more tolerant to these distractions, because they are often more curious. But when you have used a tool for some longer time, and suddenly it looks or behaves different, that erodes trust. That forces the user to turn of the mental autopilot and to proceed with care. Which A/B tests will report as increased engagement of the users. And there is our vicious cycle.

                                                                                                                                                                                                              Note, how a scheduled update with release notes does the opposite. It increases trust, because it tells you what is going to happen and then it happens. (Hopefully)

                                                                                                                                                                                                              • mhh__ 11 months ago
                                                                                                                                                                                                                The real reason to have bloomberg, other than data, is actually the chat.

                                                                                                                                                                                                                OTC (things that don't trade on exchanges) markets are a lot closer to ebay or facebook marketplace than many realise, for example, e.g. you ask for a price, possibly haggle a bit, say you want it, behind-the-scenes people scurry off and actually make it happen.

                                                                                                                                                                                                                When you first activate your terminal bloomberg send you an email congratulating you on joining "the exclusive club" (this is exaggerated, they want you to feel special, but there's truth to it).

                                                                                                                                                                                                                As well as all that bloomberg is technically also still (iirc) one of the largest private computer networks.

                                                                                                                                                                                                                > That must be a fun project to work on

                                                                                                                                                                                                                Unfortunately possibly quite the opposite for many, although no first-hand experience.

                                                                                                                                                                                                                • pokepim 11 months ago
                                                                                                                                                                                                                  lol this is probably most famous financial tool on the market. No wonder we have so many new software tools being created daily since some people don’t do basic market research.
                                                                                                                                                                                                                • mhh__ 11 months ago
                                                                                                                                                                                                                  avg salary of a bloomberg user is lower than some people might think because there are a lot of support staff who have bloomberg.

                                                                                                                                                                                                                  As for the UI: I wish more things were like bloomberg, but bloomberg itself can be slightly hobbled by wanting to lay everything out as a table all the time when a custom chart designed by a creative domain-expert would be almost as useful.

                                                                                                                                                                                                                  • defrost 11 months ago
                                                                                                                                                                                                                    There's two clear points to be made:

                                                                                                                                                                                                                    * Why change to something that's "almost as useful" .. that's a downgrade.

                                                                                                                                                                                                                    * Pretty is often the enemy of Consistent.

                                                                                                                                                                                                                    On that second point, it doesn't have to be .. but it can take a great deal more effort to have data presentation that's both creative and consistent and dense.

                                                                                                                                                                                                                    The domain goals here are rapid navigation of dense infomation across tens of thousands of companies, timespans, portfolios, groupings, comparisons, etc. With a good interface the user quickly finds the desired scope and view and automatically eye tracks to the wanted figures.

                                                                                                                                                                                                                    It's not an interface for pretty board room presentations (although in an organisation that promotes based on merit in the ditches most senior staff would be familiar with a Bloomberg Board) - it's a daily driver for engine room.

                                                                                                                                                                                                                    I'm not defending this specific interface, just highlighting what is common to many similar domain tools.

                                                                                                                                                                                                                    • throwaway2037 11 months ago

                                                                                                                                                                                                                          > there are a lot of support staff who have bloomberg.
                                                                                                                                                                                                                      
                                                                                                                                                                                                                      Much less than people think. It costs about 25K USD per year per terminal. There might be one shared terminal in a whole middle or back office.
                                                                                                                                                                                                                  • mst 11 months ago
                                                                                                                                                                                                                    May also be worth a look at Solid and things the same author has built on his dom-expressions library (I've been thinking about using his mobx-jsx for example) - a more React-ish experience but with a compilation strategy that seems to've been written with a similar aesthetic and set of trade-offs in mind to Svelte.

                                                                                                                                                                                                                    (Svelte is awesome, mind, I compare the two to compliment them both)

                                                                                                                                                                                                                    • andrewstuart 11 months ago
                                                                                                                                                                                                                      Here you go I hacked the page into React so you can see performance.

                                                                                                                                                                                                                      https://static.crowdwave.link/index.html

                                                                                                                                                                                                                      And the source: https://static.crowdwave.link/sveltetest.zip

                                                                                                                                                                                                                      • dhruvrajvanshi 11 months ago
                                                                                                                                                                                                                        Instead of a rewrite, why not try using AgGrid? It's a pure JS grid library that's really fast and it's got react bindings.

                                                                                                                                                                                                                        It's even got a batch update API.

                                                                                                                                                                                                                        I doubt that naively rewriting the app in Svelte is gonna give you the perf boost you're looking for.

                                                                                                                                                                                                                        • 11 months ago
                                                                                                                                                                                                                        • Olesya000 11 months ago
                                                                                                                                                                                                                          [dead]
                                                                                                                                                                                                                          • arpowers 11 months ago
                                                                                                                                                                                                                            [flagged]
                                                                                                                                                                                                                            • thr0waway001 11 months ago
                                                                                                                                                                                                                              cool.
                                                                                                                                                                                                                              • revskill 11 months ago
                                                                                                                                                                                                                                No explanation of "cool" is discouraged in this boring forum.
                                                                                                                                                                                                                                • yazzku 11 months ago
                                                                                                                                                                                                                                  It should have been prefixed with "AI".
                                                                                                                                                                                                                            • sbr464 11 months ago
                                                                                                                                                                                                                              I appreciate that you are using this idea, but keeping padding and other design in tact, unlike most linux/unix devs that like dense ui.
                                                                                                                                                                                                                              • amelius 11 months ago
                                                                                                                                                                                                                                An infinite scroll would have more UI density.

                                                                                                                                                                                                                                Or a rich text editor containing 200 pages of text.

                                                                                                                                                                                                                                • ricardobeat 11 months ago
                                                                                                                                                                                                                                  More information, yes, not density. Same for pagination. Information density = amount of information you can gather at once within a space, before any interaction.
                                                                                                                                                                                                                                  • amelius 11 months ago
                                                                                                                                                                                                                                    It depends on definition (a page is still a page, even if not everything is visible).

                                                                                                                                                                                                                                    The point is that Svelte may have trouble processing many off-screen elements, and those would be good tests.

                                                                                                                                                                                                                              • woodsie 11 months ago
                                                                                                                                                                                                                                I'm guessing it's an experiment on whether it's possible to make a human nauseous with a UI.
                                                                                                                                                                                                                                • wiseowise 11 months ago
                                                                                                                                                                                                                                  Not enough useless whitespace for your taste?
                                                                                                                                                                                                                                • solardev 11 months ago
                                                                                                                                                                                                                                  This a flashback to the DOS era for me, or CLI utils like 'top'. I can't quite express why, but I find it a bit ugly and vaguely annoying. Probably reminds me too much of unstyled spreadsheets, or maybe I've just been brainwashed by modern trends...

                                                                                                                                                                                                                                  Regardless, I guess my primary gripe with it is the cognitive overload. A bunch of numbers (stocks? not sure) and names that all look the same, sometimes with different color end digits (why is the zero gray sometimes), in a vast sea of information but no context. What is the most important item at any given time? What do I need to pay attention to? I mostly just glaze over and tune it out because there's way too much going on.

                                                                                                                                                                                                                                  I get that it's an experiment (and ultimately a preference). Just not my thing, I guess.

                                                                                                                                                                                                                                  • klaussilveira 11 months ago
                                                                                                                                                                                                                                    You are thinking about this from a end-user perspective, not a power user. It's the difference between eToro and Active Trader Pro. Or Fidelity's own app and their Active Trader Pro. There's is no right and wrong, they just target different audiences with different priorities.

                                                                                                                                                                                                                                    That's why we like btop and htop, but a normal PC user wouldn't understand anything.

                                                                                                                                                                                                                                    • solardev 11 months ago
                                                                                                                                                                                                                                      I'm not familiar with the UI of financial software, sorry. But can I ask what a power user in your example would be looking for in a screen like this? Like are they watching the screen for movement, color, ordering, something else...?

                                                                                                                                                                                                                                      The most similar things I've worked on were dashboards and spreadsheets, but in those cases, we put a lot of thought into information hierarchy and organization, not just flat density.

                                                                                                                                                                                                                                      For example, we'd hide what we could behind traffic status lights ; if all systems were green, you're good, and you'd only need to dig deeper into ones outside the norm that were yellow or red.

                                                                                                                                                                                                                                      Or where the metric itself is important and shouldn't be hidden, we'd still try to highlight changes over time with sparklines or conditional color scales.

                                                                                                                                                                                                                                      Basically just try to guide the report viewer's attention towards the most important things, whether it's "this is broken!" or "whoa, this number changed a lot over the last 24 hours".

                                                                                                                                                                                                                                      Even in a spreadsheet, there'd be sparklines and cell formatting and subtotals and totals and such to highlight the important stuff.

                                                                                                                                                                                                                                      I can't think of a situation where I'd want to see a bunch of peer numbers like this with no hierarchy. I'm not really comparing them against each other, am I, but probably trying to see change over time...?

                                                                                                                                                                                                                                      But anyway, I honestly don't know (and am curious about) how this works in the financial sector. Are traders really just manually looking at all these numbers all the time (and doing what with them, trying to remember what they were some time ago?)?

                                                                                                                                                                                                                                      • gala8y 11 months ago
                                                                                                                                                                                                                                        This complexity also shows in 3d software. I love all these UIs like 3dmax, SoftImage (!), Blender, Lightwave. Creating 3d has so many aspects to it and it shows in complexity of these UIs. Generally speaking, I much prefer being able to click one of many things shown on the screen than clicking through endless sub-menus, which was always a waste of time for me.
                                                                                                                                                                                                                                        • solardev 11 months ago
                                                                                                                                                                                                                                          It's an interesting question (how much density is "right" for productivity apps).

                                                                                                                                                                                                                                          On one hand, I still hate the MS Office "ribbon" UI to this day and much prefer the denser and more compact Google Docs or even Open Office layout.

                                                                                                                                                                                                                                          On the other hand, Sketchup was hugely popular and very easy to use compared to its peers when it was released, and quickly became the de facto tool for simple free basic 3d modeling, in no small part because of easy and clean it was, I think. But they got bought out and then abandoned, I think? It doesn't have anywhere near the power of the other software anyway.

                                                                                                                                                                                                                                          IDEs are another example. VScode seems a lot cleaner and leaner than old IDEs, and Jetbrains ended up copying them too (a controversial change, of course).

                                                                                                                                                                                                                                          Photoshop is the one that always gets me. Twenty years of using it and I still can't get used to its layout. It's just so many different weird widget types mashed together in a way you don't see in any other software. I much prefer a docked toolbar like in Figma or Paint Shop Pro. I hate that I use it... I feel like a hostage every time I open it.

                                                                                                                                                                                                                                        • layer8 11 months ago
                                                                                                                                                                                                                                          Just a nit, but power users are end users.
                                                                                                                                                                                                                                        • TehShrike 11 months ago
                                                                                                                                                                                                                                          I wonder if it would feel less annoying if the majority of the text was a bit higher contrast
                                                                                                                                                                                                                                          • solardev 11 months ago
                                                                                                                                                                                                                                            You can fiddle with the interface and tweak some layout parameters in the sidebar somewhat.

                                                                                                                                                                                                                                            By the time I got it to something I liked, it severely violated the spirit of the experiment, lol (was too big and sparse, with lots of padding between items – the opposite of what it was trying to show): https://share.cleanshot.com/0xD9bPcWD1CL5wDvlVhB

                                                                                                                                                                                                                                            And I still don't know how these numbers are used. I wouldn't be able to keep track of even 3-4 numbers at once, much less the dozens here.