I think the author has a certain writing style that you apparently dislike, which is fine, but it’s hardly slop. I agree that the comparison between Sketch being somewhat unreliable but fast undercuts the claim that speed and reliability often go hand-in-hand — though one could argue that the modifier “often” saves it.
I’ve found that writers who self-profess to have ADHD often write in this way, with multiple, seemingly disparate points being made that can tie together if you squint. As an ADHD person who enjoys writing, it makes sense, and at least in my head, these points always connect; I’m just not great at demonstrating how they connect. I’ve no idea if the author is neurodivergent, but it’s one possible explanation.
Example: I only buy basic Logitech B110s wired mice. No vendor software needed to activate mostly useless extra functionality, compatible with every single OS, including OpenBSD which doesn't support Bluetooth. In this case, no (driver) software is the best software.
Yes. Code doing what you need && nothing else is better than code doing what you need && 10 other things you don't need but have to take a perf/memory/clutter hit for.
I fully agree. I loathe slow software. I hate bloat. I love fast software. As a developer, I'm completely, even irrationally, obsessed with speed, performance optimization, and profiling. I wish more developers felt the same way.
OP is probably referring to many engineering managers who think it is irrational to spend an hour in order to speed up a computing task that only shaves a few milliseconds off.
Even when that software is widely used so the few milliseconds add up to thousands of hours in collective time savings. 'We don't pay for user's time, only your's', is the attitude. Again 'irrational'.
The sad part is that most employers don't care particularly about performance optimization skills (the economics don't work out, they can often just fix the problem cheaper with more hardware—and even if they can't, they mostly don't bear the cost themselves).
The fun part is that when your employer _does_ care about software optimization, few people are actually good at it and your skills are more exclusive :-)
Fast and efficient software varies depending on the local context, but for me, I think I'd be fine with something slower as long as it's convenient enough. After all, once it passes a certain threshold, I can barely even notice the speed difference anyway.
Simple tasks being barely fast enough alone is not fast enough, as they could unexpectedly slow down to a halt if you run a moderately heavy load alongside them.
Speed enables more features and also simpler architectures and algorithms, since you can rely more on brute force in higher-level code.
I run headless Alpine Linux (a minimal distro) in my homelab and it’s fast AF. The lag in Windows Explorer is sad when something like cd folder/folder is instant in Linux.
To be fair, cd folder/folder is also instant in a command line in Windows, it's just the GUI aspects that are slow. Comparing Windows Explorer to a terminal is comparing apples to oranges.
I don't think so. Windows is a GUI first OS, and Linux is a CLI first (or even CLI native) OS. You can't open a command line window in Windows without loading more than half of the desktop stack.
In that sense, when a terminal (running on a desktop environment) in Linux is faster than Windows Explorer, it's a shame. When a big file explorer like Dolphin drives circles around native file explorer of Windows, that's a big ole embarrassment.
I don’t think I’ve ever noticed a difference in speed on the terminal between distros. Shells (or more accurately, plugins / frameworks - I recently gave up oh-my-zsh in favor of zimfw for that reason), yes, but not the terminal itself.
I really don't understand how you can even create software that feels as bad to use as Windows Explorer. It's like it's barely attached to reality. There's this weird floaty delay in everything. You copy a file, or did you? You're not sure. It hasn't updated yet. Oh, now the copy dialog appears with this progress bar that isn't showing progress. The dialog just sits there. Is something happening? I don't know. Many seconds later the dialog closes. But it hasn't showed up in the window yet... oh, now it did!
How is that even possible, especially with modern hardware? Like you'd almost have to build the file explorer around like a sqlite-based message queue with a 1500ms poll interval to get performance characteristics like this. Absolutely insane feats of architecture astronautism are no doubt required for this to happen.
>I really don't understand how you can even create software that feels as bad to use as Windows Explorer.
I was wondering how bad a sign it was when the decline in performance between Windows 95 and Windows 98 was detectable in many ways, but nobody was complaining because it was not always noticeable on PCs that were 3 years newer. You had to figure Microsoft developers had way better PCs than that, and didn't have any clue at all.
Turns out my suspicions were correct, it was the insidiously ignored ramp-up to exponential amounts of sluggishness as time marches on.
Well yeah, it kinda feels like you're using NFS, and the server you're connecting to is in orbit around mars and is using a pringles cantenna to get its wifi signal back to earth.
Like the vanilla file explorer experience is way worse than anything I've come to expect with stuff like CIFS and SMB.
When it comes to navigating (except public transit), hiking, and route building, Organic Maps[1] is very good. OSM data and offline-first is the way forward for detailed and _fast_ map experience.
For cycling route building I have to mention BRouter[2], which allows you to write a custom cost function that is used to tweak your route preferences.
I remember an engineer I talked to recently saying that OSM didn't have sufficiently up-to-date data for their routing use case -- new roads, closed roads, traffic data, etc. Is that the case?
Isn't OSM the data layer, and people are free to build apps on top of it?
"The data is better than Google maps, it just needs a better routing algorithm" should be catnip to a certain class of OS dev. If it's really true, I'll take a crack at it myself!
At its best, the OSM data puts Google to _shame_. Super-fine resolution and details, nuances of street layout precisely correct, mountains of meticulously-maintained metadata that makes manifold niche geospatial apps possible.
Alas, in any given area, OSM is only as good as the union of the publicly-provided street data and the obsessiveness of the area's mappers.
Most towns in central PA, for example, have no street address listed for hundreds of buildings.
I've made many small contributions to help, and really enjoy doing so, but someone looking for driving directions needs to be able to whip out their phone and slap in an address / business name and have it Just Work.
You can't reliably count on OSM for that.
I wind up falling back from OsmAnd to Gmaps probably every fifth drive.
It's a network effect thing - if enough people used an OSM client and opted into sharing anonymized location data, you might be able to get somewhere with it.
In practice, I think it'd have the same problem as the core map data - surprisingly good data in places with a lot of adopters, and nothing at all in places without.
That said, though, the traffic data is pretty secondary - a good, open routing engine would be lovely to have, and will slowly become more relevant as the map expand and fills out.
I think it's the different feeling you get from using an end-to-end streaming service (compute, not videos) versus the one that does a lot of intermittent buffering. It's quite subtle actually. Using a vanilla language model can feel like that if it's also sufficiently small but they are going towards the opposite direction very rapidly now because cloud.
The neglected part here is latency, speed itself can be masked
by progress bars/animations, but having visible lag ruins the idea
of speed and users treat it as slow vs animated loading bar.
Maybe it's me who's weird, but I find animations as much worse - it's basically pointless and wastes slightly more time (even when program is fast enough!).
The interface without animations feels snappier even if sometimes it takes a second to load. I disable any and all animations in software that I can - particularly in Android (via developer settings) and Linux (i3+vim vs something like KDE+VScode).
> I regularly use a website in which a submit button does not change state in any way. It is indistinguishable from the click having gone to /dev/null. And the completion of the action takes a copule of seconds.
In the good old days, you'd have the request sent by that button reveal a small, transient status bar showing the target URL at the bottom, plus the "Refresh" button in the browser toolbar would change to "Stop" instead; both effects lasted for the duration of the network roundtrip. It was enough of an indicator, and since it was not controlled by the website, it wouldn't break or lie to you.
Shout-out to PowerSync for making it easier to develop fast offline-first mobile apps. It pushes data from Postgres/MySQL/SQL Server subscriptions to a SQLite into the user's mobile device, avoiding the need for many loading animations when the data is there ahead of time. My company is a customer and we recommend it.
Yes, there are so many examples of this .. a recent one for me, is iStatMenu .. it just got to the point that waiting for it to start, alone, was sufficiently boring enough that I sought an alternative .. and of course, I realized, there's no reason not to use the Linux tooling I'm accustomed to, and so I have btop where iStatMenu used to live, kinda. btop doesn't get in the way, doesn't phone home, doesn't check a registration key, isn't harvesting key clicks, and .. so on .. its just small, light, and fast.
Well, with the encumbrance of it living in a terminal window, but I also live in the terminal window even on MacOS, so its a feature not a bug.
Point is, I wouldn't have this to say about it if iStatMenu had just been a little more discrete about its loading times ..
In production operations this plays out concretely. The systems that hold up under incident pressure are almost always the simple ones. Clever optimizations are the first things to behave unexpectedly at 2am.
One could say that (for whatever reasons) many software makers do a poor job of keeping non-essential stuff out of their software. And/or do a poor job of taking the shortest route from user input -> result. Never mind UI design.
Similar thing is happening with web sites. Lately I've done "view page source" on eg. news sites I visit. Common pattern:
100s of KB html, loads & loads of meta tags, then a mountain of CSS junk, embedded scripts etc, and at the very end: maybe 3..5 paragraphs of text (a few dozen words each) with actual content. That's not counting images, video or external scripts, stylesheets, fonts etc. Oh and images not from the actual subject discussed, but 'random' sample illustration from an image library.
Ok sure, you want to add some meta-tags to html documents. You want a page to look good, and run a couple of scripts. But do you need a MB+ of that to provide a few KB of text to your visitors?
NO YOU DON'T. >95% of that is non-essential crap that shouldn't be there in the 1st place.
There's little doubt in my mind that (most) software development works the same way. Bad incentives -> crappy software.
Just because something doesn’t perceive to be lightweight doesn’t mean that it isn’t. Many modern web frameworks are extremely lightweight (ie Svelte), but it’s complicated how they achieve it, and the source code looks like sludge.
On this note, (from a web dev perspective) I think we've overdone making the static build as lean as possible and pushing everything into the backend. E.g., if a 2MB dataset will make a search/select bar return results instantly instead of having to roundtrip an API, just send up the whole dataset with your initial load. After gzip it's nowhere close to 2MB anyway.
Free and open-source software is certifiably best. Even when the proprietary alternatives have better features and are faster.
I've been using computers for decades, and have used dozens of paid products, but not a single paid option stuck with me forever, while tons of open-source tools are literally irreplaceable - and not because I'm just used to them, but specifically because they give me control to customize them just the way I need.
92 comments
[ 2.5 ms ] story [ 63.2 ms ] thread> Fastness in software is like great margins in a book — makes you smile without necessarily knowing why.
Temporal GPT: The snake that trains on its own tail, forever and ever?
Ahahaha holy cope
I’ve found that writers who self-profess to have ADHD often write in this way, with multiple, seemingly disparate points being made that can tie together if you squint. As an ADHD person who enjoys writing, it makes sense, and at least in my head, these points always connect; I’m just not great at demonstrating how they connect. I’ve no idea if the author is neurodivergent, but it’s one possible explanation.
BTW, the title should say "(2019)".
If you want to do foo. You don't need framework bar to load baz or call home to qux.
That's all added complexity that isn't inherent to the task.
So we aren't talking about not doing bar. We are talking about not doing all the other things that aren't for the benefit of the user.
Even when that software is widely used so the few milliseconds add up to thousands of hours in collective time savings. 'We don't pay for user's time, only your's', is the attitude. Again 'irrational'.
The fun part is that when your employer _does_ care about software optimization, few people are actually good at it and your skills are more exclusive :-)
Suddenly they are very aware of the costs of inefficient software.
A good WYSIWYG editor will run circles around the fastest text editor. Even if WYSIWYG is a bit slower to open.
It would be preferable for software to be more focused and faster over time, but that doesn't attract people to it.
Speed enables more features and also simpler architectures and algorithms, since you can rely more on brute force in higher-level code.
In that sense, when a terminal (running on a desktop environment) in Linux is faster than Windows Explorer, it's a shame. When a big file explorer like Dolphin drives circles around native file explorer of Windows, that's a big ole embarrassment.
Then came the rewrite to adopt WinUI elements, and WinRT as well,.....
Now I know better and don't use that thing as a daily driver for... 20 years now? :D
How is that even possible, especially with modern hardware? Like you'd almost have to build the file explorer around like a sqlite-based message queue with a 1500ms poll interval to get performance characteristics like this. Absolutely insane feats of architecture astronautism are no doubt required for this to happen.
I was wondering how bad a sign it was when the decline in performance between Windows 95 and Windows 98 was detectable in many ways, but nobody was complaining because it was not always noticeable on PCs that were 3 years newer. You had to figure Microsoft developers had way better PCs than that, and didn't have any clue at all.
Turns out my suspicions were correct, it was the insidiously ignored ramp-up to exponential amounts of sluggishness as time marches on.
You know, like a snail without a shell :(
At least your description matches some the pain I get using NFS + lf.
Like the vanilla file explorer experience is way worse than anything I've come to expect with stuff like CIFS and SMB.
https://www.techpowerup.com/forums/threads/microsofts-window...
And yes, it sucks,
https://github.com/microsoft/microsoft-ui-xaml/discussions/1...
When it comes to navigating (except public transit), hiking, and route building, Organic Maps[1] is very good. OSM data and offline-first is the way forward for detailed and _fast_ map experience.
For cycling route building I have to mention BRouter[2], which allows you to write a custom cost function that is used to tweak your route preferences.
[1]: https://organicmaps.app/
[2]: https://brouter.de/brouter/index.html
"The data is better than Google maps, it just needs a better routing algorithm" should be catnip to a certain class of OS dev. If it's really true, I'll take a crack at it myself!
At least, not exactly.
At its best, the OSM data puts Google to _shame_. Super-fine resolution and details, nuances of street layout precisely correct, mountains of meticulously-maintained metadata that makes manifold niche geospatial apps possible.
Alas, in any given area, OSM is only as good as the union of the publicly-provided street data and the obsessiveness of the area's mappers.
Most towns in central PA, for example, have no street address listed for hundreds of buildings.
I've made many small contributions to help, and really enjoy doing so, but someone looking for driving directions needs to be able to whip out their phone and slap in an address / business name and have it Just Work.
You can't reliably count on OSM for that.
I wind up falling back from OsmAnd to Gmaps probably every fifth drive.
It's a network effect thing - if enough people used an OSM client and opted into sharing anonymized location data, you might be able to get somewhere with it.
In practice, I think it'd have the same problem as the core map data - surprisingly good data in places with a lot of adopters, and nothing at all in places without.
That said, though, the traffic data is pretty secondary - a good, open routing engine would be lovely to have, and will slowly become more relevant as the map expand and fills out.
The interface without animations feels snappier even if sometimes it takes a second to load. I disable any and all animations in software that I can - particularly in Android (via developer settings) and Linux (i3+vim vs something like KDE+VScode).
It felt like I was racing. Type the whole message before the screen updates? Check.
I miss AOL sometimes.
In the good old days, you'd have the request sent by that button reveal a small, transient status bar showing the target URL at the bottom, plus the "Refresh" button in the browser toolbar would change to "Stop" instead; both effects lasted for the duration of the network roundtrip. It was enough of an indicator, and since it was not controlled by the website, it wouldn't break or lie to you.
Well, with the encumbrance of it living in a terminal window, but I also live in the terminal window even on MacOS, so its a feature not a bug.
Point is, I wouldn't have this to say about it if iStatMenu had just been a little more discrete about its loading times ..
Definitely much more responsive than VS Code.
If it is fast because it is optimized, then that does not align with correctness, because optimizing something that works only adds risk.
Similar thing is happening with web sites. Lately I've done "view page source" on eg. news sites I visit. Common pattern:
100s of KB html, loads & loads of meta tags, then a mountain of CSS junk, embedded scripts etc, and at the very end: maybe 3..5 paragraphs of text (a few dozen words each) with actual content. That's not counting images, video or external scripts, stylesheets, fonts etc. Oh and images not from the actual subject discussed, but 'random' sample illustration from an image library.
Ok sure, you want to add some meta-tags to html documents. You want a page to look good, and run a couple of scripts. But do you need a MB+ of that to provide a few KB of text to your visitors?
NO YOU DON'T. >95% of that is non-essential crap that shouldn't be there in the 1st place.
There's little doubt in my mind that (most) software development works the same way. Bad incentives -> crappy software.
Esp. known from Microsoft, Adobe, Google. Should be added to the Antipatterns repo
I've been using computers for decades, and have used dozens of paid products, but not a single paid option stuck with me forever, while tons of open-source tools are literally irreplaceable - and not because I'm just used to them, but specifically because they give me control to customize them just the way I need.
I’m making browser games and my core idea is that they must be fast as hell and light as hell. Such that they can run on a potato!
Unfortunately this means cutting non essential animations lol.
And testing on throttled devices (low end mobile) and respecting thermal throttling
A recent win for me for performance was:
- 8192 simultaneous entities on screen path finding, checking reward functions, making strategy decisions with zero frame drops
- sub millisecond average frame Time (more like sub 0.5ms) with 256 entities on screen (logic and rendering)
- “compressing” game replays from 100KB naive to 1KB