Hacker News new | ask | show | jobs
by PaulHoule 461 days ago
The values and viewpoints of the developer certainly matters.

One of the "eternal September" moments of web app development was in the late 1990s when Microsoft went "all-in" and Microsoft-oriented developers flooded forums with tearful laments about how "MY BOSS NEEDS TO ME TO BE ABLE TO ACCESS LOCAL FILES IN A WEB APPLICATION!"

From the viewpoint of a web-native developer though, you need local files about as much as Superman needs a Kryptonite sandwich. (You didn't lose local files, you gained the universe! Look at how multimedia software on CD-ROM was utterly destroyed by the world wide web!)

That image sorter, for instance, has a million images sampled from a practically infinite pool all available instantly to any device anywhere in the world that's attached to my TailNet -- though you'd better believe I keep RAWs from my Sony on local file systems. [1]

I had a boss who ran a web design company circa 2005 which had a great spiel about how with web applications small businesses could finally afford custom software, I had my own technical version of it which went something like. "Back in the Windows '95 age obsolete desktop applications kept their state as a disorganized graph of pointers that inevitably gets corrupted just like cheese goes bad and crash; modern web applications keep their state in a transaction-protected database (if you're smart enough to NOT GET SEDUCED BY SESSION VARIABLES PROVIDED BY YOUR RUNTIME) so your application state is refreshed with every page update"

[1] Adobe's relationship to the local filesystem drives me nuts even though I've talked w/ people there like Larry Masinter and deeply studied file formats enough to understand their point of view. My first instinct, having worked at a library, is that you want to associate metadata with an object, in fact I really want to "name" an object after a hash of the contents and have the object be immutable.

On the other hand, XMP which stuffs a metadata packet into a file, is a good fit for the way people use desktop apps. Still, my #1 complaint about Photoshop is thinks a file has a changed (some metadata has changed) when I do some operation that I don't think of as a mutation such as making a print or exporting a compressed and scaled JPG with the "Save to Web" Dialog. Since I do a lot of different things with my machine I am always forcing shutdowns which means Photoshop is always harassing me to recover files that I "didn't save" even though I didn't really change them. Sometimes I just save files that I don't really want to save but it feels icky because the source file might be a JPG which might not round trip perfectly, where I might feel compelled to save at a higher quality than the original file and all of that.

1 comments

My argument is more that the filesystem is a very very very good abstraction to build on and the addition of a network layer exponentially increases complexity and as a result decreases quality.

You can certainly do it, and sometimes it works out just fine, but generalizing all popular software client/server architectures contribute to modern software woes in my opinion (not to mention it discourages privacy! your tailnet example being a good counter-example).

Cross-platform development is another can of worms, and a strong advantage of the web for software distribution. There's a lot of snake oil - like SwiftUI, React-Native, Flutter, that always gets people excited but rarely makes an appearance in world-class software.

A few years back I did an eval of cross-platform frameworks to target (in order) Windows, MacOS, Linux, maybe Android. This was around the time of peak complaining about Electron bloating out the installer for every crapplet to 35MB -- so I was prejudiced against Electron going in.

I came to the conclusion that they were all atrociously awful for both DX and UX except for Electron and JavaFX (maybe that's because I'm a Java fanatic.)