26 ms·
When did software go off the rails?
- AnimalMuppet 9y agoIt happened one step at a time. We wanted multi-tasking OSes, so that we could start one program without having to exit the previous one first. That made the OS a lot bigger. Eventually, we got web browsers. Then Netscape added caching, and browsers got faster and less frustrating, but also bigger. And then they added multiple tabs, and that was more convenient, but it took more memory. And they kept adding media types... and unicode support... and... We used to write code in text editors. Well, a good IDE takes a lot more space, but it's easier to use. In short: We kept finding things that the computer could do for us, so that we wouldn't have to do them ourselves, or do it more conveniently, or do something at all that we couldn't do before. The price of that was that we're dragging around the code to do all those things. By now, it's a rather large amount to drag around...
- jasonhanley 9y agoThis is all very true, but I feel like we (as users) haven't really gained proportionally compared to the increase in computing power and storage. For example IDEs: Visual Studio in 2017 is certainly better than Visual Studio in 1997, but do those advancements really justify the exponential growth in hardware requirements? How'd we get so little usable functionality increase for such a massive increase in size/complexity?
- achikin 9y agoWould you get twice as much from your car if you install 2x more powerful engine? Would a 2x more powerful weapon win you 2x more wars? Would 2x better medicine technologies allow you to live 2x longer?
- valesco 9y agoExactly that : diminishing returns are everywhere.
- throwaway7645 9y agoMy exact thoughts. What the heck is VS doing? No IDE should require the amount of resources it does to where it is almost unusable on any computer > 5 years old (assuming said computer wasn't overpowered to start with).
- Arainach 9y agoYes, they do. Computers are cheap; humans are expensive. In an average application (including IDEs), most CPU time is spent idling waiting for user input. Most memory is idle unless you have something like superfetch caching stuff ahead of time for you. If the new features make users faster, they're decidedly worth it. Fundamentally, modern systems are much more usable - in every sense of the word. Modern IDEs are more accessible to screen readers, more localizable to foreign languages including things like right-to-left languages, do more automatic syntax highlighting, error checking, test running, and other things that save developer cycles, and on and on. Each of these makes the program considerably more efficient.
- qu4z-2 9y agoPersonally I get grumpy when modern IDEs make me wait on them. I don't care that much about CPU/RAM usage until the computer starts wasting my time while I'm trying to work. That's sadly very common these days even on relatively beefy hardware. So I agree with you that computer time is cheap and user time is not, but I think we could optimise better for user time.
- titzer 9y ago> Fundamentally, modern systems are much more usable... I just don't buy this premise. _Some_ systems are more usable. But take a look at Microsoft Excel from circa 1995-2000, which came with a big thick textbook of documentation, explaining what every single menu item did. Every single menu item was written in natural language and it told you what it would do. Professionals used (and still use) Excel, crafting workflows around the organization of the UI. It's a tool that is used by actual people to accomplish actual tasks. Now look at Google Sheets. It has about 1/10th the functionality of Microsoft Excel (hell--it can't even do proper scatter plots with multiple data series) and its UI is an undiscoverable piece of crap because half of it is in _iconese_--a strange language of symbols that are not standardized across applications, confusing and ironically archaic depictions of telephones, arrows, sheets of paper, floppy disks. The program is written in a pictographic language that must be deciphered before being used. Software doesn't even speak our natural languages anymore...we have to learn _their_ language first...and every application has its own and that language changes every six months. Worse, all those funky pictograms are buttons that perform irrevocable actions. They don't even explain what they did or how to undo it...it makes users less likely to explore by experimentation. ...and there is no manual, there is no documentation. It will be all different in six months, with less functionality and bigger--different!--icons...takes more memory. We are regressing. Hey but those animations are spiffy. /rant
- flukus 9y ago> For example IDEs: Visual Studio in 2017 is certainly better than Visual Studio in 1997 Is it? 97 might be a bit extreme, but the other day I opened an old project which was still on VS2010 and I was struck by how much faster 2010 was while still having nearly every VS feature that I wanted. They're slowing porting VS to .net and paying a huge performance penalty for that.
- jasonhanley 9y agoThat's the type of example I've come across all too frequently. Software that's 5-10 years old, has all the same functionality, uses a fraction of the resources, and is often "better" in several ways. Older versions of Android Facebook seem massively faster and use a fraction of the RAM while providing (nearly?) the same functions and features.
- dave7 9y agoExcel 2000 is lightning quick compared to the modern versions (well, 2013 is as modern as I got)
- p0nce 9y agoAnd VS2010 is itself _much_ slower than previous versions.
- maxxxxx 9y agoTry VS 2008 for speed. And it had distinguishable icons!
- virmundi 9y agoI think this is the tragedy of the commons. Computers are getting better. Each team says in its heart "We can be a bit wasteful while providing feature X." When aggregated the whole thing is slower.
- keithb- 9y agoI think your comment is closest to reality. I believe it was incremental and deliberate, but the key piece that is missing from your assessment is that we (the royal "we") haven't given a lot of attention to correcting any poor choices. I think you are right when you say that hardware improvements helped encourage devs to give more tasks to the machine like encoding, caching, etc. However, it also became less important to revisit the underlying pieces on top of which we added these new features. It eventually became this dirty snowball rolling downhill that was built from layers of whatever was in the way as well as anything we could throw at it. For example, the web might be filled with redundant and bloated software, but the real problem is that the browser has become the nexus of virtualization, isolation, security, etc. for almost everyone from the causal user to hardcore admins and for every piece of software from frameworks/utilities to full-blown SAPs. It's like we have all reached a common understanding for what comprises a "good" application, but then we lazily decided to just implement these things inside another app. I mean, webassembly is great an all, but is it wise? I don't think it's about IPC or RAM or (n+1) framework layers that each include "efficient list functions". I think it about the incremental, deliberate, and fallacy-laden decisions that assign more value to "new" than to "improved".
- PaulHoule 9y agoBack in the late 1960s, see https://en.wikipedia.org/wiki/The_Mythical_Man-Month https://en.wikipedia.org/wiki/The_Mythical_Man-Month Note NASA controlled the moon missions with an IBM 360/95 that had something like 5 MB of RAM, 1GB of disk, and about 6 million instructions per second. Today an internet-controlled light switch runs Linux and has vastly larger specifications. Connecting to WiFi is more complex than sending astronauts to the moon!
- vacri 9y ago> Note NASA controlled the moon missions with an IBM 360/95 that had something like 5 MB of RAM, 1GB of disk, and about 6 million instructions per second. And an army of technicians available around the clock to keep it working. Whereas your IoT light 'just works' and isn't expected to require any support at all.
- PaulHoule 9y agoActually, the 360 was a big leap forward in reliability as it was second-generation transistorized, made with automated manufacturing, etc. As for the high complexity of IoT things, I don't think the extra complexity helps reliability, security, etc.
- bsaul 9y agoThere are two possible conclusion to that : the first is that we suck at programming. The second is that what we think is easier to do (today's programs vs controlling moon mission) is actually not. Maybe a lot of what those computers were doing were just raw computations, much like a DSP, to control trajectories, and nothing more. Something like a big calculators, with some networking capabilities to receive and send a few sets of instructions.
- Boothroid 9y agoI do often wonder wth is going on with bloat. I can understand a videogame which has huge amounts of media might be large. But business apps?! It doesn't make sense.
- noir_lord 9y agoI think it makes absolute sense (in overall terms), hardware capabilities at a fixed price scaled exponentially while the costs of producing software went up mostly linearly, or to put it another way. I have a 5 minute mp3 that takes more space than my first hard drive had and some icons on my desktop that take more space than my first computer had RAM. Whether that will continue to hold I don't know, mobile has certainly pushed certain parts back towards caring about efficiency (though more because it impacts battery life). If you remove a constraint people stop caring about that constraint. The old school geek in me laments it sometimes but spending twice as long on developing something to save half the memory when the development time costs thousands of dollars and twice as much RAM costs a couple of hundred seems..unwise.
- Boothroid 9y agoYes I see your point. But 1Gb installs?! I don't think you get as much waste on Linux.
- noir_lord 9y agoAs much perhaps not, quite a lot still though but I simply don't care anymore. I copied 153Gb of data onto my laptop earlier over my fiber connection because the project I'm working on needs it and I couldn't be bothered to go find the external drive with it on in the storage closet in the 2nd bedroom. I can buy 500GB of really fast m2 SSD for 153 quid (approximately 30p per GB) or terabytes of storage for 153 quid. I got a new thinkpad a few weeks ago, I specced it with 16GB on one slot because I fully intend to upgrade to 32GB fairly soon with virtualisation I can bump up against 16GB, Let that sink in, My time is so precious (to me on my machines and my employer on theirs) that I'm happy to virtualise entire operating systems and allocate billions of bytes of memory and storage to save some of it. Hardware is absurdly cheap and I can't really see that changing for a while, from a systemic point of view it's ridiculously more efficient to spend a lot of money in a few places (Intel, Samsung, IBM etc) than to spend a lot of money in every place. Every time Intel puts out a processor that is 10% faster at the same price everyone elses software just got 10% faster for free* (*where free = the price of the new processor). There just isn't a market incentive (financial or otherwise) to rollback bloat, if there where it would be a competitive advantage and everyone would be doing it, that they aren't shows that it isn't. I suspect a lot of the reason why Linux installs stayed so relatively lean was because for a long time most people had CD burners not DVD burners, once those where common install ISO's blew right past 650Mb, I think Fedora 26's was 1.3Gb, I didn't really pay any attention.
- kozak 9y agoSoftware does so much more today as a baseline requirement. Think about all that internationalization, high DPI graphics, security, nice APIs and modularity: these aspects of software have never been at such a high level before.
- throwaway9980 9y agoSoftware complexity increases exponentially with linear growth in features and polish. Occasionally someone takes the time to step back and rethink things, but generally you’re just adding another layer on top of the ancient ruins. Code archaeologist should be a job title in many organizations.
- majewsky 9y agoIt's less than archaeology (where artifacts are embedded in soil) and more like geology (because everything is code, i.e. code is the soil). But yeah, I've had the same feeling when refactoring a decade-old application. You could really recognize the styles of different developers and eras in the same way that geologists recognize eras by looking at the type of stone deposited during that era.
- SomewhatUseful 9y agoIs this a projection of "the next 90%" issue? "The first 90% took 2 weeks to finish. The second 90% also took 2 weeks to finish (and now your 99% done). The next 90% also takes two weeks to finish (99.9% done)..." Reapplied to another resource..."The first 90% consumes 1GB of RAM. To solve the next 90% of the problem, takes 1GB of additional RAM... If you continue this trend, the problems solved in the incremental steps maybe used fractionally less often, but are probably also more complex and required a greater resource investments. Our software does a lot more, but the later developed parts are usually used left often and are more complex. Talking to the one and only ship headed to the moon when you don't particularly care who hears you is less difficult than securely purchasing things online over a WiFi connection. At the user experience level its just "thing A talks to thing B" but the later case has also had to solve n-th 90% issues of congestion and security and handshake and... That being said, we rarely go back and see what in the earlier iterations are now based on false assumptions. So there probably is a fair amount of accumulated cruft with no clear detector for what is cruft and what is essential.
- d--b 9y agoI think the explanation is that bloated software is cheaper to make. It is cheaper to develop a .Net app than a C app. Cheaper in Development and maintenance. It is cheaper to not care about efficient data management, or indexed data structure. What we're losing in efficiency, we gain in code readability, maintainability, safety, time to market, etc.
- sidlls 9y agoI don't agree necessarily with the first three items on your list. In fact I think there is a sort of casual indifference to the first two that frequently borders on criminal neglect. Why bother with them when the "time to market" driver of methodology selects for the most easily replacable code? Safety is also debatable and mostly accidental. Most of the languages that are fast and "easy" to develop in rest on a core of C or C++, and are really only as safe as that code. Safer, because there may be fewer foot guns, but not necessarily "safe."
- deleted 9y ago[deleted]
- jasonhanley 9y agoAs a developer and development manager, I haven't personally noticed major improvements in any of those metrics over the past 20 years. But I'd definitely be interested in any studies that have tried to measure these over long time periods.
- hyperpallium 9y agoIt's a gas law, as software expands to fill the available hardware. If it can reach a minimal standard with less work, a smaller budget is allocated.
- droidist2 9y agoIf it's stayed the same that's a huge win because software has become incredibly more complex.
- 9y ago
- wahB4vai 9y agoOrganizations get what you reward. Tech Debt is rewarded. Doing something for the first time, almost by definition, means one does not really know what one is doing and is going to do it somewhat wrong. Hiring less skilled labor (cheap coder camps for example) to implement buzzword bingo solutions gets you into a place where all the software contains large chunks of it's substance coming from people doing it for the first time... and not 100% right. As we never go back to fix the tech debt we end up building stills for the borked and less than great. When that structure topples over we start over with a new bingo sheet listing the hot new technologies that will fix our problems this time round for sure. I'd think that a good fraction of the current language expansion is that the older languages are too complex and filled with broken. Green fields allow one to reimplement printf, feel great about it, and get rewarded as a luminary in the smaller pond. ..... oh... and well the cynic in me would argue planed obsolescence at the gross level. No one buys the new stuff unless there's new stuff.
- hyperpallium 9y agoSoftware engineering reinvents everything every decade or so. People were complaining about it 20 years ago - I suspect they have from the beginning. Not only new languages, also new hardware and new platforms in general. Moore's law seemed to be the driver, but the constant growth means constant new people... unlike scientific paradigms, we needn't wait for old practitioners to die. BTW is "stills" a typo for something? (shims?)
- deleted 9y ago[deleted]
- krylon 9y ago> Doing something for the first time, almost by definition, means one does not really know what one is doing and is going to do it somewhat wrong. The Mythical Man-Month has a chapter on this titled "Prepare to throw one away". Brooks argues, that the program/OS/whatever you build the first time around should be considered a prototype. Then you reflect on what problems you encountered, what went well, and so on and use those insights to guide you when start over. It seems like such an obvious idea, but Brooks wrote that almost 50 years ago, and it seems like only very few people listened. Primarily, I guess, because much software is already written under highly optimistic schedules - telling management and/or customers that you want to throw the thing out and start over is not going to make you popular.
- jeremyjh 9y agoTypically as developers we let the software bloat until it hurts us directly. Since we are always using more and more powerful machines we are always going to let the bloat continue. If we get called on it we've got the slam-dunk in our back pocket: "Premature optimization is the root of all evil."
- chadcmulligan 9y agoOlder software was written in languages you had to manage the memory in C, C++, pascal etc, it requires more skilled developers (I'm told), simpler languages like javascript require less knowledge to write applications. The cost is though higher resource usage.
- stephengillie 9y agoSoftware went off the rails approximately when JavaScript became mandatory to display text on a webpage.
- unabridged 9y agoExactly. Its ironic his post doesn't even show up until I allow js loaded from multiple domains just to show 4 pictures and a couple paragraphs of text. Sites like his are huge part of the problem.
- microcolonel 9y agoIt's even a pain on archive, apparently. http://archive.is/fJ7nu http://archive.is/fJ7nu
- jasonhanley 9y agoThe irony is not lost on me. The unfortunate thing is that Blogger started out being fairly light and clean -- at least it was back when I migrated to it. At least static site generators are coming back into fashion. I've always considered them a better solution for media/news/blog type sites.
- microcolonel 9y agoFYI: I think you can still select blogger themes which don't require JS to render. Some people use them, including (perhaps just as ironically) the Google Developers Blog[0]. [0]: https://developers.googleblog.com/ https://developers.googleblog.com/
- tannhaeuser 9y agoThough JavaScript is of course not mandatory, the mind set and incentives in which web specs have been created by browser vendors is bound to pile up complexity, in that developing a browser from scratch is considered infeasible (last one to try was Opera), and browser vendors are rather trying to turn existing browser code bases into universal runtimes for apps. Point in case: WASM, which I consider bloated and out of place in a web browser.
- Silhouette 9y agoI suspect this is the inevitable price for the expanding scale of the software industry. Perhaps the problem isn't about depth, as in what a given piece of software can do, as much as breadth, as in how much software there is now and how many different things it can do collectively. One cost of the increasing breadth in the industry is that if we want to have a lot more software then obviously it can't all be written by the same relatively small pool of expert programmers who wrote software in the early days. With more software being written by people with less skill and experience, many wasteful practices can creep in. That can include technical flaws, like using grossly inefficient data structures and algorithms. It can also include poor work practices, such as not habitually profiling before and after (possibly) optimising or lacking awareness of the cost of taking on technical debt. Another cost of the increasing diversity in the software world is that to keep all that different software working together, we see ever more generalisations and layers of abstractions. We build whole networking stacks and hardware abstraction libraries, which in turn work with standardised protocols and architectures, when in days gone by we might have just invented a one-off communications protocol or coded directly to some specific hardware device's registers or memory-mapped data or ioctl interfaces. There is surely an element of deliberately trading off run-time efficiency against ease of development, because we can afford to given more powerful hardware and because the consequences of easier development can be useful things like software being available earlier. However, just going by my own experience, I suspect this might be less of a contributory factor than the ones above, where the trade-off is more of an accident than a conscious decision.
- blt 9y agoSoftware went off the rails when Java decided to store all nested nonprimitive objects on the heap, and Sun thought this was an acceptable choice in a language marketed at general purpose app development.
- RcouF1uZ4gsC 9y agoI think it started when we went away from native compiled languages. Visual Studio 6 was in my opinion the best version in terms of responsiveness/functionality. After that, with .Net, Visual Studio started including more .Net code and become more and more slow over time. Over time, people slowly got used to their applications being slower and slower. Then the web came and people started writing apps in Javascript. The Javascript apps are not too bad compared to the .Net apps, so people did not notice. However, if you were comparing them to Pascal/C/CC++ apps, you would have noticed a big difference.
- jeffdavis 9y agoI don't think that's quite true. Erlang is compact and fast (for many things) and it's interpreted. And there's tons of bloated C++.
- 201708throw 9y agoI always know when an app is JavaScript. Also .Net apps are native.
- badsectoracula 9y agoI don't think that interpreted languages is the problem since people were using Visual Basic since the Windows 3.0 days. There are some collections in archive.org for 16bit Windows shareware programs and games with hundreds of entries and like 2/3 of them are made in some version of VB. Now, .NET and JVM might be a problem since those VMs tend to be resource hogs (after all both use GC methods that allocates tons of memory whereas something like Python or even classic VB use reference counting - even then there are languages that aren't using reference counting but some other method of GC and still are fast). But i don't think you should put all interpreted languages at the same box.
- pjmlp 9y agoReference counting is GC. Also you should not put all GC languages in the same box, as many do allow for AOT compilation to native code and do support value types and GC-free memory allocation as well.
- BatFastard 9y agoExcuses excuses, most modern software developers have no clue as to how to right tight code
- scarface74 9y agoWhile application software has become more bloated, Microsoft has done a fairly good job at keeping Windows necessary footprint down. After Apple stopped supporting 32 bit x86 Macs years ago, I decided to put Windows 7 on my old 2006 era Core Duo 1.66ghz Mac Mini with 1.25GB of RAM. My parents still use it occasionally. It can still run an updated version of Chrome and Office - not at the same time of course - and it isn't painful. My Plex Server is a 2008 era Core 2 Duo 2.66Ghz Dell business laptop with 4Gb of RAM.
- deleted 9y ago[deleted]
- a_imho 9y agoJust a couple of days ago I was unable to put a Win10 iso on a 4GB usb drive, it was something like 4,5-5GB.
- scarface74 9y agoI don't know how much drive space Windows 10 needs. But the Core 2 Duo with 4Gb of RAM I referenced is running Windows 10 and can transcode at least 2 streams at once. It's running the Plex Server and Plex Connect - a Python (?) web server that intercepts requests from the 3rd gen AppleTV to render a Plex client.
- c517402 9y agoIMHO, there is no Software Engineering. There is only Computer Science. There is none of the discipline that comes from engineering, and only the messiness that comes from science. The heroes in software are Computer Scientists and everyone wants to be a Computer Scientist. No one wants to be a Software Engineer. It isn't even clear to me that Software Engineering exists in a clearly defined way. Maybe a manager or director imposes their will on a group somewhere and engineering is done.
- bassman9000 9y agoAnd not even Computer Science, just Programming. Maybe here at HN there's a will to understand why the algos are like that, or when to choose a given data structure. But most workers in this industry are content with writing code, seeing it compile, and pass it to the next person in the chain. Source: half assed personal opinion base in 10+ years experience
- jclulow 9y agoThis is simply untrue. There _are_ people who want to be software engineers -- I'm one of them! The field is still young, but there are those of us who strive to apply the rigour seen in other engineering disciplines to the work in which we engage today. We seek to balance competing demands of quality, features, and schedule. Though I get to produce programs when it makes sense, I spend a lot more time writing prose and communicating with others inside and outside the immediate engineering team in which I work. I also spend a lot of time chasing down problems in existing software; each new failure provides an opportunity to improve our overall practice. Mistakes can and will always happen; negligence must not. To suggest that there isn't, or cannot be software engineering is maddeningly self-defeating.
- rdiddly 9y agoAn engineer is just an ingéneur - someone who applies ingenuity.
- tome 9y ago* ingénieur
- kensoh 9y agoThanks Jason, enjoyed your thought-provoking post. I'm reminded of Parkinson's law that "work expands so as to fill the time available for its completion". It's as if the software bloats up to fill up the available hardware capacity. From a fundamental level though, my hunch would be how modern development takes modularization / abstraction to a type of extreme. Imagine a popular Node.js module and how many dependencies it has and how many dependencies its dependencies have. It's not hard to imagine a lot more computing power is required to handle this. But that's ok to decision makers, computing power is cheap. Saving developers time by using modularized developments brings more cost/profit benefits, like what Dan said. PS: the link on Visual Studio. Oh wow, what fond nostalgic memories it brings me :)
- andrewflnr 9y agoSoftware was never on the rails. This whole industry has, AFAICT, been flying by the seat of its pants from Day 1 with whatever hacks get today's job done. For a while, that meant hacks to save space and time. Now... it doesn't.
- GuB-42 9y agoThis is not a single thing. I think the biggest culprits are abstraction layers. You use a framework that use js that use a VM in a browser that runs on an OS. The time when showing text was done by the application writing a few bytes in VRAM is long gone. Each layer has its internal buffers and plenty of features that you don't use but are still there because they are part of the API. Another one is laziness : why bother with 1MB of RAM when we have 1GB available? Multiplied the number of layers, this becomes significant. Related to laziness is the lack of compromise. A good example is idTech 5 game engine (Rage, Doom 2016). Each texture is unique, there is no tiling, even for large patches of dirt. As expected, it leads to huge sizes just to lift a few artistic constraints. But we can do it so why not? Another one is the reliance on static or packaged libraries. As I said, software now use many layers, and effort was made so that common parts are not duplicated, for example by using system-wide dynamic libraries. Now these libraries are often packaged with the app, which alleviate compatibility issues but increase memory and storage usage. There are other factors such as an increase in screen density (larger images), 64 bits architectures that make pointers twice bigger than their 32 bit counterparts, etc...
- jasonhanley 9y agoI was actually just thinking about this. Yeah, it probably doesn't really help the situation when you build several layers of abstraction in an interpreted language that runs in a virtual space on a virtual machine using another abstraction layer running on virtual cores that go through complex OS layers that somehow eventually possibly map to real hardware.
- jancsika 9y ago> The time when showing text was done by the application writing a few bytes in VRAM is long gone. Related: just went to a news site that had this absolutely gorgeous, readable font called "TiemposHeadline" for the headlines. That font was loaded through the @font-face interface of CSS, so that's probably somewhere in the ballpark of 1M. That I so casually navigate to find the name of the font and how its getting loaded is due to devTools, which is tens of megs of storage space plus whatever chunk of memory it's eating. I think examples like Doom are misleading. Those are essentially hand-compressed diamonds of software. Some of the resource-saving techniques used there are bona fide legends. It should come as no surprise that an increase in availability of RAM and storage space causes the software to accordion out to fill the available resources in return for ease-of-development. That said, I'm all for software minimalism movements as long as the functionality and usability remains roughly the same.
- godelski 9y agoI still find it amazing that DOOM was 2.5MB. A Google search page is ~20MB (16MB in DDG). And a Wikipedia page is ~19MB. (FF 55). This is crazy to me. That even simple things take so much space now. I know space is cheap, but this does feel bloated. And while these sizes might not be noticeable on a computer, it definitely is on a mobile connection. I had figured the advent of mobile would make optimization more appealing, but it seems to go in the other direction.
- wingerlang 9y agoThere is no way a google search is 20MB and a wiki page is 19MB. My tests shows a google page is around 1MB, and wiki pages obviously depends on weather or not the page is has many and large images. But the average page definitely isn't near 19MB that's for sure.
- Houshalter 9y agoMaybe he means how much the browser uses to display the page, which is much much larger than the size over the wire.
- marcosdumay 9y agoWhat is also true for DOOM.
- godelski 9y agoI just gave what about:memory was giving me. So yes, what the browser uses to display the page.
- dzink 9y agoThe bar in UX goes higher with every new competitor, and with that the amount of code under the hood.
- godelski 9y agoThis surprises me as minimalism is becoming extremely popular. I mean, websites shouldn't be myspace pages.
- pmurT 9y agoAlthough it's great for campfire stories I don't really see a problem. Resources are there to be used - the lesson from StarCraft is you don't horde resources to victory. I think most believe this as how many of us are writing unikernel OSs purposed built for our hand tuned assembly backends
- khedoros1 9y agoSticking with the Starcraft analogy: We're spending the resources constantly, and even increasing the size of our army to combat the constant onslaught of enemies. If we could basically decrease the price of our units, then wouldn't that be a benefit? You spend a boatload of time and resources on research, and gain on ongoing benefit from it. Take this laptop: spinning platter drive and 4GB of RAM. I'd be happy if it could do more with the same hardware, and I think that's the core of what we're talking about.
- valesco 9y agoBut time took care of the cost of a given hardware unit.
- quickben 9y agoI have 32GB ram on my home machine because 16GB wasn't enough. I moved to 8 core CPU because 4 weren't enough. StarCraft analogy is far removed from real life user and business cases, all of which pay for the hardware with real money and time.
- pmurT 9y agoYou are all missing my point (or I did not make it clear) - the resources are there for you to burn in achieving your goals. You will never be able to deliver a product in competitive fashion compared to groups that are more willing to burn resources (with "reason") - the market simply doesn't pay for high efficiency on the desktop or in the browser
- infiniteparamtr 9y agoI've been teaching myself C, with the intention of learning how to write code for embedded applications where efficiency is key. It seems to me that new languages prioritize quick iteration over effective machine operation. The easier a language is to write and interpret, the faster an outfit can churn out an application. The exponential computing power growth has been sufficient enough to absorb these collective "shortcuts". Thus, it is not being taken advantage of properly. The CSCI/Engineering fields have become more of a gold rush than thoughtful trades. Boot camp management seeks profit, and trainees seek to quickly fill high paying jobs. It all culminates into this situation where code doesn't need to be clever and thought out - just created A.S.A.P to handle whatever trending niche market or "low-hanging fruit" there is. The work of these products get handled server side, where electrical costs for cooling is a fundamental expense.
- shmerl 9y agoRust is new. It's made with performance in mind.
- shpongled 9y agoI want to second Rust. I've been writing C for 5+ years and finally decided to give Rust a serious try... and I love it. I never ever thought I would say this, but I don't see myself going back to C (with minor exceptions)
- CrystalGamma 9y agoThat was pretty much my reaction too, as someone whose first programming language was C …
- flavio81 9y agoI recall being excited the first time i learnt C. But after i learnt other programming languages, the defects of C started to appear clearly before my eyes. C++ is even worse (in terms of things that look like hastily designed) Rust is comparably more coherent and elegantly designed.
- sien 9y agoIt's kind of because we can. I'm currently on a Mac and a PC. The Mac's CPU is at maybe 5% when I'm doing most things. The PC is at 1%. I'm using half the PC's memory and 3/4 of the Mac's. These are no up to date, high memory or high performance machines. Have a look at your own machine. Surely for most of us it's the same. And that memory usage is mostly in one application - Chrome. The only bloat that hurts a bit now is web page bloat. And on a good connection this isn't an issue either. It's also different on phones where application size and page size seems to matter more.
- tradersam 9y agoChrome regularly uses about 10% of my RAM, but honestly Atom was the biggest offender, which is why I switched to Visual Studio. Also, games can be a huge CPU and RAM eater but it is almost always completely necessary.
- bsder 9y ago"The Blogger tab I have open to write this post is currently using over 500MB of RAM in Chrome." So, why are you using Blogger instead of emacs/vi/notepad to write a static HTML page? Apparently the author seems to think that all that bloat DOES give him something, no?
- Izmaki 9y agoWhy did a bunch of open, unintelligent questions even get to the frontpage of HN? If this is the way one should think (ask questions we all on a low, unintelligent level agree are interesting) in order to become CTO, I will never get there... //The Engineer
- cakedoggie 9y agoOk, fair enough, but have a look at yourself. Your blog is static content not served statically, that requires javascript.
- tradersam 9y agoOn that point: > The Blogger tab I have open to write this post is currently using over 500MB of RAM in Chrome. If that is so, why post it and have it use a similar amount of RAM on others machines? If they know sooo much about software, why even use Blogger, a site that's heyday was 15 years ago?
- deleted 9y ago[deleted]
- kisstheblade 9y agoEverybody here says that "software bloats" but nobody says how it bloats. Why does chrome take 500mb to render a page? Where does that memory go.
- dzink 9y agoLook at any analog - real estate property, an army of people, a kitchen. Anything left un-groomed during high use becomes unusable. Grooming software needs to be either someone's full-time job (real-life custodians), or a big constantly-enforced chunk of everyone's job (military grooming standards). At a big company could argue requirements writers need to be technical, but once you've done a startup you'd know that you're in an army and not in a fixed building that needs architected once. The customer and your enemies are always on the move and you have to keep moving on new terrain as the money and your business keeps moving there. Build with code of conduct for your developers, and allow the code base to evolve with modules, or some other approach.
- jankotek 9y agoI love bloated software, I wish opening facebook would require 128GB RAM. It makes hardware cheaper for everyone, even nerds who use terminal and lightweight WMs ;-)
- franciscop 9y agoExactly the same for Snapchat and Mobile Internet speeds, I love those people taking selfies constantly.
- csydas 9y agoTo take a serious look at this scenario, being abroad at the moment without a foreign sim makes me really frustrated as to how greedily and wastefully apps on mobile will use mobile data. Google is pretty bad about this with their array of apps, and I must admit I'm surprised that there isn't a function built into Android and iOS that triggers when the phone returns that it's on roaming data - the OS seems to be able to tell at a much deeper level than the apps run at so to me it seems like an easy path to have a true low bandwidth mode kick in, or at least offer to when the phone reports a roaming condition. I understand this is edge case material though so such ideas need not apply, but it seems like a fairly easy to implement idea that is one of those "oh that's really nice" features customers stumble across.
- rdiddly 9y agoThe Jevons Paradox applies here: As technology improves, cost goes down, which increases demand, which causes more of a given resource to be used, not less.
- fpgaminer 9y agoI look at articles like this and the comment responses to it and I can't help but think everyone is like the old man grumbling how "things used to be built to last!" Have people really forgotten their computing history so soon? Let's roll back the clock. Windows 95 ran for a total of 10 hours before blue screening. Windows ME ran for -2 minutes before blue screening and deleting your dog. Roll back further. IBM was writing software not for you. Not for your neighbor. They were writing software for wealthy businesses. Bespoke software. Software and hardware that cost more than you make in a lifetime. Software, today, represents responses to those two historical artifacts. 1) At some point software became complex enough that we discovered something we didn't know before ... programmers are really bad at memory management. Concurrently, we also realized that memory management is really important. Without it, applications and operating systems crash. And yes, this point was hit roughly around Windows 95. You really couldn't use Windows 95 for more than a day without something crashing. So the programming ecosystem responded. Slowly and surely we invented solutions. Garbage collected languages and languages without manual memory management. Java, .NET, Python, etc. Frameworks, layers of abstractions, etc. Now fast forward to today. I'm absolutely shocked when an app crashes these days. Even games have become more stable. I see on average maybe 1 or 2 crashes in any particular game, through my _entire_ playthroughs. And usually, the crashes are hardware bugs. I haven't seen a Firefox crash in ... months. This is leaps and bounds better. Our solutions worked. The caveat, of course, is that these new tools use more memory and more CPU. They have to. But they solved the problem they were built to solve. 2) In the "good old days" software was bespoke. It was sold strictly B2B. For a good long while after that it remained a niche profession. Does no one remember just how expensive software and hardware used to be? And people scoff at $600 phones... But software exploded. Now everyone has a computer and software is as ubiquitous as water. With that explosion came two things. Software got cheaper. A _lot_ cheaper. And software filled every niche imaginable. When software was bespoke, you could get the best of the best to work on it. Picasso's and Plato's. But those days are long gone. Picasso isn't going to make Snapchat clones. We needed a way to allow mere mortals to develop software. So we created solutions: Java, JavaScript, Python, .NET, Ruby, etc. They all sought to make programming easier and broaden the pool of people capable of writing software. And just like before, these tools worked. Software is cheap and plentiful. We can bemoan the fact that Slack isn't a work of Picasso. But who wants to pay $1 million per seat for Slack? Instead, Slack is free in exchange for the sacrifice of 4GB of RAM. The lesson here is two fold. Software today is better than it ever was, and it will continue to get better. We've learned a lot and we've solved a lot of problems. Battery constraints are forcing the next evolution. I would never have dreamed of a world where my laptop lives for 10 hours off battery, but here we are. I can't wait to see what the next decade holds!
- toyonut 9y agoI would guess at least some of the issue is that most users don't show a preference for faster smaller software, especially because it doesn't benefit them if a product uses less RAM and CPU. Displaying a UI is better than a text mode interface. Icons that don't look jaggy on the screen are nicer than ones that do. Anti aliasing, gradients and drop shadows make things look nice. Drag and drop that has a pretty animation is nicer than drag and drop workout. It is the same reasons people choose a BMW when a Corolla does pretty much the same job. People pay the cost they want to live with. In the trade off between functional and thrifty and pretty and feature packed, the latter nearly always wins.
- peterburkimsher 9y agoLooking pretty is good for marketing. Users are showing "a preference for faster smaller software" - the author of that blog is one of them, and I'm another. But even the best software has to be passed to marketers before it can reach your hands. There are some small, efficient programs out there, but they're overlooked because they don't pay.
- TheEnder8 9y agoThis keeps coming up every couple of years, but is just wrong. In the last 5-10 years, there hasn't been almost increase in requirements. People can use low-power devices like Chromebooks because hardware has gotten better/cheaper but software requirements haven't kept up. My system from 10 years ago has 4gb of ram - that's still acceptable in a laptop, to say nothing of a phone. If you're going to expand the time horizon beyond that, other things need to be considered. There's some "bloat" in when people decide they want pretty interfaces and high res graphics, but that's not a fair comparison. It's a price you pay for a huge 4k monitor or a retina phone. Asset sizes are different than software. I won't dispute that the trend is upward with the hardware that software needs, but this only makes sense. Developer time is expensive, and optimization is hard. I just think that hardware has far outpaced the needs of software.
- xg15 9y ago> Developer time is expensive, and optimization is hard. In the case of front-end development also "Developer time is paid by the company while hardware is paid by the users." This is basically a nicer way to put the "lazy developers" point from the article, but I think that's actually important. The problem is that this seems to create all sorts of anti-patters where things are optimized for developer-lazyness at the expense of efficiency. E.g., adding a framework with layers of JavaScript abstraction to a page that shows some text - after all, the resources are there and it's not like they could be used by something else, right?
- fahadkhan 9y agoThere is a cost to the company for non performant front end code though. If the front end preforms poorly users are less likely to use it.
- xg15 9y agoIf that were the case, I think there wouldn't be that much discussion about the "website obesity crisis". E.g., see this post from another thread: https://news.ycombinator.com/item?id=15028741 https://news.ycombinator.com/item?id=15028741
- man2525 9y agoNot sure about when, but I think that restrictive software licensing combined with Moore's law guaranteed wasted computing power. Companies that sold both hardware and software had an incentive to soak up that power to encourage perpetual upgrading. It grew wasteful "software ecosystems". That or testers should fail more software that doesn't run quickly on low end hardware.
- TekMol 9y agoThis is what I get after starting Chromium, before opening any website. Does this mean it is using 178064 + 175208 + 92132 + 90492 + 87596 = 623492 KB = 623 MB right off the bat without having loaded any HTML? NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 0 979612 178064 108084 S 0,0 1,1 0:01.38 chromium-browse 0 3612044 175208 128552 S 0,0 1,1 0:01.83 chromium-browse 0 1372444 92132 67604 S 0,0 0,6 0:00.27 chromium-browse 0 1380328 90492 58860 S 0,0 0,6 0:00.62 chromium-browse 0 457928 87596 75252 S 0,0 0,5 0:00.67 chromium-browse
- majewsky 9y agoFor Firefox, I have 378.3 MiB. Better, but much more than I expected: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user 9309 59.0 4.6 2020900 282568 pts/2 Sl 09:46 0:01 /usr/lib/firefox/firefox user 9369 8.0 1.7 1897024 104800 pts/2 Sl 09:46 0:00 /usr/lib/firefox/firefox -contentproc -... However, When I look at the "available" column in free(1), it looks much better. Only 170 MiB increase when Firefox is started: $ free total used free shared buff/cache available Mem: 6115260 598900 4324616 41748 1191744 5205960 Swap: 0 0 0 $ free total used free shared buff/cache available Mem: 6115260 781304 4116456 68908 1217500 5032360 Swap: 0 0 0
- jeffhuys 9y agoSafari (Technology Preview) uses ~50MB with only the "favourites" tab open (default): PID COMMAND %CPU TIME #TH #WQ #PORT MEM PURG 44688 Safari Techn 0.0 00:03.41 10 3 311 51M 2648K Safari (original) uses ~300-400MB with 20-100 tabs open. I think they use a different way of storing tabs which are not on your screen at that moment. (I didn't check Safari (original) for nothing-open-and-idle RAM usage, simply because I didn't want to have to reload all my tabs, so I booted Safari (Technology Preview) to quickly test it.)
- VarFarYonder 9y ago> There have been a few attempts at a Software Minimalism movement, but they seemingly haven't gained much traction. For those interested in exploring a minimalist approach, it's worth checking out http://suckless.org/philosophy http://suckless.org/philosophy and https://handmade.network/manifesto https://handmade.network/manifesto
- jeffdavis 9y agoSoftware is causing science is moving backward. Software makes the world more complex faster than we can understand it, so even though we have more knowledge we understand less about the world. We used to know how cars work. We used to know how phones work. Now we don't, and never will again. The implications are unsettling.
- titzer 9y ago+1000 to this. Imagine a world populated entirely by IOT devices. Imagine, for a moment, starting with a blank slate and trying to make sense of these devices using the methods of Science. They are so complex and their behavior governed by so much software that it'd be impossible to make a local model of how the device actually worked. You simply would not be able to predict when the damn thing would even blink its lights. When the world gets to this point...One would have to understand how software worked, in many different programming languages; kernels, scripts, databases, IO, compilers, instruction sets, microarchitecture, circuits, transistors, then firmware, storage...it'd be impossible to reverse engineer.
- adrianN 9y agoIt would still be simpler than figuring out how biological machines work but biologist are trying with some success.
- titzer 9y agoMy point is that it is completely stupid to think of the stack of knowledge necessary to understand how an IOT device really, fundamentally works. A toaster is not a complex thing. It has a few springs, a tray, a body, some heating elements. Some wires. There is absolutely no need to put the internet in there. /rant
- daemin 9y agoThe best example of how uncomplicated things should be is the design of an ordinary kettle. I remember an article here on HN where a guy disassembled a kettle to find out how they make it so cheaply. It was some simple bi-metal wire that would bend when it reached a certain temperature and shut off the power to the heating coil. I guess the whole aspect of these IoT is that it violates the simplicity of these devices. Kind of like the weapons in Judge Dredd vs a simple modern mechanical handgun.
- 13of40 9y agoAt the risk of being downflamed for not knowing something obvious, I see it as the gap between what standard runtime libraries provide (e.g. nice generic list, stack, and queue classes) and the algorithms devs implement on top of them. A part of me wants to see all of the grotesque implementations of "visit every relationship in this tree" that get invoked when I click the "add comment" button on this.
- dvfjsdhgfv 9y agoTo understand this, you need to read Andy Grove, especially "Only the Paranoid Survive". It's fascinating: basically everything I, as a user, see as a boon, he perceives as a threat. From his point of view, everything that allows people to buy cheap machines, run fast software etc. is negative and needs to be dealt with. Intel basically didn't change over the years, with the recent x86/ARM fuss showing just that. On the other end of the spectrum are companies exploiting the existing possibilities - for a long time it was Microsoft, making each version of their flagship products more and more resource hungry, so the users were forced to upgrade ("What Andy giveth, Bill taketh away"). What is happening now is the extension of the same story - "Memory is cheap? Let's use all of it!". As a developer, you rarely care about memory usage; as a web developer, you have limited influence on CPU usage. And since most managers care only about getting the project done on time and within the budget, this is what most developers concentrate on.
- noir_lord 9y ago> And since most managers care only about getting the project done on time and within the budget, this is what most developers concentrate on. I think that is the crux of the issue succinctly put.
- w_t_payne 9y agoYeah. This is a business and management problem, not a programming problem. If the business wanted to impose memory and compute budgets for different parts of the program, they could. This is what happens in aerospace and automotive when you have more than one program sharing a processor.
- agentultra 9y agoIt happens in game development when you're targeting resource-constrained hardware consoles. It can happen in web development as well if you're working on a disciplined backend team that cares about designing for request latency and concurrency. But often scrappy startups don't have the time or money to care about those things. It's more about product fit and keeping customers happy to keep the money coming in. I personally don't use that excuse and design everything I can with a budget in mind. It's a nice constraint to have an upper bound on response time. Forces you to pick your battles.
- bsaul 9y agoWonder how much of it is only due to asset. I keep making my colleague notice than a single background image displayed on a high res iphone occupies more ram than the total data of their app by a factor of 100 (at the minimum). Same goes for app size on disk : it's most often mainly assets. So just loading from disk, decompressing, put on Ram then moving around and applying visual effects is probably half of the reason everything is slow. Those "bloat" graph should also mention screen resolution and color depth.
- wodenokoto 9y agoMy first thought too. I might have done the same on my 2000 era machine as I do today (browse the web, listen to music, program, maybe edit a picture or two) but I'll be damned if I had to do all this in Windows 98 with a resolution of 800x640 again!
- chx 9y ago640x480 or 800x600 and I think you mean the latter. 640x480 was more a Windows 95 resolution. We could waste some words here how display resolution didn't keep up due to Windows being crap and people being bamboozled into 1366x768 being "HD" or "HD Ready". 800x600 vs 1366x768 that's only double the pixels and barely more vertical.
- digi_owl 9y agoWin95 would default to 640x480 at some low color depth if there were nothing but vesa drivers to work with. Made for a fun first hour after a fresh install. Back then i had a habit of building up a cache of drivers and common software on drive, later dumped to CDs at irregular intervals, just to lessen the rebuild time. Funny thing is that i kinda miss those days. Back then i could pull the drive from a computer, cram it into another, and more often than not 9x would boot. It may give me that vesa only resolution etc, but it would boot. These days it feels like it would just as well throw a hissy fit ascii screen about missing drivers, or something about the license not being verifiable. I thought maybe Linux would rekindle this, but sadly it seems the DE devs are driving even it head first into the pavement. This so that they can use the GPU to draw all their bling bling widgets and paper over the kernel output with a HD logo...
- jlebrech 9y agoSoftware went off the rails following the advent of the downfall of the real IDE, the mouse and the web browser. The browser is the big one, you're running an operating system inside of another. The IDE not being able to target a true cross platform binary has hampered us. The mouse has made developers lazy and et them put interfaces in clunky places. (contradicting myself) Not using the mouse for coding anymore (see the downfall of the IDE) And OS and browser vendors should have allowed binaries to run at a higher ring level, IE run something similar to dos inside of a browser, I would much rather cross compile to the major architecture than code in HTML/CSS/JS.
- xycodex 9y agoI would posit that the decrease in price of computational resources drives a couple of things - better quality (more resolution, colors, for e.g) and ease/cost of development. You might see individual applications do the same things, and consume more resources due to the layers and layers of abstractions, BUT be cheaper to build. As a consequence, many, many, many more applications being built, for cheaper, reaching more people, "eating the world".
- perlgeek 9y ago> Hardware capability increases exponentially, but software somehow just bloats up, using the power and space, without providing much more functionality or value. I disagree. Our baseline for software has increased dramatically. If you don't care much about the added functionality or value of the new software, use Mosaic or Netscape 4.0 to browse the web. There are obvious improvements in browsers which you are so used to that you forgot them: tabs, ability to zoom, process-level isolation for websites, support for newer protocols, CSS, Unicode support, font rendering things I'm probably not aware of, a built-in debugger and inspector in the browser, and so on. Again, if you think that software hasn't advanced much, simply use the software from 10 or 20 years ago, and see if you can stand the experience.
- Paianni 9y agoYeah, screw everyone who makes use of Lynx, Netsurf or any of the extreme lightweight browsers still maintained today.
- rejschaap 9y agoLynx and NetSurf are more usable because they have been maintained. I'm sure 2017 Lynx is much more bloated than 1997 Lynx. Current day Lynx users will probably find 1997 Lynx unusable. All of this despite the fact that preventing bloat is probably one of the core goals of Lynx, which it obviously wasn't for Netscape.
- richthegeek 9y agoAll 7 of them!
- coroxout 9y agoI love lynx. I may be alone (or in a group of 7), however, judging by how often I get a 403 Forbidden error because a site is set up to reject anything with a user agent of lynx. Seems to be a default of many Wordpress setups. e.g. lynx slatestarcodex.com. Maybe I should just tweak the user agent, but hey, lynx pride. (edit: looks like it's the "libwww" part of the default lynx user agent which gets me blocked, not the "lynx" part. OK, I will edit that out. Ha!)
- z3t4 9y agoJust like roads and budgets the utilization will always grow to overflow.
- alkonaut 9y agoThis article is based on the misunderstanding that software complexity has NOT grown exponentially. It has. Even though features might be added in a linear fashion (and I think that's not true either - the teams that build large applications have grown too), the complexity the whole system might scale as the square of the number of features, or exponentially. That is: if word2017 has 10 times the number of features as Word6.0, we should not be surprised to see CPU and RAM requirements be 100 or 1000 times higher. Finally, just like a memory manager in an OS makes sure all memory is actually used, software should be using the computers' resources. If an average computer now is 4x3Ghz then a foreground application such as a photo editor should have features that at least some times puts that hardware to good use. Otherwise there was no point in having that hardware to begin with. As software developers we should aim to scale our software to use the available hardware. We should not just let twice as fast hardware run our software twice as fast.
- nkkollaw 9y agoI completely disagree with you. I don't know whether the "square of the number of feature" claim is true, but we have certainly made our system huge for no reason—besides perhaps making it more convenient for programmers. I go to http://artelabonline.com/home/ http://artelabonline.com/home/ every once in a while—which will crash if many people click on this because there are only 128MB of RAM—which I built in 2009. With the worse PHP one can think of, no CDN, etc., it's lightning fast. Websites nowadays are over 10MB, and most of that crap are JavaScript libraries and frameworks. Most apps I use daily are Electron apps, which contain a whole copy of a browser even though I already have one installed, and routinely take up 700MB of RAM to show me an app that is actually a web page. I believe that the problem is that programmers are doing things for themselves, and not users—which is eventually who will use the product. Electron is a great example. That, mixed with this idea that a little control panel for a client who has to check 10-20 orders for his store should be built with the same framework used by the most visited website in the world.
- alkonaut 9y ago> completely disagree with you. Well I was being perhaps a bit deliberately controversial > for no reason—besides perhaps making it more convenient for programmers That's a massive and excellent reason to make a system consume more resources. In fact I think it's probably the main reason programs do! If new feature X can be done in 1 man-week and consume Y resources, it's entirely possible that it can be done in such a way that it consumes just 1/4 of those resources. That might take 10 man-weeks (and/or much better devs). So you don't, because users generally aren't willing to pay for that. Basically only a few very niche products do this (game engines, embedded, ...). Basically, the economics of adding feature X was such that if it can't use a huge amount of resources, the buyer can't afford it. So it uses a lot of resources, becaue the buyer wanted the feature. > I believe that the problem is that programmers are doing things for themselves, and not users—which is eventually who will use the product. Electron is a great example. This is partyly true. Electron (and similar) is an excellent example of the economics above. I also can't believe how someone can write a chat client that uses 1Gb of ram in any universe. But the economics were such that JS developers, unfortunately were easy to come by, and a browser engine with DOM (of all things) was the best way to get a cross platform UI running with these developers. So the arrival of Slack was really just like any other feature. Someone wanted a cross platform shiny group chat application, and they wanted it now and not in 10 years, and they wanted it to cost reasonably little. The answer to that, unfortunately, was "ok but it'll cost you two cpu cores and a gig of ram". Was it just for the developers? well, partly. But indirectly it's for the users who weren't going to PAY for C++ devs to write slick and lean native versions of this software Bottom line: every user has a limited amount of money and a limited amount of computer resources. When given a choice, my experience is that users are much more willing to pay with more resources and less money, than vice versa. The important thing to remember is that the two are connected - a program that takes less resources is more expensive.
- Sir_Substance 9y ago> The Blogger tab I have open to write this post is currently using over 500MB of RAM in Chrome. How is that even possible? Mate, you picked /blogger/ as your preferred blogging platform. Blogger can't even deliver a page title without Javascript. There's a whole world of much higher quality software out there, it may be that you've chosen not to use it. This dude should try switching his blog to Pelican[1], it might be something of a revelation. [1] https://blog.getpelican.com/ https://blog.getpelican.com/
- reacweb 9y agoIMHO, the starting point was the requirement of 3D accelerated video cards. The last 3D games I have played (alone in the dark 1, doom) did not require any 3D card. But now, you can't display a line of text without a huge pile of crappy layers above insane GPU. 25year ago, direct video memory mapping and bitblt operations were sufficient.
- mandie 9y agoWritten in a blog that does not work with javascript off.
- neogodless 9y agoYes - I often think about posting this sort of comment, but won't if it's not really relevant. But not only do you need to enable JavaScript for the domain itself, then you need to enable it for blogblog.com, and load 7 resources from that site. The page loads up images for about a dozen unrelated articles in the background behind the modal. It would be great to walk the walk when you post about this kind of topic, by using a simple HTML web page with just the images you need to aid in presenting your argument.
- y04nn 9y agoIt's all about cost and what users can accept. If a feature costs 10 times less, takes half the time to implement and is easier to maintain but produces the same result for the end user, why would software companies bother to optimise (if the end user does not care)? Also, it seems to me that the optimisation on the web is done on speed at the detriment of memory usage.
- jbergens 9y agoBesides all other things people have mentioned there is also new requirements for ui:s. People complain if their drag-movement with a finger don't align perfectly with a nice animation on the screen on a cheap phone. Those things did not exist 10 years ago or 20 years ago. Interfaces were simpler and easier to build and users were happy that it worked. But I do agree that software could be a bit faster nowdays.
- srssays 9y agoSoftware is written better. In the past, computational complexity was lowered by arbitrary size limits. e.g. if you had a O(n^2) algorithm you might cap n at 10 and now you have a O(1) algorithm. Job done. Now, computational complexity is lowered by aggressive use of indexing, so you might lower your O(n^2) algorithm by putting a hash table in somewhere, and now you have an O(n) algorithm. Job also done. The practice of putting arbitrary size limits on everything has almost died out as a result.
- AndyMcConachie 9y agoTFA doesn't even load without javascript. I use noscript and this HTML file won't display anything unless I allow JS to load from a different domain. Perhaps the author should practice what he preaches. Then again, I don't really know what he preaches because I can't be bothered to allow the JS to load.
- flyinghamster 9y agoEven when I temporarily allowed the scripts, all I got was some spinning gears. Yes, software has indeed gone off the rails.
- jasonkostempski 9y agoIt's a mega bloated site with a loading spinner that eventually opens a list of posts and then does a painfully slow animation opening the actual post in a modal window over the list. I thought for sure there'd be some nod to the site being a prime example in the article, but there wasn't. Edit: There was kind of a nod, but more about the Blogger editor than the reader view.
- stephengillie 9y agoRemember, things are this way because they're "better for users".
- jasonhanley 9y agoDidn't really expect to hit HN front page with my random rant :) In any case, glad I was hosted on Google infrastructure but embarrassed by the bloated, default Blogger template. Interested in suggestions for simple, lightweight alternative. Medium, Square, WordPress, etc. all seem to suffer from similar insane bloat.
- CaptSpify 9y agoThen build it yourself. It's not that hard to create your own simple, static webpage.
- seanwilson 9y agoI think a lot of it is you tend to only optimise as much as you need to. When the average user only has 4MB of memory, you're going to spend a lot of time optimising image size for example. When you can assume 4GB of memory, you're going to put that time into other places as the effort would be very difficult to justify. Wouldn't your users appreciate more features than optimisations most of them aren't going to notice? For the same block of time today compared to decades ago, you're going to be creating an app that uses more memory and CPU but has a lot more features. Developer time isn't free and needs to be justified. I used to write DOS apps for 66MHz PCs and you'd spend an enormous amount of time optimising memory and CPU usage. This was similar for the initial batch of Android phones as well as you didn't get a lot of resources (e.g. loading a large image into memory would crash the app). Now I can create more features in way less time and rarely have to think about optimisations unless dealing with a lot of data. I think expecting every software developer to release software that uses the absolute minimum amount of CPU and memory possible is completely unrealistic. The people commenting that developers don't know how to write optimised code anymore have different priorities to a typical business. I know how to make low level optimisations and have even resorted to assembly in the past but I'm only going to these lengths when it's absolutely required. For commercial projects, it doesn't make any business sense to optimise more than is needed even if that makes software developers squirm.
- fauigerzigerk 9y agoYou are right, but the result of all apps (plus adverts) taken together is a very sluggish system. I think what operating systems should do is to allow users set per app/website quotas and use sensible defaults. Developers should get the message that no we can't use all the resources available on a given system just for our particular app.
- fredsir 9y agoThat would be a glorious feature. I wonder if QubesOS can do that. In any ways, macOS that I am running as my personal system probably ain't gonna get that feature anytime soon.
- 9y ago
- Waterluvian 9y agoSoftware itself is the sacrifice of system optimization for human optimization. Give me unlimited human power and I'll give you purpose-designed chips for each individual use case with the program encoded in the wiring of the logic gates.
- divanvisagie 9y agoThis article is a waste of bandwidth and server storage space, the entire content is just an elaboration of the title, with not even a single consideration to what the cause is. There are also a few graphs to make the author feel like he is a scientific researcher writing a paper instead of what he is actually doing , which is posting a question that quite frankly could with little extra thought fit in a tweet.
- davemp 9y agoAt least it's promoting some decent discussion in this thread?
- jasonhanley 9y agoThanks :) That's what I was hoping for. It's a serious problem with no clear solution.
- jsight 9y agoThis line caught my attention: "And somehow our software is still clunky and slow." It is? I haven't really noticed. It seems to me that my 9 year old desktop still runs most modern software reasonably well. My new laptop runs it much more quickly than machines from 15-20 years ago. Granted, in an abstract sense, CPU usage and memory consumption has grown a bit, but the actual user experience is better.
- jbg_ 9y agoA: Around the time that a simple blog post required JS from four separate domains in order to display anything other than a blank page.
- stewbrew 9y agoI think the author demonstrates well the problem by using a blogger theme that requires JavaScript to be turned on instead of statically rendering the blog post that is just a few paragraphs long as HTML and serving that from a simple server. He shouldn't ask "when" though but who made it go off rails (sic!) and why.
- DannyB2 9y agoI'll make three points. The article is focused on machine efficiency. Human efficiency also matters. If you want to save cycles and bytes then use assembly language. Geez, we had the assembler vs fortran argument back in the 70's. Probably even in the 60's but I'm not that old. Guess what? High level languages won. Next. Hey, Notepad is much smaller, leaner, and faster than Word! Okay. But Word has a lot of capabilities that Notepad does not. So is it "bloat" or is it "features" ? Guess what, Windows is a lot bigger and slower than DOS. Imagine this argument from a business person: If I can be to market six months sooner than my competitor for only three times the amount of RAM and two times the amount of CPU horsepower -- IT IS WORTH IT! These items cost very little. You can't buy back the market advantage later. So of course I'll use exotic high level languages with GC. I'm not trying to optimize machine cycles and bytes, I'm trying to optimize dollars.
- mikebenfield 9y ago> If you want to save cycles and bytes then use assembly language ... High level languages won. This is a ridiculous straw man. It is completely possible to write efficient software in high level languages, and no one is suggesting people extensively use assembly language. Actually, in many cases it is very difficult to write assembly that beats what's generated by an optimizing compiler anyway.
- _Tev 9y agoConsidering how many people are preaching "do not use electron, write true native apps", the argument is the same (use lower level tools) and reply to it also stays the same: Dev time is the most expensive resource.
- fouc 9y agoI think a potential solution would be to encapsulate every program in their own VMs, with memory & cpu limits set. Put some control back in the user's hands, prevent less run-away bad behaviour from the apps.
- ninjabeans 9y agoIronic that your blog needs javascript to display a page.
- Mercy223 9y agoMy husband was so smooth at hiding his infidelity so I had no proof for months, I was referred to a hacker and decided to give him a try.. the result was incredible because all my cheating husband's text messages, whatsapp, facebook and even phone conversations was wired directly to my cellphone. He helped me put a round-the-clock monitoring on him and I got concrete evidence of his escapades..if your spouse is an expert at hiding his cheating adventures Contact ENRIQUEHACKDEMON11 @ GMAIL COM or WHATS-APP:+1(628)203-7005...for any hacking service and tell him MERCY referred you...xoxo
- Mercy223 9y agoMy husband was so smooth at hiding his infidelity so I had no proof for months, I was referred to a hacker and decided to give him a try.. the result was incredible because all my cheating husband's text messages, whatsapp, facebook and even phone conversations was wired directly to my cellphone. He helped me put a round-the-clock monitoring on him and I got concrete evidence of his escapades..if your spouse is an expert at hiding his cheating adventures Contact ENRIQUEHACKDEMON11 @ GMAIL COM or WHATS-APP:+1(628)203-7005...for any hacking service and tell him MERCY referred you...xoxo