Computing in molasses

Way back in the 80’s I had a Commodore Amiga 1000 as a home computer. While there was much that was amazing about that machine, it was tedious to write code on — with one 800k byte floppy disk and a multi pass compiler and linker, it took what seemed like ages to edit-compile-run. It was like wading in molasses.

Meanwhile, at work I used DEC microvaxes running Ultrix, and Sun workstations running SunOS, and they were very sprightly. Editing large files with emacs was comfortable, compiling C code was quick, and shell and awk scripts ran fast enough that you didn’t even have to write C unless you had a really big data set to process.

In fact, it was almost more comfortable to dial in to work at 2400 baud and use a terminal session on my microvax than to use the Amiga for developing C code.

This was not the Amiga’s fault. With the limited hardware, it couldn’t be any faster. Add hard disks, more RAM, floating point hardware, and it would have been as responsive as a Sun workstation, but it also would have cost as much.

Things changed around 1990 when I bought a 40 MHz AMD 386 based PC with 120Mbyte hard disk. Initially running Coherent, then Linux, I finally had a home computer that was as comfortable as my work computer. With an add on IIT floating point coprocessor, my 386 system at home was entirely as responsive as the Sparcstation IPC on my desk at work.

And as hardware improved with time, things got even better both at home and at work. With ample computing power, you only got slowed down on serious problems. Most of the time it felt like you were jogging comfortably through the problems, and this happy situation continued until recently.

But now, again, I feel the molasses oozing around my knees, slowing me down and resisting my stride.

How can it be, that with GHz multi-core processors, Gigabytes of RAM, hundreds of Gigabytes of disk, and megabit per second interfaces, the computing experience is anything but instantaneous?

Recently, I have had to make relatively intensive (I mean all day long) use of some software that runs only on Microsoft Windows. This is really unpleasant.

The most unpleasant thing is the poor responsiveness of the system, in particular the irregular time lag between clicking on something and activity occurring. Sometimes things take 1/2 second, sometimes 5 seconds. Sometimes, after a 5 second wait, you think maybe the first click wasn’t seen, so you click again, only to find the first action was actually seen, it’s just that the lag was unusually long, so now you have 2 instances open.

It is not the hardware, or the system configuration. The problem is the completely shoddy software (from operating system up to application), and in particular, the way it is structured.

The problem sets are much larger today than they were 20 years ago, and I know we use interpreted languages with bigger runtimes, and garbage collection, etc, etc. That is not the problem. Modern hardware is more than up to the task. I am still impressed when I run a large program written in python that it runs in a matter of seconds. And then I can rewrite one module in C, wrap it with swig, and get something that runs in milliseconds. This hardware is FAST.

The problem is the software architecture. If you insist on making a GUI application, then you must design the software architecture so that the user interface is responsive, even when something time consuming like network access or serious computation is involved.

If I click on some button to start an action, and a dialog must pop up to ask for some input, then it should pop up quickly every time. I won’t mind if the action sometimes takes 20 seconds or sometimes 25 seconds, but it will break my stride if I have to wait some varying amount of time for the dialog to pop up. This problem is so common on Windows software — sometimes you click the File menu and that takes several seconds to come up.

On microsoft windows, most software is like this. On linux, firefox and open office are like this. I find these programs quite unpleasant to use.

Meanwhile emacs, which people used to deride for bloat — Eight Megs and Constantly Swapping — well, eight megs is basically cache memory now. Sure, emacs has bloated somewhat over time, but it is still a pleasure to use.

Advertisements

