Skip Ribbon Commands
Skip to main content

Cory's Blog


Quick Launch

Stenoweb Home Page > Cory's Blog > Posts > How Software Changes
July 31
How Software Changes

One of the issues I think about from time to time is this idea that computers get faster and when computers get faster, that straightforwardly means that the software that runs on them automatically benefits.

This is true to a certain extent. You can usually do things like overclock a CPU or put in faster storage or more or better memory and get benefits such as applications that run faster. However, it's not always the case.

It's important to acknowledge that there are different ways computers speed up, and different ways software applications use the speed that's given to them.

This stuff tends to be more directly important when you consider non-trivial computing tasks. It doesn't really matter how much faster a system gets for things like Word and Outlook, because you can only launch Word so instantly, and word processing has largely been a task where computers have been waiting for the user to do their part for the past twenty to thirty years.

Video and audio, on the other hand, as well as other higher end applications, present interesting scaling challenges. The way we do these things has shifted a lot, even in just the past ten years, let alone the past twenty or thirty years.

Video is the example I happen to have most experience with, because it was around ten years ago that I was trying to get into some video production stuff myself. I had been doing some light editing and had been experimenting with digitizing VHS/S-VHS tapes at the end of high school, and I had been given use of a DV camcorder for much of my senior year of high school. I assisted with the on-campus TV station when I got to the university, and did so for a few years.

At the time, dual core CPUs were new, but dual processing as a concept really wasn't, it was just that it got more compact. Quad-processing was appearing in workstations, but that's not such a huge junk.

In the late '90s and early 2000s, working with video on a computer tended to be very tape based – either in the sense that you were importing or reading video from a tape directly, or in the sense that your digital file format was itself somewhat tape-like, or based on tape operations. In the early 2000s in particular, some of the early tapeless digital formats for professional video capture came onboard, such as Sony XDCAM and Panasonic P2, and although you could copy the files, the mechanisms were entirely still there to capture this video from the camera or from a deck to the computer.

This goes deep. Deep enough that at the time, people and tutorial books and even software vendors cared deeply about ensuring that people using the computer to edit video were, in essence, as polite to the machine as possible. What this generally meant was using file formats that were friendly to video editing. Ideally something like Motion JPEG, which was just what it sounds like: video compressed using a collection of frames that are each JPEG compressed.

Most compressed video is compressed in some way or another using two kinds of frames: key frames, which contain the entire picture, and intermediary frames, which describe differences between the last key frame and the current frame. The idea here is that you can make video a lot smaller, especially video where lots of things stay the same, if you either cleverly place key frames or if they're spaced relatively evenly throughout a static image. Motion JPEG and likely other similar formats work by making every single frame a key-frame. In the '90s when you could get a Silicon Graphics system to capture video, Motion JPEG was a common way to do it, because the compression was otherwise too difficult to do in any kind of real time.

Key-framed video works well for distribution, but the thing that most video editing guides were sure to mention at the time was that this type of video was more difficult to edit, for a variety of reasons. The guides weren't wrong, per se, but in retrospect, reasonably robust video editing software handled this problem with relative ease, and software that didn't got around it usually by simply refusing to import video of the wrong format. The point here is that this suggestion has almost entirely gone out the window. It's just accepted that (in general) modern software can deal with this. Similar to the key-frame issue is other issues surrounding what particular compression codec gets used for video you're editing. In the mid 2000s, h.264 video existed, but it was a big no-no to edit on that type of video, again, out of politeness to the machine that would need to do it.

And again, this changed. We now cut all day long on formats like AVCHD and MP4 files that use h.264 and even h.265 compression, because cameras and phones of all kinds easily compress good looking video into these formats, and because computer horsepower is so cheap that it doesn't matter if your video editing software needs to compensate for where the key frames are. (It never really did, especially in Final Cut Pro, which always edited on references to video files, rather than by placing absolute cuts in source files.)

