92 comments

[ 2.5 ms ] story [ 63.2 ms ] thread
This is slop; I stopped reading after this line:

> Fastness in software is like great margins in a book — makes you smile without necessarily knowing why.

The article is from 2019.
The slop is breaching temporal containment!
Mr. Robertson: That's the way it has to be. That's the way it's always been. You should understand that better than anyone.

Temporal GPT: The snake that trains on its own tail, forever and ever?

This is definitely not slop, I’ve followed Craig Mod’s work for a long time and he’s a prolific, talented, and very human writer.
What makes you think it is slop? The emdash?
> EDIT: I didn't say _AI_ slop

Ahahaha holy cope

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.

Can’t think of a less sloppy writer than Craig Mod…
No, no software is the best software.

BTW, the title should say "(2019)".

Best solution is no software, or as little code as possible. But that the best software is no software isn't very practical or actionable :)
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.
No code is faster than no code
Faster at doing nothing?
Yes.

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.

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.
There are dozens of us! Dozens!
We understand more than you’ll never know.
Irrational how? What higher values does it undermine for you to make fast software?
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 :-)

This is true until they see the AWS bill after moving all their infrastructure there in a difficult to undo manner.

Suddenly they are very aware of the costs of inefficient software.

Honestly, I'm in partially disagree camp. What matters is how much time it saves.

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.

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.

Didn’t ask me but I’ve been enjoying Zed and finding it a big improvement over using VS 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.

Explorer used to be fast, when it was a pure Win32/COM application.

Then came the rewrite to adopt WinUI elements, and WinRT as well,.....

I know. I used to spend countless nights on older Windows versions, you know, when I was young(er).

Now I know better and don't use that thing as a daily driver for... 20 years now? :D

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.

You know, like a snail without a shell :(

It’s probably got phone home a few times to to make sure they’re measuring user engagement
Wild theory for fun: this is on purpose to condition people in order to seamlessly switch to OneDrive as whole data drive.

At least your description matches some the pain I get using NFS + lf.

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.

> Google Maps has gotten so slow

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

Cool! I'm guessing no traffic data in organic maps? I'd still install it to use as a backup.
(comment deleted)
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?
No. It's their route function which sucks compared to Google maps. Their data is better and newer.
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!

Do it! Google routing is open source in or-tools
It's not true.

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.

I suppose Google also has the user-collected data that can tell you which routes are going to be busy. Almost impossible for OSM to replicate that.
It would be hard, yeah.

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.

(comment deleted)
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).

As a kid I liked the interfaces that lagged badly, but still accepted input perfectly.

It felt like I was racing. Type the whole message before the screen updates? Check.

I miss AOL sometimes.

[delayed]
> 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 ..

I will read this entire article tomorrow while I wait for the Cursor UI and Visual Studio to finish loading.
I’m really enjoying Zed.

Definitely much more responsive than VS Code.

Remove the specter and friends mitigations from your linux kernel, and your system will be significantly faster.
Shout-out: Voidtools Everything on windows. Lightning fast file search.
[flagged]
If the software is fast as a byproduct of being simple, that tends to align with correctness.

If it is fast because it is optimized, then that does not align with correctness, because optimizing something that works only adds risk.

Simple software is also easier to optimize. The simpler it is, the less weird corner cases you have to deal with.
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.
Also called: "Death by PM"

Esp. known from Microsoft, Adobe, Google. Should be added to the Antipatterns repo

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.
What do y'all do and use for performance testing in CI, given that host speed can fluctuate?
Why would host speed fluctuate?
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.

RapidRAW offers a good lightroom alternative nowadays.
Slow software sucks and simple is good.

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