Live data from Hacker News

Software Disenchantment (2018)

tonsky.me

461–470 of 504 posts

Re: Software Disenchantment (2018)

#461

Earlier quoted context omitted.

Wouldn't it be better to delay the appearance of the spinner, so it doesn't show at all for those fast operations?

You can still end up with the jarring flash. Say you delay 100ms--if the action takes 120ms, you have the same problem.

Flash is good. If the state transition is "no indicator -> spinner -> checkmark", then if the user notices the spinner flashing for one frame, that only ensures them the task was actually performed.

It's a real case, actually. I don't remember a name, but I've encountered this situation in the past, and that brief flash of a "in progress" marker was what I used to determine whether me clicking a "retry" button actually did something, or whether the input was just ignored. It's one of those unexpected benefits of predictability of UI coding; the less special cases there are, the better.

Re: Software Disenchantment (2018)

#462

Earlier quoted context omitted.

I mean... considering the fact that in contains the probabilities of typing every single word in the English language versus every other, at every stage of typing, including potentially the probabilities of all the ways you might mistype each word while swiping without precise accuracy... ...maybe? I don't know if that's 150 MB' worth of data... but it's certainly a lot.

So why is it persistently, perniciously and stubbornly insistent in refusing to spell 'naughty' words like 'duck'?

Probably because it contains extra data about which words are "naughty".

Re: Software Disenchantment (2018)

#463
post #266

Earlier quoted context omitted.

Hah, I have nice studio monitors since forever, but I also make music with Earbuds. I like them, but I've found that they make a bit too conscious about the sound, so I have to be extra careful. The isolation emphasizes noise and frequencies that the monitors don't, and that will be masked in the full mix. It used to lead me to a rabbit hole of noise-gating and EQs.

Interesting; I could totally see myself going down the same rabbit hole, or the opposite, thinking that a certain faint sound will be great, but when I play it in my car later it's completely unnoticeable.

> thinking that a certain faint sound will be great, but when I play it in my car later it's completely unnoticeable.

That's true! This happens all the time with super expensive recordings too, and I love it. IMO discovering new sounds in the music you're used to only adds to the experience.

Re: Software Disenchantment (2018)

#464
post #82
post #48

Earlier quoted context omitted.

> These days, I think most users will lose more time and be more frustrated by poor UI design, accidental inputs, etc. than any performance characteristics of the software they use. I’m willing to bet that a significant percentage of my accidental inputs are due to UI latency.

Virtually all of my accidental inputs are caused by application slowness or repaints that occur several hundred milliseconds after they should have. I want all interactions with all of my computing devices to occur in as close to 0ms as possible. 0ms is great; 20ms is good; 200ms is bad; 500ms is absolutely inexcusable unless you're doing significant computation. I find it astonishing how many things will run in the…

The rule for games is that you have 16ms (for a 60Hz monitor) to process all input and draw the next frame. That's a decent rule for everything related to user input. And since there are high refresh-rate monitors, and it's a web app and not a game using 100% CPU & GPU, just assume 4-5ms for a nicer number. If you take longer than that to respond to user input on your lowest-capability supported configuration, you've got a bug.

0ms is great, 4ms is very good, 16ms is minimally acceptable, 20ms needs improvement (you're skipping frames), 200ms is bad (it's visible!), 500ms is ridiculous and should have been showing a progress bar or something.

Responding to input doesn't necessarily mean being done with processing, it just means showing a response.

Re: Software Disenchantment (2018)

#465
post #394

From a Reddit comment: > While I do share the general sentiment, I do feel the need to point out that this exact page, a blog entry consisting mostly of just text, is also half the size of Windows 95 on my computer and includes 6MB of javascript, which is more code than there was in Linux 1.0. Linux at that point already contained drivers for various network interface controllers, hard drives, tape drives, disk drive…

Since this Reddit comment was made, the Twitter iframe responsible for the megabytes of JavaScript has been replaced by a tag. The only JavaScript left on the page is Google Analytics, which is way less than 6MB.