At some point along the way, we basically got tired of the limitation that video must come into a computer in exactly real time, and the whole process got much better for it. Part of what enabled this is that cameras changed. It was probably going to happen as flash media (such as Compact Flash and SD cards) got better. Along the way, we had interesting ideas such as disc-based cameras, and there were hard disk fanny packs for DV and HDV cameras, but flash media won out in the end.

The other part of what enabled this is that computers got faster. As you move from one, to two, to four, to now eighteen cores in a "high end but not unreasonable" desktop computer, your ability to get the computer to do more things for you or just deal with adverse conditions improves. Of course, at any speed, video editing in particular is helped by having more memory available and faster, bigger storage. Graphics processors are also a big help. In the early 2000s, a system's GPU generally only impacted how quickly it could render things given to it by the CPU, but that started to change, especially as the 2010s rolled through, with the graphics processor itself taking a more active role in what was displayed. Today, GPUs do all manner of video editing tasks in lieu of or as an assistant or coprocessor to the CPU. It's to the point where in reality, having a good graphics processor is likely more important to most video editors than having a high core count desktop CPU.

So, computer hardware in that respect has changed a lot in the past ten years. If I go pick up a copy of Final Cut Pro 6 from around 2006 or 2007, it will in fact run on a brand new Mac, but it will get exactly none of the benefit from all of the advances made over the past ten years. Final Cut Pro 6 stumbles all over itself, badly, if you aren't so kind as to give it the correct files, and it (as a 32-bit application) makes very poor use of high amounts memory. It also doesn't make great use of a lot of RAM.

You can edit a video with Final Cut Pro 6 on a modern computer using modern files. It lets you do things, but it's a deeply unsatisfying experience as you see only one or two of four threads, even on an older Mac mini get used, and as you see only two or three of eight gigabytes of memory get used, and as you need to do things like render previews of the video with every simple edit.

Some of these things are just par for the course in terms of how video used to work. Even when editing with the DV file format, which is one that Final Cut likes, you had to take frequent render breaks or spend a lot of time just guessing at what a final product would be like. Final Cut did nothing in the background, because the hardware of the day just couldn't support it. (It's worth noting here that in overall system performance, a pretty mid-range business desktop from around 2011-2012 is probably around four times as fast as a high end workstation from five or six years earlier in 2005.)

The reason I keep picking on Final Cut Pro here is that in 2011, Apple introduced a new version of the software, "Final Cut Pro X" to replace Final Cut Pro 7. I think it would probably be fair to describe Final Cut Pro X as a complete re-imagining of what editing video should be like in the modern era of computing.

Remember: in 2011, an iMac had a quad-core CPU, a powerful discrete graphics processor, could run 16 gigabytes of RAM, and could accommodate SSDs that were much faster than any PowerPC G5-based computer or even the first generation of Intel-based Macintoshes in 2005 and 2006 could. Such fast storage barely even existed in 2005, let alone on the Mac. Some high end Macs could use that much RAM, but it was often never installed because 64-bit software didn't start existing on the Mac until after the move to Intel CPUs.

Apple's movement on this issue was faster and more sudden than almost anybody else in this industry, mainly because that's just how Apple does things. A lot of the movement in the program was based around taking things from a strictly filmstrip-based perspective and letting the software do more guessing on your behalf. A lot of it was based around the idea that as a content creator, you shouldn't really have to care about the technical details of the content. Final Cut Pro does a lot of things in the background, and the way it works as a program also encourages working more quickly. In general, for example, editors spend less time waiting for renders to happen, because Final Cut renders video at low speed in the background while you're working. In addition, the timeline just supports playback of more types of files, so a render doesn't need to occur to play video recorded by a webcam, iPhone, or anything of that nature.

On the down-side, there was a point at which if you were a Final Cut Pro editor, you had to buy a new piece of software and then spend time re-learning and pre-perfecting techniques you used to create a certain look. On the up-side, your workflow could become a lot faster and you weren't anywhere near as constrained to particular file formats or doing pre-processing before you could start editing. (Another common meme from the old days: rendering proxy files to edit on, mainly to make up for particularly bad storage in laptops and low end computers, only to re-attach the originals and re-render the output at the end of a long project.)

