Comment by peterisza
4 years ago
Today's flashlight apps are bigger than this.
It makes me sad how programmers can keep up with the insane improvement of the hardware, only to make software slower and bigger than ever, while adding very little useful functionality.
Resources and copypasta.
Today's apps are meant for things like 4K screens and have graphical resources to match.
Then, everyone loves to bundle in third-party frameworks and libraries, which bloat individual apps and cannot be shared.
If you look at the actual application logic code, it has grown much more reasonably in proportion to apps 20 years ago. It's just that there's a lot more junk tagging along with it. If you look at typical Linux packages, where library reuse is still the norm (though perhaps not for long, with containers...), you'll find fairly sensibly sized binaries.
Modern Linux kernels don't fit on floppies any more, but if you look at the actual code in there... there's good reasons for it to exist (and of course you can compile time disable a lot of it, though probably not enough to get it small enough for a floppy any more). Complexity is unfortunately necessary for things to work and perform well on modern systems (e.g. think of how much more complicated things got once SMP/multicore became the norm).
> cannot be shared
[Cries in Zircon static linking]
Programmers still carefully optimise things when it matters e.g, IoT.
However, to lament programmers not eking out every megabyte of payload size is nonsensical - in my opinion. Why waste a scarce resource (labour hours) optimising the use of a cheap and plentiful resource (bandwidth/storage).
Imagine a world where fusion energy was the most commonly employed energy source and the cost of electricity in both environmental and economic terms was negligible. Should we still have energy-star rated refrigerators? Why? What purpose would it serve?
> However, to lament programmers not eking out every megabyte of payload size is nonsensical - in my opinion. Why waste a scarce resource (labour hours) optimising the use of a cheap and plentiful resource (bandwidth/storage).
I'll give a counterpoint to this example; MineSweeper on the Windows Store.
Last time I took a look, the installation size of this app was more than a 'functional' install of the entire Windows 98 OS, including a slightly-less-colorful version of the same game.
Or, for a more 'Business' example. Autocad 2013+; it became bloated, frustrating to work with, and expensive.
> Imagine a world where fusion energy was the most commonly employed energy source and the cost of electricity in both environmental and economic terms was negligible. Should we still have energy-star rated refrigerators? Why? What purpose would it serve?
In a 'happy path' fusion scenario, the best refrigerator design would be one with the lowest ozone depleting and/or greenhouse gas emitting setup, so long as the energy consumption was overall sustainable on the grid a lot of them were hooked up to.
Another example: Hacker News website vs. other websites.
It has perfect functionality but doesn't waste your time by loading bloatware for 10 seconds.
1 reply →
So:
It is not just a lack of optimization, I don't even know what to call it at this point. Intentional wastefulness probably.
I am a software engineer but I can't even imagine how a flashlight app can be several megabytes. What is inside it?
> However, to lament programmers not eking out every megabyte of payload size is nonsensical - in my opinion. Why waste a scarce resource (labour hours) optimising the use of a cheap and plentiful resource (bandwidth/storage).
Bandwidth and storage are not always plentiful. I might have a lot of other things to store and not enough room for a half a gig deck of cards. And maybe my local tower is down and I've got an intermittent signal from the next one over.
> Imagine a world where fusion energy was the most commonly employed energy source and the cost of electricity in both environmental and economic terms was negligible. Should we still have energy-star rated refrigerators? Why? What purpose would it serve?
A more efficient fridge dumps less heat into the kitchen (or wherever), which means temperature fluctuation and more comfort, even if A/C is effectively free, it makes noise and what not. The other comment about environmental impact is also worth considering, although if energy is free and plentiful, I expect most power plants to switch and for syngas to takeover where liquid fuel still makes sense, which might make worrying about emissions obsolete (although who knows, anyway fusion seems capital intensive for the forseable future, so I'm not going to plan for free and plentiful energy)
I think you almost completely missed his point.
I think software quality was actually higher then. Dealing with a new API or framework is work too, often it’s actually more work than a bespoke implementation.
Lots of functionality has been added that cost significant effort to implement, but people don't even notice it's there.
Eg, take calculating the length of a string. That's just "add 1 to count until reaching \0", right?
Not in the modern day, where you have UTF8, and what qualifies as a character is a lot more complicated than it used to be. A modern program, wanting to accurately calculate the number of characters in a string then brings up a bunch of UTF8 machinery with it. Then there's a good deal more than that to UTF8, so that also brings up a bunch of other code that is needed for other purposes, but for now may not be used.
But these days we mostly use GUIs, so instead of "length of a string in characters", you probably want "length of a string in pixels". In comes the TrueType library you need to parse the font and implement the virtual machine (!), because these days a font file contains code that helps the system produce the best possible result.
And so on, and so forth. Doing the most basic version possible in English on a fixed width text display with fixed width fonts is just a few bytes of code. Doing the modern version that takes into account things like that Japan exists quickly expands the problem to megabytes worth of code.
Unifont is monospaced and it looks nice. Oh, and displays CJK.