I feel bad now that my comment received so much attention. I didn’t realize that the Reddit comment was made a year ago, and I should have tested the webpage size myself. The author’s argument is still important, after all.

Re: Software Disenchantment (2018)

#466
post #247

Earlier quoted context omitted.

To the extent it's in your power as a developer and a team member, don't tolerate low-performance code from yourself or your co-workers. In my experience, a lot of performance problems boil down to really stupid problems, like simple code using the wrong data structure out of convenience (e.g. linked lists instead of arrays for lots of randomly-accessed data), or structured in a bad way (e.g. allocating a lot of smal…

I agree with your point of developers being responsible for the performance. But I have a different experience (probably because we work in different areas): Most the performance problems of the products I ever worked were purely systemic. They boiled down to technologies and architectures having been chosen for "organizational" rather than technological reasons. And "organizational" is in quotes because sometimes it…

This has been a major frustration for me as a UI developer on the current application I work on. The UI is often hamstrung by how the backend API was implemented. There are frequently cases where we stitch together pre-existing API functionality to make something work in a far-from-ideal manner just because it would take longer to do it right and no one is interested.

Re: Software Disenchantment (2018)

#467

When I was in school and first leaning about programming I assumed that code written in C or Java would eventually be ported to hand tuned assembler once enough people were using it. Then I got in to the industry and realized that we just keep adding layer after layer until we end up at the point this article talks about. I remember once reading that IBM was going to implement an XML parser in assembler and people we…

It's not NN-based, but you might be interested in https://en.wikipedia.org/wiki/Superoptimization.

Re: Software Disenchantment (2018)

#468
post #247

Earlier quoted context omitted.

I agree with your point of developers being responsible for the performance. But I have a different experience (probably because we work in different areas): Most the performance problems of the products I ever worked were purely systemic. They boiled down to technologies and architectures having been chosen for "organizational" rather than technological reasons. And "organizational" is in quotes because sometimes it…

This has been a major frustration for me as a UI developer on the current application I work on. The UI is often hamstrung by how the backend API was implemented. There are frequently cases where we stitch together pre-existing API functionality to make something work in a far-from-ideal manner just because it would take longer to do it right and no one is interested.

I've seen a similar thing happen. It all started with good intentions, like only having simple endpoints that do "one and only one thing".

In the end the backend was pure and beautiful, but the the frontend devs had to perform joins in the the client and make 21 API calls in a 20-item list and then everything goes to hell.

Re: Software Disenchantment (2018)

#469
post #362

Earlier quoted context omitted.

What year MBP is this? I tried running Ubuntu on Virtual Box on my mid 2014 MBP with 16GB ram, but that was anything but smooth. I ended up dual booting my T460s instead. But perhaps the answer is VMware Fusion instead then.

It's a late 2013 MBP, 16GB RAM. I've only given Linux 6GB RAM at the moment, and it's working out fine. Currently running Ubuntu 19.10. I picked VMware Fusion originally because it was reported to have good-ish support for GPU emulation that was compatible with Linux desktops at the time. Without it, graphics can be a bit clunky. With it, it feels smooth enough for me, as a desktop. My browser is Firefox on the Mac s…

Thanks a lot for the long through reply. It sounds like I might want to give VMware Fusion a go if I want to play around with Linux on my MBP again.

Re: Software Disenchantment (2018)

#470

Earlier quoted context omitted.

Trains transports at 0.41 MJ/t·km. If the person weights 0.1t it would take a train packed full of people 41MJ per person to transport them 100km, or a bit more than one litre of gasoline. I don't think it is possible to go significantly below that without transporting them on mag rails or vacuum pipes. Secondly we talked about 0.005l cars, not 0.05l, so it would be a few hundreds times more efficient than train tran…

Bicycles are probably a bit more efficient than trains.

Its about the same, you burn several thousand calories or a few tens of mega-joules biking 100 km.
Post reply on HN