Some applications, such as Adobe Premiere Pro have kept up with these trends. Others, such as Avid Media Composer appear to have doubled down on what I consider to be some particularly bad habits.

This leads me to pivot into audio a little bit, because the real context for some of these discussions has been that somebody on Ye Olde Computer Forum has asked for some wisdom (in different words) on buying some hardware to form a Pro Tools HD setup, circa about 2003-2005.

The details here, which we actually discovered a few pages into the thread, are that this person is using a version of Pro Tools Native on a laptop that is a few years old. Inexplicably, even though the program isn't really using a lot of horsepower or RAM, the program stops working abruptly and gives an otherwise unidentified CPU error. The reader is left to presume that this probably means that the program hit some part in this person's audio file that is so complicated, it takes 100% CPU power to process, tops out, and then can't continue because a frame was dropped. A vexatious problem in any real-time media application, and a huge reason why in the days of yore with video, you might capture low-resolution proxy files, render or convert everything to an easy to use format, edit on that, and then let the computer chug for a day or so re-capturing all your video and meticulously re-assembling your project in high resolution.

This person wants two things:

  1. To use the Pro Tools HD processing cards (in this case, PCI-X cards) to built out a system (which would be a desktop from around 2003, compared to the existing laptop from around 2012) hopefully avoiding the mysterious CPU error
  2. Pro Tools HD 8 (the software version they will get) has an effect they want to use, that didn't become available in the "Native" (software only) version of Pro Tools until recently.

I think ultimately the person wanted us to say that yes, in fact, it's reasonable to spend $600 (the price for the cards they wanted to get) for some hardware that would enable them to build out an audio system circa around 2003. To do this, they would need one of a very slim selection of PCI-X having computers from the time, enough stuff to make that computer go and maintain it (to be fair: they probably have that, it is a vintage computer forum) and then they would need to relearn an older version of this software, only to perhaps find that because their laptop is going to be massively more powerful than, say, a Pentium 4 workstation or an early revision of Power Macintosh G5, their production needs may still be unmet.

Here's where Avid sort of looks bad, I think. There is almost certainly no good reason for the "native" version of this software to be locked down the way it is. This person has a laptop with a quad-core CPU, a good GPU, a lot of RAM and potentially a lot of very fast storage. They have a desktop with 8-12 CPU cores and capacity for at least 32 gigabytes of RAM, plus PCI Express expansion slots for faster storage. Other audio applications would almost certainly allow for around about as many capture channels as that hardware can allow. Avid is using modern single-purpose DSP cards dictate licensing and feature levels on its software products.

To me, doing it this way pretty much ignores that there is now better ways to do this work. A modern CPU can almost certainly outstrip these DSP cards, whose only real function appears to be for compression and to enable certain effects, even though neither of those things should require specialized hardware any more.

It's reasonable that a single or dual-CPU workstation from 2003 doesn't have the horsepower to do this. But, something from a decade later? The thing people in the discussion said was that "audio hasn't changed" – with the implication being that this was a "solved problem" and that as with word processing, there aren't improvements that can be made in process or efficiency.

Of course, I don't consider audio to be a "solved problem" especially if here in 2017, when we're getting 8-core CPUs at the mainstream desktop level and 12+ core CPUs at the enthusiast level, before we get into actual workstation and server CPUs, you still need thousands of dollars worth of DSPs from the '90s to do compression on audio to capture it to disk and then play it back.

For better or worse, I think the solution here needs to be that communities using these tools need to look at Avid and ask why this is the case. An iPhone or an iPad can easily record multi-track audio. An interface for doing so is of course necessary, but outboard processing hardware really shouldn't be.

If I were an Avid customer today, I think I would either be inciting a mutiny or I would simply stop being an Avid customer.

The conclusion to this sub-point is of course that this person has either already bought the Pro Tools 8 kit, or they're going to anyway, because a bunch of pointed leading questions about what guides their needs and what might make the best use of hardware they already have is not worth the time and effort.

I get that people doing creative things with their computer just want to sit down and do it, but this stuff is usually worth discussing because if a change in tools can lead to better results or faster results, then the justification not to do it seems thin. In the case of Pro Tools, I think something needs to be asked about what really causes the CPU error. I know that with my video editing work (when it appears, which I will admit, it is infrequently) newer software will immediately lead to a speed-up in my work, just because it will be able to better take advantage of the modern computers I have, and it will work more easily with the modern file formats I use.

I don't have particularly concrete examples, but advances in computer hardware generally need to be matched by advances in computer software, generally, to achieve the most meaningful productivity increases for non-trivial tasks. Computers may not feel faster, although a side-effect of much of what is improving in the past five to seven years means that they should in fact feel faster, especially as operating systems get fine tuned and as application software gets updated to take advantage of new hardware configurations.

This isn't exactly a continuous climb, though. If an application is, say, 64-bit aware, it doesn't really need to become more 64-bit every time new computers that support more RAM come out. If an application is multi-threaded, it doesn't necessarily need to become more multi-threaded each time a new generation of CPUs comes out. What needs to change, of course, is that if RAM ceilings jump enough that your application struggles to get a performance benefit out of it, when it should, or when an application isn't designed to use more than a certain number of threads, or when CPUs are so heavily threaded that there's room for the application to do more work at a time.

There will be a point at which something will cross over from being something difficult to something easy, perhaps even trivial. I would say that video is there, but it's really not – advances in video capture technology and the fact that people will always want or need things like effects, multi-camera operations, different output formats, and so on will likely mean that performance enhancements in computers will be meaningful to video editors for the nearly predictable future.

However, something like photo management and even things like print design and web design, something that in the 1990s was reserved for the highest end of computers, is now something any random laptop, even a $300, can easily do. Illustration and low end CAD tasks don't need relatively powerful computers any more. Other things like programming, virtualization, and even still image editing really depend greatly on the technique and a few other factors.

As always, I think it's an exciting time to be interested in computers. I would be lying if I said I thought that there was truly an unexciting time to have something to do with tech. One of the things I'd like to do over the next few weeks is get my hands on some free/trial software – Final Cut Pro and Avid Media Composer First at least, perhaps Adobe Creative Cloud (for PremierePro) and do some video editing testing. I want to see what I can push a few different systems I have to do and what the experience ends up being like.

I of course have my copy of Final Cut Pro 6 and have worked around some of its quirks. I have Avid Media Composer First installed on the system, and so that is probably what I'll use and test first.

One other thought that I haven't mentioned about Final Cut Pro 6: It and the other members of the Final Cut Studio 2 bundle that I have suffer severely from changes in Mac OS X. I can't at all in good conscious really recommend anybody try to use this as a day to day editing tool on a modern computer. This is perhaps one of the most salient points I can make. It's already badly non-performant on something like a Mac Mini from 2011. It will run and technically work on something like a much newer iMac, but each time I go to use it to build out a project, I spend more time fiddling with the software itself, dealing with, say, breakages in the way side-utilities such as Compressor work than I do editing the video. I end up producing sub-standard or incorrectly compressed files and hoping YouTube fixes things on their end, problems I wouldn't have if I used something "more modern" – whether that's iMovie, Final Cut Pro X, or some other tool.

It's to the point where, even if I had something to say or something to record and I thought I had done a good job with recording, I dread doing the post-production, so I never will. That's a different issue and video has always been one of the more complicated formats to work with, with so many different parts that ultimately matter to a good production. Some of that is a different issue, some of it is needing to make the things you can easy to do so that the overall process isn't too overwhelming.


Re: How Software Changes

A better title might be "how software should change to keep up with the changing nature of how computers get faster" but that seemed long.
Cory WiegersmaNo presence information on 7/31/2017 3:47 PM