24 Responses to Computing in molasses

  1. Bobo says:

    Its a scam by Wintel to sell more cpus. Also, MS programmers often have low IQ’s. 😉

  2. DavidM says:

    I have to agree with you here.

    I remember when I was learning Turbo C++ 3.1 I tried Borlands full C++ product which was Windows based. The GUI code editor felt sluggish so I went back to the text-window based Turbo C++.

  3. Silly says:

    I suppose you are fortunate to only have to use your molasses software for only one day, yet report that experience as if it applies to all Windows applications. I tend to disagree and purport 99% of my Windows software (running on the many machines I use daily) runs at speeds at which I am comfortable.

  4. I.S. says:

    Nowadays we’re in the era of “the hell with performance” – it also baffles me how much hardware goes to waste barely used. Graphic cards with half-assed drivers – wastes of silicon – everything running on virtual boxes, running on scripts which in turn run virtual machines compiled for 386’s instruction set (in 2008 for crying out loud), horrible waste of memory (esp. Windows), unused multiprocessors, etc etc etc. Don’t get me started on X-Windows + Gnome!

    I end up working on a lightweight WM and vim. I kid you not.

  5. Holger Hoffstätte says:

    The structure of software often resembles the structure of the organization that created it. Draw your own conclusions about US management and corporate mentality.

  6. I’m interested to hear how you feel about cloud computing, ala using Google Apps or Engine.

  7. Fabien says:

    I have to agree with this. Firefox is slower to start than the old Netscape on Windows 3.1. And sometimes, for no apparent reason, Windows XP’s “Start” button will take several seconds to show. And indeed, it’s not a matter of hardware power: I run Windows XP on a Core2 Duo with 2 GB RAM.

  8. […] stumple upon this article on reddit.com: Computing in molasses « Musings of a crusty old fart. I can whole heartly agree with the comments made by the author, I have only had similar […]

  9. ShaneG says:

    Having grown up learning how to program first on the ZX Spectrum (using BASIC originally, and Z80 assembly language to get speed later), then being taught in university Pascal, Z80 assembly, 808x assembly and then learning C, 68000 ASM and C++ on my own I lay the blame directly on the programmers.

    I don’t condone writing most things in assembly – that would be stupid. What I would prefer is programmers knowing enough assembly (and/or CPU architecture) to realise what a ‘page fault’ is, and what it entails. What it means (at the CPU level) when you say ‘new Blob(); blob.this(); blob.that(); delete blob’. And if you are using a language that provides garbage collection what the concept of a ‘working set’ is. Actually, that applies to non-GC languages as well.

    I love functional programming and the ability to describe algorithms (and problem solutions – which are not always the same thing) in a neat syntax which represents the problem domain more than it does the solution domain but it makes sense to understand what that description is being devolved to in order to achieve the solution.

    In my (old fart based) opinion – it has nothing to do with MS programmers having low IQ’s (sorry Bobo), having to deal with a UI, or any deliberate attempt by the Wintel monopoly to sell more CPU’s or more ‘development toolkits’ – it’s simply a matter of programmers forgetting where they came from or how to utilise the hardware that they have been given.

    Remember that GEOS (a graphical UI controlled by mouse and/or joystick – http://en.wikipedia.org/wiki/GEOS_(8-bit_operating_system)) was available on the C64 (an 8-bit computer with 64Kb of RAM) in the late 80’s. Incidentally that is how I met my first serious g/f – a story for another day perhaps.

    These days people seem to frown at anything that has less than 16Mb of permanent storage (Flash memory or otherwise) and less than 32Mb of transient storage or RAM.

    In my day, young fella, we used to walk uphill (both ways) to get dedicated access to 16K of RAM 😛

  10. ShaneG says:

    To the moderator:

    At the end of the Wikipedia link to Geos you will see the unlinked text “(8-bit_operating_system)” – that is supposed to be part of the link.

    Thanks,
    ShaneG

  11. spincycle says:

    I think you all just have your systems configured incorrectly or don’t realy understand how to get the most out of your systems. I use a linux box (AMD), an XP/Vista dual oot box (intel core 2 duo), a mac pro , a a couple macbooks. With the exception of the mac pro – which is just bloody fast and is currently crunching seti units on all 8 cores – all of the other machines operate fine, quickly, with just dandy responseveness of everything but shitty INDIVIDUAL programs.

    Sounds to me like you’re running with too little RAM, or incorrectly configured swap settings, or haven’t bothered to look at your BIOS settings.

    I recently ran a HUGE data set in IDL under windows – and it was far, far faster than the solaris box I had originally written the code on. And that was while using a web browser at the same time.

  12. Right on. The first rule of good UI is responsive to user actions. The greater delay, the more likely a user feel their input is random.

  13. Przemek says:

    That’s because “The software gets slower, faster than the hardware gets faster”

  14. ShaneG says:

    Yet another set of comments:

    Dear Silly,

    It is not just using software for one day that annoys you. I have been using a number of software components on Windows for an extended period of time that continuously annoy me – CRT is a good example, any software that uses a custom USB driver is another excellent example (it seems that Windows blocks everything to wait for a response from any hardware that is plugged in – or that software is written to expect that hardware to respond immediately even though it is unlikely it will).

    The same problem is visible with recent Unix/Linux software. Show me a list of available hardware the user says – sure, says the software, but give me 15 seconds to determine if something is actually there or not. But I did not ask specifically what you had to offer says the user – I don’t care says the driver, I’m anticipating that you will click on my device icon and I want to be ready for that.

    Here’s the imaginary conversation between myself and a Linux system (the one I am using right now actually) …

    Hmm, dear computer, I really enjoy interacting with you but … when I click on ‘Save As’ why are you showing me the ‘AVP2’ DVD I just bought (it was dirt cheap, really)? I mean, you know I can’t write anything to it – why is it even in my list of folders to save files to?

    Dear Human, I know you are using Ubuntu and Firefox 3 (which, combined, are the best UI ever, really) but how ignorant are you? I expect you to know that you can’t save to that DVD. I just wanted to make you wait while I scanned all the directories of that DVD to let you know all the places you can’t save to. Duh!

    Dear computer, you suck. I have a (paper based) notebook (and several color pens) right next to me. I think I’ll use that from now on. I would print it out but my printer uses a propriety protocol which is not supported by CUPS. I could always print to a PDF, copy it to my Mac (or to my XP system with Adobe installed) and print from there but really – there are about 5 keywords to remember so I’ll just jot them down and google it later.

    NB: Both Windows and Mac systems listed my AVP2 DVD as a potential save location (and only borked when I actually clicked save). Forgive me for being obvious – but if the device is read-only, why is it listed as a save location?

  15. jimbobjames says:

    I’ve noticed other people complaining about “lag”. All of them were using Intel CPU’s. I have read other people mention this phenomenon with current intel processors, obviously its very easy to blame the OS. I can’t remember a specific source but it is something others have noted, but not apparently when using AMD cpu’s.

    Before I get flamed – I not talking about standard loading lag but the wierd way that programs behave on XP / Vista with a core 2 cpu. It’s like a wierd variable lag when you launch programs.

  16. Dan says:

    If only there were an open source version of Flash, I’d switch in a second. But I have to spend all day with this hulking, focus-stealing, updating-without-asking, suddenly-disconnecting brute of an oaf PC.

  17. Who was using a “multi pass compiler” on an Amiga? Multi pass assemblers perhaps … 😉 And SEKA and ASMOne were very very fast.

    Peace
    -stephan

  18. In my experience with Windows XP, the less than optimal paging plays a big part in these responsiveness problems. If you have enough RAM (and with the low prices for RAM nowadays there’s no reason not to) just disable paging entirely and Windows becomes a lot more responsive.

  19. Yes, I feel the same. Even worse then the speed is the instability. We spent so much time making things work consistently, and now? My earlier development platforms were deterministic machines, entirely understandable, this PC thingy on my desk today is one giant chaotic mass of bad functionality all spiraling around waiting to irritate me. Progress?

    If they considered it a software crisis in the fifties, it should be described as a full software meltdown now.

    Paul.

  20. I use Windows apps all day long and my File menu never, ever takes a detectable amount of time to appear.

    On the other hand, I have to reboot way too often, and it takes far too long, at least 5 minutes from start to end, and I shouldn’t need to do it in the first place.

  21. Otmorozkam says:

    It’s impossible to know if I agree with you or not. Why don’t you just name the program that was giving you problems?

    My own current pet peeve is programs that instead of a progress bar present a block sliding back and forth or flower petals rotating. This give me no idea how long it will be before the program comes back.

    I, too, remember the “Good Old Days” of computing, when you went to save something on your DEC Rainbow’s floppy drive and prayed there ws no plane passing overhead at the time, because the slightest vibration would cause the write to fail.

    You had 16K? We used to DREAM of having 16K on the TRS-80. You got 4K, if you were lucky. Then the lab manager would cut you in half with a bread knife and dance about on your grave singing “Hallelujah!”

  22. Bobo says:

    Sorry, I was just trolling for a reponse. Anyways, spyware or virus checkers (ironic, come to think of it…) can ofren slow down a Windows box considerably. Sloppy programs that leak handles are also to blame. I do think that MS can be a bit more “pro-active” in showing up the sloppy application however.

  23. Boris says:

    If you run too much stuff at once, yes your OS will become sluggish. This is true with Windows or Linux or any OS. I am quite happy with the performance of my Windows OS, because I have it configured properly, and enough ram to run the open applications I do have. I know exactly what you mean because I have worked with very sluggish systems many times. Usually these systems have far too many services enabled and too little ram. It is true that any system will behave sluggishly if you impose too much on it, not just Windows.

  24. Jake says:

    You can still use lightweight software today you know. 🙂 I am in Links (graphical mode) right now because pages load instantly even though I am only getting about 300 kbps right now.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: