Besides whether the issue he's addressing is real or not (i dont agree with him), this is not the way to address the company you work for and i would completely agree with Adobe if they do fire him for this.
I wouldn't fire him but I would ask that he be a little more informed on how modern technology works before going on a rant about it. Especially when he aims his complaints at his own company. There are REASONS for some programs to load slow, it's not like everyone is competing for the slowest loading software.
He adressed nothing beyond his hate for the splash screen, which has seen its time imo, but nonetheless has nothing on many of the other features and tools that Adobe puts out when it comes to bloat.
If Adobe really cared about the user, they don't because they own the brand name synonymous with image manipulation, they would at least make an attempt to tailor the application to the specific user's needs, not the user base as a whole. But they don't have to and will keep doing what they deem good for them until a real challenger appears. And then they'll buy them or sue them into oblivion.
I'm not sure how they would "tailor the application to the specific user's needs" as it would be clearly impractical to develop different versions for each of their millions of customers.
Photoshop (for example) is pretty extensible and has support for plugins as well as scripting capabilities etc, not sure what else you want?
Also part of the reason that adobe is the industry standard is that their applications are consistant and a designer who hops jobs can easily get upto speed in a new environment without having to learn a completely new tool.
are you assuming that every time a developer switches job, he or she has to learn a new IDE. Life isn't like that.
It's not impractical to assume that a user will use a specific subset of all of the tool offerings and doesn't need or use all of what the application has to offer. The app should be able to develop a profile based on what the user actually does with it instead of forcing all of the functionality onto them.
But Adobe makes a lot of money with their product, has no competitors of note and therefore doesn't have to change the way they do business because even if their subsequent releases fail to impress their user base, they're still going to sell licenses.
The problem is that beforehand you don't necessarily know which features you are going to need to use. I am constantly discovering new useful features in most of the programs I use, having to install plugins for every feature I wanted to use would quickly become a pain , hamper discoverablity and the program would probably just end up back where it started in terms of size.
Besides when you have a program with a long load time, this is not necessarily correlated with the number of features, it's more likely that it's some core part of the program that is taking a good chunk of the initialization time.
The consistency argument is important, especially to anyone who has ever worked on telephone tech support. Being able to give somebody instructions on how to perform an action without having to worry about which of the 1000s of possible configurations their program is in is important.
This is probably one of the big reasons desktop Linux never took off.
Most professional programs like IDEs or photoshop are intended to be used by professional users anyway who will be likely to have a reasonably fast computer and will have invested some time in learning to operate the program properly.
Adobe has actually had quite a few competitors over the years, currently there are programs like PixelMator and in the past they have had JASC , Corel, Macromedia (until they bough them) and of course GIMP to contend with.
Based on what you're writing, I detect that you have little experience in a [pro-level] multi-discipline working environment and you're assumptions are at best broad guesses.
GIMP to contend with? Adobe could give two shits about that app, its user base and the Linux community in general.
Agree, the only programs that start instantly on my android phone are the browser, phone and email apps and that's because they are probably always in memory.
Everything else has a splash screen time that would put Eclipse to shame.
Not to mention that HTC has now seen fit in the latest version of Sense to add a mandatory spinning animation that plays for ~2 seconds every time I unlock the phone before I am allowed to use it.
Yeah, he's comparing two entirely different things. The phone is instant when turning the display on. My laptop is near-instant when resuming from sleep. Neither are instant at actually booting up.
I used to love Macromedia Fireworks, so that I bought a copy of Fireworks after Adobe acquired Macromedia. I had to jump through some crazy hoops to prove that I did not steal the product, and that was nothing compared to what I had to do after buying a new computer – it turns out that I was supposed to unactivate the product on the old one and then activate on the new one. This is not what you do to your customers. I don’t even want to start on the issue of software quality or customer service (I once did the mistake of trying to report an i13n issue with my copy of Fireworks).
I swore there’s not going to be any software by Adobe on my computer anymore, and I even disabled Flash in my primary browser. I am lucky that I can do with the new wave of Mac graphics editors like Pixelmator. I was so happy paying for that product on the Mac App Store, getting a copy and doing nothing else that would require it to work. I was so happy that it starts immediately, that is has a decent UI. It’s not feature complete, it’s got its own bugs, but it’s a software and experience I am willing to pay for. Unlike Adobe. (Which is a company I once liked, being a typography geek and typesetting our school magazine in an old copy of PageMaker.)
Do you think Pixelmator is a good replacement for Fireworks? Fireworks has been really great at allowing me to quickly mock-up different web layout concepts without having to write any HTML code. I know some are in the "concept with HTML camp", but I've found Fireworks to be so much faster. I've never bothered too much with Photoshop since Fireworks did 90% of what I wanted.
I'm like many, however, in grumbling about how crappy Fireworks has gotten (at least on OSX, not sure about Windows) and am to the point that I'm ready to move on.
I have moved from webdesign so that I no longer need the design features I admired on Fireworks. What I liked most about Fireworks was the blend between the vector and bitmap graphics, and I don’t think that Pixelmator is getting anywhere close to that. But it’s worth to take a look. Also try out Acorn (http://flyingmeat.com/acorn/). I think both have a free evaluation.
Pixelmator is a almost perfect clone of Photoshop 5. Not CS5, version 5 from 1998 or so. Even the shortcut keys are identical. I happen to like it a lot.
If your primary use of FW is to mock something up and export it as HTML and image slices, Pixelmator is not for you. You can get a free trial, IIRC, and see for yourself.
I'm a huge fan of Pixelmator. Read Fabio Sasso's tutorials if you're having doubts, might not necessarily be much on web mockups, inspiring nonetheless. http://abduzeedo.com/tags/pixelmator?page=1
What's the big deal? Showing a splash screen for less than 5 seconds (oh yeah, get an SSD) until everything initializes is better than opening a non-functioning UI ("the cloud" is not a solution - what are you going to do when your connection goes bad?). It would be nice to not have it, but for such a bloated program as Photoshop or After Effects, it's pretty much expected...
r: "get an SSD" - I recently upgraded my computer at work, and Photoshop CS3 (which does more than enough for my purposes) opens up in under 1 second. After a day of using this computer with an SSD as the primary hard drive, I finally pulled the trigger and ordered one for my desktop at home. Easily added years of usable life to the computer I bought new in 2008.
My computer is pretty responsive, at least as much as my smartphone is and I'm not running anything special (No SSD, 4GB of RAM and an older model of quad core).
Ok, I wait maybe 2-3 minutes for the computer to start (not even that if I just put it to sleep instead of turning it off). I can work for ~8-10 hours so those minutes aren't a big deal.
There are a few programs that are particularly slow to start (eclipse, steam, openoffice) but that's mostly just because there is a lot of code to load and I'm sure a comparable application for a smartphone would be just as slow.
I do run Linux most of the time though so there is probably a bias there towards smaller non-monolithic programs there and not having registry bloat helps.
However I still remember the days of Windows 98 and how horribly slow everything was back then on anything apart from a freshly installed machine and having to wait a full minute for Office 97 to start, we've come a long way since those days. I can't see it taking long before every PC comes with an SSD drive (which is probably part of the reason smartphones seem responsive as well as having a well warmed cache).
As for doing something like running a cloud instance of the program and then somehow syncing back to the desktop app seemlessly, that seems like it would add such an insane level of extra complexity and problems which is exactly what he seems to be against.
This weekend the 3G mysteriously stopped working on my iPhone, so after months of use, I rebooted it. Rebooting the iPhone takes 1+ minute, and there _is_ a kind of splash screen shown during that time. The reason it appears instantenous during normal use is that it doesn't actually boot or load, it just turns the display back on. Also, many iOS apps actually have splash screens, you just don't see them very often as they're usually already running in the background (big apps like Facebook, and even small ones like PCalc Lite or Quotes).
You can kind of achieve this with Windows + Adobe stuff too. Just don't quit Photoshop when you're done using it, and don't turn the computer off, put it to sleep. If you have an SSD (like your iPhone), then swapping Photoshop back into main memory will also be much faster.
Of course the OP is right, Adobe stuff is bloatware and sucks. Fortunately for non-pro designers, there are alternatives like Pixelmator and Paint.NET.
He's talking about smartphone app behavior, not the OS. A lot of good apps (with notable exceptions like Facebook and Kindle) work to minimize the "splash" by throwing up a graphic that looks like the UI, even while the app is loading and the UI (briefly) isn't even responsive to user input. I like it - it definitely smooths the transition into using that app.
This practice actually goes against the recommendation of iOS Human Interface Guidelines, although it doesn't seem like Apple actually enforces it:
Display a launch image that closely resembles the first screen
of the application. This practice decreases the
perceived launch time of your application.
Avoid displaying an About window or a splash screen.
In general, try to avoid providing any type of
startup experience that prevents people from using
your application immediately.
That's a bit surprising to me. I haven't noticed this (not much of an app person), do many apps use the recommended technique? Personally I would find a splash screen that looks like the first screen to be confusing.
All Apple apps (inbuilt or downloadable) follow this guideline. Amongst the non-Apple apps that follow it are Reeder, WhatsApp, Twitter, Sykpe (sort of), AIM, Shazaam, Instapaper and so on.
Plenty do. The idea with that guideline is that it resembles the first screen the user sees, but in a "vague" manner - that is, maybe it just has the title bar and empty table view with no data filled in.
The idea is to give the user the impression the app has already started instantaneously, and you're just waiting for data to roll in to populate the UI.
Yeah, I'm using it in the project I've got in development right now -- actually sort of a hybrid approach. It's a grayed-out version of the main UI, with a "Loading..." message overlaid. I think that's a pretty common approach (graying it out, with or without an explicit message).
The app needs to load something close to 200 fonts (it's a design-oriented app). If they're not all present, the font choice list won't render properly. Lazy-loading isn't really an option -- otherwise the user will be sitting there watching the UI slooowwwlly render each font choice, one by one, while he waits to do something with them. Better to take the hit at startup, IMO, rather than making the user pause while he's in the middle of creating something.
Good question - I understand that this is a lot harder for heavy professional apps, but I'm with the author in that I'd prefer a subtler transition. Maybe show me the rudiments of the interface (toolbars, menus, etc.) and a subtle progress bar for loading/opening the app and your last file.
I'm not sure how that's any better than a splash screen in fact I think it could cause much confusion.
I created a web app recently that had to make an Ajax call but could not allow any user input until this action had completed as various parts of the UI would have to be refreshed with new information.
I had reports from users that they thought the app had crashed since it wasn't responding to their inputs for a few seconds.
It turned out the best solution was to simply whiteout the entire page and show an animated egg timer until the action had completed.
It's only really heavy professional apps that take much time to start anyway.
> If you have an SSD (like your iPhone), then swapping Photoshop back into main memory will also be much faster.
I think the point the author is trying to make is that it shouldn't be up to the consumer to spend more money to make their programs run faster. Software reform is what's needed and "just buy an ssd" is a very strong argument.
Whenever you can run the same software on a variety of hardware with different specs and capabilities, it's always up to the consumer to spend more money to make that software run faster.
Having said that, I agree with the idea of making software less monolithic and making it start up as fast as possible, as long as it is possible. However, when I say that I want a program to start up fast, I mean that I want it to start being useful fast. Quite a few of author's ideas are not about bootstrapping gradually, they're about faking it. It's like going to a place that used to have a "closed for lunch" sign and discovering that it's now open, but populated by robots whose personality is an Eliza-like AI.
I might have misstated. I mean that consumers shouldn't have to compensate for poorly written (in terms of efficiency and speed) software. Sure buying an SSD would increase the write speed, which is usually the bottleneck for a system, but the consumer can save a couple hundred bucks if the developing company focused on speed instead of bloat.
And I agreed about the "faking" issue. Just like how Windows will silently keep loading tons of services in the background after a reboot, but shows you a desktop and makes you think you are free to click and launch stuff.
> However, when I say that I want a program to start up fast, I mean that I want it to start being useful fast. Quite a few of author's ideas are not about bootstrapping gradually, they're about faking it.
But quite a few of those ideas are useful.
The only ones I thought were a bit out-there were the ones about "just processing it in the cloud" while the local copy is still loading. But other HNers are probably more qualified to judge how realistic this is.
What is a possibility, however, during loading a lot of time is spent on loading all sorts of modules, ones that might not even be used that session, and most definitely not in the first few minutes. Because what is the user going to do first? Most likely it'll be `File > Open ...` and browsing through the filesystem looking for whatever project they intend to open.
You don't need any plugins for that. And it's exactly the type of task that spends relatively a lot of time waiting for user input and not so much time computing or loading things. During this task the app can continue loading modules and plugins and the user doesn't have to wait because they're selecting a file.
You probably need to disable (most of) the instant preview in the file open dialog until it's done loading, but that's a minor trade-off.
Of course you're loading the modules necessary for opening files first (most recently used filetypes first). When that's done the dialog can start showing previews. If the user happens to have found and selected their file before it's done, then, only then they'll have to wait.
Now you're loading the file and it's showing on the screen, the user can browse the layers a bit and ponder where exactly they left off last time. A wonderful time to load the rest of the modules! Of course the features used in this project will be loaded first. If there's no text layers, we can put off loading font-rendering support in favour of other modules.
It's not all load-on-demand, but a lot of user tasks are not as processor- or data-intensive as you'd think, because the user is busy thinking and as long as the UI is responsive enough they're happy.
I guess this is sort-of the idea behind OSX behavior where an App is running with no open windows. They WANT you to leave everything running in the background. As a longtime Windows user, I still find this confusing, but I think they're trying to make everything appear to "load" instantly because it's just always running... sort of like on a phone.
Yes but that requires a click-and-hold, causing the whole dock to resize for the pop-up menu, which is quite slow on my 32-bit MBP maxed out at 2GB RAM. I find it quicker to just click the Preview icon (causing a new window to open as the focus switches), and command+q.
You might want to try command-tabbing and quitting.
Basically with command held down the entire time, hit tab until Preview is framed, and instead of releasing command (which would pull Preview to the foreground), hit Q, which will send Preview the command-q event and cause it to quit.
Here is a scenario, and my mac is a month old, so maybe I am borrowing heavily from Ubuntu and MS experiences. When I am reading two pdfs, and then close one, it makes sense for the preview menu to stay on because I am reading the second pdf, but when I close the second, what reason is there for preview menu to stay up?
Edit: As to my original comment, when I switch to another app, preview stays open, but up to now I don't know how to close it because I can't get the menu to appear without a pdf or something using it, that's why I reopen a document, forcing the menu to show up, then close the app.
There's lots of reasons for the menu to stay open; the simplest example is clicking File, then Open, to open a new file.
As far as the menu disappearing when you close both documents, that's confusing and directly contradicts what you typed earlier. I can open Preview.app, and it'll just show me the menu. I can close it by alt-tabbing to it and hitting Cmd-Q - no windows required.
Why not just switch to it and quit it without opening a new Window?
That's the whole paradigm. Windows belong to applications, but applications aren't windows. That's one reason the menu bar is divorced from any window (along with Fitt's law): so that you can interact with an app even when it currently has no windows open.
> Some times I reopen a window of preview let's say just to close the whole program.
You could just close it from the dock you know. Or switch to it and command-Q immediately.
In fact, I don't even understand how you'd go around to "reopening a window" of preview, preview will not open any window without a document in it, do you open a document just to close preview or something?
At first I didn't like it, but I've eventually started to really like this in OSX. Having a ridiculous amount of RAM to "waste" may have helped change my mind. My only gripe is that I wish it were a per application setting.
Some apps, like my browser, mail program, the terminal, Emacs, ... I love having start quickly, even if it's because they were just in the background before.
Other stuff, like Preview, I don't use often enough to care about the load time, and I would probably configure it to exit when the last window closed.
>> Other stuff, like Preview, I don't use often enough to care about the load time, and I would probably configure it to exit when the last window closed.
Under Lion, that is (sort of) what Preview and TextExit do. When you close all open documents in Preview and then switch away from the app, the app will terminate.
For Emacs, you should consider using Emacsclient and server. That way it's always on in the background, takes a fraction of a second to open a new window and shares state between all the different windows. Additionally, it lets you configure programs that use an external editor, like Git, to just open a new buffer in your current Emacs session, which is very convenient.
No, it's just vastly more complicated than most of the cut-down alternatives because it has to meet the needs of pro designers. Maybe there's some accumulated cruft there but I can guarantee you that Pixelmator, for example, would be similarly large if it had to support all the same use cases.
Yes though I suspect Photoshop's load time could be significantly reduced by limiting the features available at load time. If the method code for the 223rd most popular effect is loaded into memory prior to the user being able to do anything, Adobe is doing it wrong.
Maybe so, but that kind of dependent loading might also significantly complicate the code. I have no idea how Photoshop actually handles this but it's about as close as software gets to magic already so I'm disinclined to accuse the developers of incompetence or sloth.
Yes, part of the problem that Photoshop has is that it is seen as the "go-to" tool for doing any kind of graphics work at all.
Many people install pirate Photoshop to resize and put a few filters on their photos and complain that is it too slow and complicated when really they could have achieved the same result from either a freeware program or a significantly cheaper commercial one.
Boo and/or hiss. If you hate splash screens, use simpler tools or get more RAM. When Photoshop finishes loading, it's ready to kick ass. The Finder, on the other hand, taunts with its almost-readiness. Faking readiness is far worse than setting and honoring expectations.
That isn't the choice here, though. The choice is between throwing up a big nonfunctional promotional screen or a nonfunctional version of the actual app.
A splash screen tells me "you can do something else, the window will show up when it's ready". A nonfunctional version forces me to poke it periodically until it works.
If the author has the splash screen burned into his retina, (s)he's doing it wrong.
Agreed. If you're seeing that Photoshop splash screen regularly you simply don't have enough RAM. I keep my PC running for weeks on end and seldom close anything. With 12GB of RAM (which costs nothing) I almost never run out of RAM and every application is cached in RAM, so if I DO happen to close an application then reopening it is extremely fast. I shutdown my PC for the first time in weeks last night, and that was only because I was wary of the massive thunderstorm getting through my lightning protector. I don't actually understand why people shut their PCs down at all to be honest.
Assuming this hardware monitor is reasonably accurate, my hyperthreaded quad core i7 chows 145W when I'm really busy, which with my 80+ Corsair HX750W means I'm not eating more than 2 100W lightbulbs. I seldom play games any more so rarely use more than that. And that's when I'm doing serious number crunching. Since I'm only working at home about 4-5 hours/day during the week and maybe 2-3 that on weekend days, I really don't see electricity as much of an expense compared to time wasted rebooting and reopening all my work to where I last left it.
Agreed. Though it would be really cool is Photoshop could somehow do progressive loading, so you can get the main UI + core functions up and running, and then bring all the plugins on in the background. Let the user choose their load order (I don't think this is too much to ask for a serious piece of software), and voila. For example, the 3D engine in the newer Photoshops. I never use it (it just doesn't overlap with my work). Would be nice if I could mitigate its effect on load time.
I wish I could just get more RAM, but some of us are still somewhat budget limited. Photoshop took enough of my money the first time around.
Agreed. Though it would be really cool is Photoshop could somehow do progressive loading, so you can get the main UI + core functions up and running, and then bring all the plugins on in the background.
That's what it ALREADY does, actually.
It takes that much time for just the basic UI code (plus plugin registration etc). It doesn't load the plugins or filters in memory before they are first use.
My old SonyEricsson phone behaves like this. After booting it looks like it's ready but as soon as you try to open _any_ menu you get a "loading"-screen which is even more annoying. Booting a bloated windows xp installation is almost the same experience, from desktop first showing to actually usable is twice the time.
I'd rather have a reliable progress bar that says "go make coffee and come back in 5 minutes" instead of being misled to thinking i can use the program in 30 seconds.
But lazy loading for rarely used functions is of course a good solution, as long as you don't use it for everything.
Don't you think it's odd he is complaining about splash screens when Adobe is responsible for the worst thing to ever happen to the web -- those stupid flash intros ? Talk about a waste of time, you had to wait for the time waster to load and then wait for it to play
Flash intros are the fault of the people who made them, not the software used to create them. When HTML5 canvas replaces Flash for such things will you then blame HTML5?
True, although from what I remember the flash development tools seemed to provide much functionality that seemed to be aimed specifically at creating things like this.
IIRC there was something that was basically a "flash intro wizard" however this may well have just been added due to demand from developers for such features.
I don't recall such a wizard in Flash itself, although I wouldn't be surprised. That kind of thing seems something that a third-party would create and there are a large number of them out there. The main thing to remember was that the Flash intro, at one time, was an accepted practice. It was an easy way for a company to introduce itself, much like a commercial. It wasn't until it was overused that people started to dislike it and now people only remember disliking it.
I disagree that it was an accepted practice. I don't know of any technical person who didn't hate them from the very first time they saw one. Remember this was back during dial-up days and you had to wait forever for that crap to load. I can't tell you how many sites I left before ever seeing their content because when I saw flash loading I just switch back to my search engine and find the next link. Heck, I still do that.
edit: I forgot to mention my even bigger gripe about the flash intros, and that was because I was basically being forced to sit through a commercial before I could interact with the company. It went (and goes) against the very basics of web use.
I would say the people defining an accepted practice are the people paying the bills. If the company wanted it, the technical person made it so they would get paid. I would admit it was probably the technical people who finally convinced the majority to abandon them. Plus the fact that over time they could see that the idea was failing them, much like you point out. But until that moment it was accepted practice among major websites. The fact you remember them so vividly in your dislike of them almost proves my point.
But alas, I agree, they were a total waste of time. As I said, the people who pay the bills don't always listen to the people that they should listen to.
I'm not sure I'm a big fan of what it would take to fix this. Namely, "speed loaders" that sit in memory and eat up RAM. I've already seen what adobe's PDF speed loader can do on a system.
Frankly, I'll manage my applications myself.
Are you tired of waiting for Photoshop to launch? You might want to try leaving it open...
Photoshop CS5 took roughly 4 seconds to start on my MBA. Is this guy seriously complaining about 4 seconds? Several popular iOS (and I'm sure there are some on Android as well) take longer than that to load...
Agreed, about the same on my machine. It's kind of expected. On my old machine I would just start Photoshop and go make a cup of tea. Or switch windows and carry on with something else. But I rarely use Photoshop... If you are doing this day in, day out then I think it justifies more RAM and/or an SSD.
I wonder how Kas Thomas feels about the credit roll that occurs at the start of a movie? You know the one where they show the logo of the movie studio, then the production company, then the producer, editor, et al.
I see the software splash screen in the same light. It is giving credit to those who have put it together. Now, obviously entertainment is different then a work application, but many of us feel that software is art, just like a movie and that if someone wants to do a credit role then they should.
Except they don't show the splash screen to praise who made the program. It's just to give you something to do while you wait. Just like reading shampoo bottles' labels in the bathroom.
That's an example that proves the opposite of your point.
You may notice if you watch some older movies (pre-1950s, mostly) that they used to run the ENTIRE credits list at the start of the film. The WHOLE THING. Not just the credits you see at the beginning today, but also all the ones that today are listed at the END of the movie, too. The copyright notices for all the songs they used, the logos for their camera and film providers, the names of all the gaffers and best boys and Assistants To Mr. Bigshot... you had to sit through them all before the movie got underway.
They don't do that anymore. Today only a very small number of Very Important People get credited before the start of the movie. Everyone else gets shunted to the end. Why? The answer is TV. When TV came along and movies started getting shown there, they no longer had a captive audience. The audience could now change the channel if they weren't being entertained -- which meant that there was pressure on the filmmakers to GET ON WITH THE DAMN MOVIE. So they moved nearly all the credits to run after the film, rather than before.
That was a bit of a blow to all those other folks, of course, since credits at the end of a movie are credits nobody reads -- they're too busy leaving the theater or changing the channel. But it was necessary to conform to the audience's desire that they GET ON WITH THE DAMN MOVIE.
Which is Thomas' point: users' expectations are changing. Used to be that it didn't matter that much if your app was slow to load, because users didn't expect it to be fast. But the proliferation of mobile devices and lightweight apps is changing those expectations. So if you care about your users and want to hold on to them, it behooves you to GET ON WITH THE DAMN APPLICATION.
Thanks for sharing that, I learned something new today already :).
You can see the progression even over the last 10-20 years. We used to see the title of the movie, and then a few minutes of scenery with the actor's names on them. These days it's not uncommon for the movie to start almost immediately with the credits integrated into various background elements.
Yeah, as audiences' attention spans get ever shorter the pressure to GET ON WITH THE DAMN MOVIE gets ever higher, so filmmakers are always looking for ways to pare down the length of the opening credits or to present them in a way that also starts the story moving.
The same evolution has been underway for a couple of decades now with TV shows. Until the early 1990s it was commonplace for TV sitcoms to have a full opening credits reel, complete with a theme song just for that show. Think of the opening of Mary Tyler Moore [1] from back in the '70s, for instance, or Cheers [2] from the '80s; they both became iconic representations of those shows.
These intros helped set the tone of the show that followed them. But they generally took a full minute to run, and as the universe of options provided by cable expanded and remote controls became inexpensive, waiting that extra minute for the show to start began to turn off viewers. The push began to GET ON WITH THE DAMN SHOW, and so the traditional musical opening first shrank, then disappeared altogether. Today's openings run much shorter -- 25 seconds max -- and usually include just a couple of title cards and a musical snippet.
Actually, when I have watched a movie or played a video game that I have especially enjoyed I often make a point of watching the entire credits.
I find it fascinating to see the number of different skills that are required to get something like that from a drawing board idea to a shipped product.
Not to mention that sometimes they add some kind of extra "easter egg" content right after the credits as a bonus for watching right through.
I don't understand what he's angry about. Photoshop, Microsoft Office, OpenOffice, these are all enormously complicated programs that require resources to load. That doesn't make them bloatware and it doesn't make the programmers lazy.
His proposed solution sucks too. Show the UI while it's loading so the user can impotently click around waiting for the program to "turn on". Windows does this when it boots up and it drives me insane -- if the OS or program isn't in a usable state when you show it to me, don't show it to me
Loading speed is just one of a multitude of factors that come into play when making software. According to this Adobe employee it should be the chief most concern, even dominating other things like features, usability, UX, cost, technological debt, etc.
It's the same for any complex program, smartphone or desktop. I have Picsel Smart Office on my phone and it has a boot time, because it's an office app and has to load resources to use the app.
And on his proposed solution, he asks developers to empower users, to not make users feel belittled, and at the same time he asks developers to trick users into thinking the full app has loaded. How can you avoid belittling someone and trick them at the same time?
I think it's unfair for you to call him wrong, what's wrong with what he said in the context of what he was saying?
I remember Blender loading fast as well. But are you sure every single feature of the program is available as soon as the GUI is displayed? Because I wouldn't be surprised if there's some lazy loading going on. Maybe some things finish loading in the background so they are not available right away or maybe some things are loaded on demand to spread out the loading time.
Of course Blender is lazy loading as you like to call it. Why load features the user is not using atm? The base of the program is just way better than lets say Photoshop.
Ever checked an online Photo editor? (http://pixlr.com/editor/ for example after a quick Google).
Open the page and there it is: your interface ready to use.
To clarify, "lazy" isn't a pejorative in this case. It's just the technical term for deferring work until it needs to be done. "Eager" would be the term for doing everything right away.
Loading on demand is a vast improvement over loading everything up front, though. Loading on demand means you never pay the price for functionality that isn't used, and if your load time is divided into little pieces, it's far more likely to slip into spaces where the user is otherwise preoccupied, thus becoming essentially free. Lazy loading is a way to truly reduce loading time, not just a way to hide it as you seem to imply.
Well, lazy loading is a way to hide loading time. But I didn't mean that lazy loading is bad since I think it is rather underutilized in desktop applications. Taking Photoshop as an example, I would explore the means to get the basic app up and running providing basic tools then load the rest in the background not waiting for demand. Loading on demand is nice as long as it can be done quickly. There's nothing worse than having the app loaded, click on a menu item, and then have to wait for that feature to load.
I think loading on demand is a vast improvement in some instances. For something like Photoshop, I'd gladly pay the initial 10 seconds for a more responsive interface. Photoshop is already slow, imagine dynamically loading resources on top of its usual sluggishness.
I remember one of the versions of PhotoShop (perhaps it was CS2) no longer loaded fonts at startup and the launch speed improved. But then the first time you select the font drop-down you had to wait around 5 seconds.
So I guess the launch was faster but waiting for the fonts to load was annoying when I was in the middle of working. During the app startup I'm probably spacing out for a few seconds while the app launches.
I see similar things in other apps. One that comes to mind at the moment is Eclipse where there are certain menu items when you drag over them the app freezes for a second. I always curse myself when I accidentally roll over one of those.
Particular parts of the app that require a lot of disk access may have a bit of a performance hit and so it makes sense to lazy load them, but it is a trade-off and sometimes I'd rather just wait a few moments at launch instead of getting killed by a thousand cuts while working.
That is exactly the debate between loading upfront and loading on demand. Either way, you'll have to load resources. But it seems sometimes people like to ignore that fact. The key is finding what works best for the particular application at hand. Personally, for something like Photoshop I'd rather have the long upfront load as opposed to hitches when loading a feature on demand.
Which, out of curiosity I timed it, the "long" loading time for Photoshop CS5 on my machine is less than six seconds. It think I can wait that long.
> That is exactly the debate between loading upfront and loading on demand. Either way, you'll have to load resources.
Everybody seems to be missing the third way: load in the background as the user can already work.
Take those fonts, you could spend 5s loading them during the splashscreen making the user wait, you could spend 5s loading them when first requested making the user wait again. Or you could load them after the program has started, in the background.
Will the user go from "empty document" to opening the fonts dropdown in under 5s? Pretty damn unlikely, and if he does he'll wait for the remainder of the load. In either case, he just "won" 5s.
Problem then is that as soon as I start using the program I might say want to load some data into it which is on the same drive as the program itself.
If I don't have an SSD my drive head is going to be spinning around like crazy trying to load resources from different parts of the disk at once which is going to give me slower overall performance. If you do have an SSD then it's likely fast enough either way.
Think of the 100s of millions or even billions of hours of unhappiness caused by whatever utter wanker designed the windows update system. All that misery waiting to go home to your actual life but you can't because your laptop's displaying 'Do not turn off or unplug your computer'. No, just sit here and watch me. Or those times you accidentally opened Word or Photoshop or MySql Workbench (god that's slow) or whatever. You made a mistake? Well fuck you. I'm not listening to you, says your computer, I'm just going to ignore you for a little bit.
That's why.
And they're not enormously complicated, paint opens instantly and has the same UI. Word is little more than a glorified textbox. Programmatically all the features make those programs enormously complex, but the actual common use of the programs are simplicity itself.
Don't like that feature of Windows Update? Turn off automatic updates and do it manually when you wish.
Although I agree with the annoyance of accidentally opening something like Photoshop and having to wait to close it. But a good number of resources that is loading is third-party stuff that demands to be present immediately on startup as opposed to being loaded on demand. But whatever.
Paint has the same UI as what? I hope you're not comparing it to Photoshop or any other professional level software. I believe the modern version of Word is a good bit more than a glorified textbox.
But then you point out exactly why these programs load slowly in your last sentence. Maybe just start using less complex software?
Their interface is the same. Are you utterly blind? Stop looking at the UX as a programmer and imagining the complexity of the features. The actual screen is displaying exactly the same stuff. There's a big white box to draw in and bunch of buttons to press.
You do not need to initalize all the 3rd party tools, you just have to find out which tiny little icon to add on a task bar or extra menu items to add, and why didn't you cache that when the extension was first detected?
And how silly of me, of course all the corporations these days let you turn off the updates on their computers don't they?
Stop telling your users that 'if they just..', do the opposite with UI than you do with your code, start programming for the best case scenario, not the worst case.
I once wrote a clone of Microsoft Word for a company looking to move away from Office dependency - I think you're really understating the complexity of something like Word when you call it a glorified textbox or say it should load as quickly as MSPaint because they both use the ribbon UI.
The interface may be the same but I'm willing to bet under the hood they are quite different on a large scale. You seem unwilling to admit that.
I don't understand what you are saying about third party tools. Could you clarify? Is that whole sentence talking about the same thing because I read it as having four different topics in there.
If a corporation won't allow you to adjust update settings then that's an issue to take up with IT since they are preventing you from doing what you need, not the software itself. What if the default settings were exactly what you wanted and your IT department prevented it, is that also the fault of the software? I think your complaint is misdirected in this case.
Ask ten different people to define best case scenario and I bet you'll get several different answers. Which one do you choose? You can't make everyone happy but I guess since you're not happy then your way is the best choice? What you complain about telling users "if they just..." is what I call choice. When I say an application won't do something I need then I WANT the answer to be "if you just do this..." so I can have that choice.
>Their interface is the same. Are you utterly blind? Stop looking at the UX as a programmer and imagining the complexity of the features. The actual screen is displaying exactly the same stuff.
Seriously? I mean, my Dodge Neon has the same gas, brake, clutch and steering wheel that a Ferrari 599 has, why doesn't it 0-60 as fast? Stop comparing engine size and complexity, it has all the superficial elements of a sports car! God, you're such a mechanic.
I think I understand what he's saying. Sure, your Dodge Neon may take longer to go 0-60 (i.e. it's okay if Photoshop is slower overall), but there would be something wrong with it if it takes significantly longer just to get in the car (i.e. Photoshop shouldn't take longer to boot up).
No, I think the engine metaphor is pretty apt. I completely understand what he's saying, but the alternative he seems to imply is no better. Why would I want the interface to load but not be able to use it for another 45 seconds? Okay, so I'm in my car (clicked on the shortcut) but I won't be able to go anywhere (use the application) for a few minutes because it's slow to accelerate (load). Who cares about the max speed of your car as long as it 0-60s in a reasonable amount time?
Either way it's going to take some time to load because it's a big application. One way lets you know it's working, the other makes you think it has frozen as you're fruitlessly clicking around. The interface is the least important thing in the application until it's fully loaded.
I think it makes sense. To extend your metaphor, you can do things such as turn on the radio without noticing a performance difference between the two cars.
The idea with Photoshop is, sure, loading the entire thing will take much longer, but users tend to use one tool at a time, and loading an individual tool shouldn't take anywhere near as long.
It also makes sense from the point of view of parallelization. One example of an extremely slow operation is waiting for the user to click on something. So instead of sequentially loading things, followed by the user deciding what to do, Photoshop should continue loading while the user decides e.g. what brush size and color he/she wants.
Like any other, this approach has advantages and disadvantages - it would indeed be frustrating if the brush tool hadn't loaded by the time you started using it, and it would probably require a lot of work for Photoshop to load so modularly and on-demand - but all I'm saying is, I understand the value in the alternative he suggests.
To go beyond cars and Photoshop, the RPG Guild Wars is a good example of only loading what you need. In fact, it doesn't even download the other game zones before you need them. If it sees you running towards the next zone, it begins a buffer in the background to pull in the data. So instead of making you wait while the game downloads and installs everything right up front, it downloads then loads up exactly what you need. This is much harder in an application, which is more non-linear.
When you run a program the OS will usually just map the code into address space, it won't necessarily actually load the code from the disk until it needs to.
It's possible that what the program is doing at initialization is not loading code from the disk but doing something else, like perhaps checking it has a nice big contiguous area of disk to use for temporary storage or for loading some type of cache into.
There are many times in programming where you make a choice between taking a one-off up front cost to optimise something for faster overall performance vs slower overall performance without the setup cost.
For example with a DBMS you can lose some write performance by having an index on a table and rebalancing when you are writing but the advantage is much faster read performance.
Also A Java program can take longer to run the first time by JIT compiling the program for the platform it is run on but this will mean faster performance of the program itself.
> You made a mistake? Well fuck you. I'm not listening to you, says your computer, I'm just going to ignore you for a little bit.
The programs from Office 2010 have a _x on the splash screen which lets you easily minimize/kill the program in question. It's really snappy, works like a charm.
Have you used a recent copy of Word (eg. Word 2010) or any of the other Office software? It all opens basically instantaneously on my system, and my system is like 4 years old now. They still show the splash boxes this guy is complaining about but the splash boxes are blink-and-you-miss-it fast and then the real app is there. Less than a second from click to load of the real app.
The Adobe apps still do have more significant load times, more like 5-8ish seconds, but RAM is cheap, just load that app once and keep it open forever. Hibernate your system instead of shutting it down cold so that the apps don't have to reload from initial state when you next use them. This also makes Windows pop up very quickly (but even from cold boot modern Windows only takes like 15-ish seconds on my (again 4 year old) system), which isn't anything to complain about compared to any other desktop OS out there.
All in all, I'm in the group of people very confused about this post. I'm historically someone who absolutely hated long load times, but it isn't something I've worried about for any app or OS I use in years now.
You think they put that notification there to annoy you? No, it's because of possible data loss and/or system file corruption if you turn off the power while the system files are being patched. Splash screens exist because the program is loading. If you want the functionality of Paint, or Notepad, open those instead. If you want Photoshop, you open Photoshop, and it takes a while to load because it is gigantically complex. If you want it to load faster, buy a new computer.
Surely Windows updates are applied via some sort of transactional system that can be rolled back and re-attempted if the process fails for whatever reason?
Having a power cut during a Windows update shouldn't result in a completely trashed system.
Surprisingly, NTFS does allow for transactions [1] and this feature is implemented since Vista, while as far as I know, HFS+ on Macs has no comparable feature. Therefore what you say may in fact be true.
I'm curious if cutting the power on a Mac while it's moving files into place will break a software update, or if the whole package receipt mechanism prevents that from occurring.
I'm not sure even transactional NTFS would protect you in this case. From the wiki link:
Transactional NTFS is implemented on top of the Kernel Transaction Manager (KTM), which is a Windows kernel component.
Because this is implemented on top of the kernel itself, if you have brought down the kernel in order to update files within said kernel, you likely are not going to be able to leverage the transactional rollback. You might able to do a system restore, if you boot from CD, but breaking your kernel is not an easily recoverable situation. I suspect there are actually safegaurds in the update procedure which protect against this situation, but things can go wrong and it is really not something you want to have to rely on.
I was thinking more of having a transactional system within the update software itself independent of anything on the filesystem.
Something like this:
1. Download all compressed archives that are required for the update from the update website and unzip somewhere.
2. Check the package manifest and figure out which files need to be changed/added/deleted.
3. Write a flag somewhere on the boot drive that says the update process has begun and which files will be altered.
4. Make copies of all the files which will be changed.
5. Work through the update process by modifying or overwriting the copied files with the contents of the update archives.
6. Temporarily suspend the scheduler so the update process is the only thing running and release locks on all of the files which will be changed.
7. Work through every file that needs to be changed and link the filesystem reference from the old version to the new version whilst keeping a copy of the old version.
8. At every stage in 7 mark in a log which references have been updated.
9. Mark a flag to indicate that the update process has been completed, either resume the scheduler and re-instate locks or force a restart of the OS if necessary.
When the system next starts up as part of the bootup process it can check if both the transaction start and finish flags are set.
If the start flag is set but not the finish flag then it knows that an update failed so it can roll back by re-linking to the old versions of every file (reading the logs to know which files to re-link) and setting the start flag back to 0 so it can try again.
If the update was successful then it can delete the old files if the disk space is needed or keep them around in case there is an issue later which required a restore.
In regards the kernel example, my Linux install actually keeps old versions of the kernel on the system so that if a kernel update breaks something for whatever reason it is still possible to boot the system from the previous kernel. I imagine Windows and OSX do something like this , although possibly more transparently.
Note: This is what I could think of off the top of my head, I'm sure it's not a perfect way of doing it but it demonstrates the idea.
I don't know if it follows those exact steps, but in the last few months I had several times a machine crash (flaky power supply) in the middle of various Windows Updates and it always recovered pretty well. It looked to this outsider like there was some sort of journalling going on.
On HFS+ on OS X, most file writing is done atomically, by writing to a temp file and atomically switching the (conceptual) data pointer of the target file, aka FSExchangeObjects. It's common to end up with some of these temp files in ~/Library/Preferences, ending in .plist.asdfx, when the process was interrupted (so the original remains untouched).
This can be done for directories too - make a new one, write changed files and hard link unchanged ones, then FSExchangeObjects. Obviously this scales linearly with the number of files in the directory, so it's not perfect. I'm not sure if / how any of this is used for system updates, though.
Sounds to me like he's either temporarily enraged, or is trying to get fired.
The spashscreen does 1 thing, it tells the user that the app is loading and you don't need to click the exe/icon again.
His solution to a 5-10 second load time is to provide a fake UI, record phantom mouse clicks, and also give the user a game to play, only makes everything worse.
Some apps have to initialize, and without that you are left with an empty shell of a UI that has no functionality. Or even worse, a slugish UI that initializes in-place or during work... Which then causes the typical user to go online and rant about how his app is broken or unresponsive.
Adobe has been laying people off, he could be trying to draw attention to himself in order to find a new job.
Anyways he's solving the wrong problem. What he really wants is to have the OS log him in, lock the screen, and load his common apps before he gets to work.
Agree.I wouldn't care if MS Office,Photoshop takes some extra time to start.The wait would be worth it.For all the bashing Microsoft gets,MS Office and Active Directory are products which really,really way better when compared to their open source counterparts.So,let the engineers have their 30 seconds of glory! :-)
AD has pretty much no serious replacement, but MSO is for me as bad as everything else out there. Office in general constantly crashes and the only thing that is reasonable in Outlook is the calendar integration. It's so bad, that in 2007 it still didn't have a good threading view of messages. Communicator is a joke where you can't even do local list search - you either have to query global company address list, or manually scroll through your contacts...
In general no - I can't agree they're "really, really way better" than OS replacements. They're better for some people, worse for others.
You don't write "enormously complicated programs" in the first place, you split big app into small pieces with as little coupling as possible to keep things simple.
Personally I agree and usually prefer more "unix like" applications like this.
However from a support point of view there is value in everyone running the same consistent program rather than several hundred mini programs piped together in some way.
It also makes purchasing easier, for example you can just buy photoshop/illustrator/whatever and have all the features you need straight up rather than having to choose between programs for different actions (say one program for drawing vectors , another for applying filter effects, another for format conversion etc etc).
Personally I don't care how long it takes an app to start provided it stays running once it does start. If I'm doing non-trivial work in an app the boot time is negligible compared to the time I spend working in that app.
Given the tremendous engineering challenges apps of these size pose the last place I'd like to see developers spend their precious time is on this.
Adobe is the king of bloatware and they will not fix it while they have us by the well "you know". If there were serious alternatives then Adobe would not be in the position it is today. Any company that requires me to PAY just to talk to outsourced tech support after I just bought $15,000 worth of software that is not working correctly seriously needs to get what's coming to it.
"Oh sorry sir you are using a "server" with Indesign that requires escalation level 3, and that is $79 to talk to a level 3 advisor sir, kindly."
Louis CK has a fantastic rant about people complaining about technology being too slow (and technology, in general). It helped to put my own rage in perspective. I find myself getting less pissed at technology since watching it, and I kind of hope that lasts.
I love Louis CK as much as the next guy, but he's not a technologist, and his perspective is not helpful to us in this context. In life, sure - have patience. Keep it in perspective. Appreciate what you have, and don't rage against things you can't change.
This rant is not about life, though, it is about what makes for good and bad software. Which happens to be what we do for a living. In the grand scheme of things, we're all dead, and software doesn't matter. While we're here, though, it's not a bad thing to get bent out of shape about the things that bug us about it. It's our job to make this little area of the universe better. I think taking that seriously is a good thing.
Upvoted, because that was well said, and because I'll fully admit that CK's rant is not quite a proper response to the OP.
But I do think that the original rant was clearly someone who let his rage batter the rational part of his brain into a pulp. He mentions things like that the iPhone experience is now what constitutes "minimally usable". Except that no PC (mac or otherwise) comes close to that level of experience and people are still using/buying them, so clearly he has a different definition of minimally usable than a sane person. He's also so annoyed at having to wait that he proposes worse solutions than the wait itself (a fake UI, that still logs actions; I foresee way more frustration from that than having to look at a splash image).
Yeah, there's a lot of room to improve load times, and a well reasoned blog post on that would have been great. But when someone is ballistic to the point that they can't think straight anymore - I think a little comedic appeal to perspective isn't entirely out of line.
I think that's a good attitude in general. That said, it doesn't apply to the creators themselves. I think everyone is happy that somebody took the time to obsess over speed and accuracy when making Google search, or the countless minutiae that make the iPhone's UI slick, leaving the general public to mostly just sit back and enjoy the awesomeness.
Ha, this is exactly what I came in to post. I understand that pursuit of perfection is what drives the industry to become better, but at the same time I have a hard time not laughing at the someone raging about a load-time measured in seconds that will be seen, what, once a day? Once a week? Given that the budget for any software is finite, I can't work up any fury that they didn't shave seconds off a once-off operation instead of dumping it into new features, or performance on longer-running or more-often-used functionality.
That was my first thought. Or people complaining about air travel - "when they are in a chair flying 500 mph 7 miles up!"
I find it hard to get worked up about a program that you are going to use for the next 8 hours taking 30 seconds to start. Though I do get annoyed waiting for STS (SpringSource's Eclipse) to start up.
One thing that would be very helpful for these plugin based program would be for them to be configured with the minimum to start with. It takes forever for Eclipse to start up because it's initializing a dozen plugins/services that I don't care about. And it's not always easy to turn them off.
It only makes sense to complain about any gap between potential and actual performance, though, because that's how things progress.
It's pretty amazing to fly across the country with only ~8 hours of time spent in transit. However, just because that's amazing doesn't make it wrong to complain about one of those hours being spent on completely unnecessary security theater. It could easily be 7 instead of 8, and that's an hour that everybody's wasting. Yes, 8 is still amazing, but 7 would be better.
Same thing with software. It's amazing that we can do this stuff at all, let alone as quickly as we do. Being able to start something as powerful as Photoshop in an hour would still be fantastic. But when the capability exists to make it start in five seconds instead, it's still reasonable to complain about the gap.
To look at it another way, when you're waiting around because necessary work is being done, that's reasonable. But when you're waiting around for the sole reason that somebody decided his time is more important than your time, that's rightly frustrating.
I for one prefer seeing splash screen for couple of seconds[1] rather than having laggy/half-functional UI appear instantly. Actually I'm more annoyed by Windows login, which shows desktop early while it's still starting up background apps, and thus being unusably slow.
And the comparisons to mobile devices are just ridiculous. At least in my use, I'd estimate that on average apps on my desktop launch much more quickly than on my Android phone. And I challenge anyone to find a smartphone that boots up faster than a fresh Windows 7 install on a SSD (or even on a regular HDD).
[1] I just timed: Photoshop 5 seconds, Word 2 seconds, both from warm caches. And that's with a 4 year old budget laptop.
Most modern games use various tricks to minimize or eliminate loading screens, with varying degrees of success. Common ideas include using low-quality assets for far-away objects, dynamically replacing them when the player gets closer; creating assets that can easily be reused; and making the player wait in a small room or hallway while the next area loads. Sometimes this can backfire, as with the infamously slow elevators in Mass Effect, which are timed to always take as long as the worst-case load time for the area they're linked to.
They can't follow the article's suggestion of giving you a mini-game to play during the load screen because that would violate Namco's patent 5,718,632 which covers exactly that:
Wow , that's ridiculous.
Although I'm not sure what game you could play in the 10 seconds or so it takes to load a program these days, plus you've got to load the game itself.
I have always wondered though why when doing an OS install they never provided a game or something interesting to do while you wait rather than show adverts for the product you are currently installing ("Windows 7 has all these great new features!".. "I know , hence why I bought it.."). They could at least give me a browser to use though.
5-10 seconds? This guy is complaining about 5-10 seconds?
I hate bloatware. I despise behavior like the sloth and neglect Microsoft inflicted on Windows XP once Vista shipped and I loathe the abandonment of gingerbread phones like my late Droid G1 (unaffectionately nicknamed "the brick" in its final days) by Google once they entered the crunch phase for ICS, but 5 to 10 seconds?!?!?!?
Get a grip... If an app has any mandatory online component whatsoever (not that photoshop does), its boot time is unavoidably non-deterministic. Good luck fixing that (not that there's any excuse for avoiding latency that can be avoided)...
I was hoping Adobe would patch Photoshop CS4 on OSX Lion so it stops crashing when quitting, and then hanging indefinitely if you try to re-launch it again without rebooting first. It's the most expensive software I've ever purchased which doesn't know how to [NSApp terminate:nil]; properly.
I still use Photoshop 6.0 circa 1999. It loads in a few seconds max, and it has all the core functionality necessary for web graphics work. In fact, even PS 5.5 would do fine because it was the first version that supported Save for Web.
If you are using the latest version of Photoshop for web work only, you are wasting time and money for tons of features you don't really need.
Agree, I don't think Adobe has ever really positioned PS as a web tool I always thought of it more as something for people to process photos with, including huge photo files which are intended for billboards etc.
The title made it seem like this was going to be more of an whistle-blowing blog post by an insider.
Nevertheless, this kind of rant is interesting in so far as it points to what I think a growing momentum behind the UNIX philosophy. What I mean by that is: small programs that do one thing well and interoperate with others.
I wonder whether the underlying cause of this shift in thinking is the levelling off of CPU cycle speeds. Time was when the performance of something like Photoshop or Office would just prompt you to buy a better computer. People would assume their computer had gotten old or out of date. Now that getting new hardware doesn't magically fix things people are asking why certain things take so long and comparing programs' performance.
I suppose this is a good place to mention that I wasted 2 hours of my day zeroing my MBR because of Adobe. Apparently Photoshop installs some DRM crap on it.
I will not be using an Adobe product other than Flash again. I would ditch Flash as well, but last time I checked, gnash was not good enough to replace it yet. That's not an issue though. I'll just wait for HTML5 to kill it.
"Just don't quit Photoshop when you're done using it, and don't turn the computer off, put it to sleep. If you have an SSD (like your iPhone), then swapping Photoshop back into main memory will also be much faster."
My experience in OS X is that Photoshop has to be restarted very frequently or it just eats up more and more memory until it uses it all. Seems like bad memory management.
That's possibly just because there is no other contention for the memory. By and large it is the OS that is broadly responsible for memory management, the OS hands out pages of memory to programs and it's upto the programs as to how they use them.
If you have photoshop running and using a lot of RAM it is likely that were you to run another application the RAM usage of photoshop would drop to accommodate the other program as the OS will simply drop some of photoshop's pages and let the other program use them.
There is not really any performance hit from doing this since any page that is not "dirty" (i.e has not been written to) which will be basically any pages containing program code does not need to be swapped back to disk.
If you are concerned you should find a way to measure the quantity of IO going on in the swap area since heavy swap IO will be the best indicator that you either need more memory or something is not as it should be.
For example I run a server that is often at 70% or so of RAM usage but has only swapped something like 10MB of data in the last month.
245 comments
[ 2.6 ms ] story [ 289 ms ] threadHe adressed nothing beyond his hate for the splash screen, which has seen its time imo, but nonetheless has nothing on many of the other features and tools that Adobe puts out when it comes to bloat.
If Adobe really cared about the user, they don't because they own the brand name synonymous with image manipulation, they would at least make an attempt to tailor the application to the specific user's needs, not the user base as a whole. But they don't have to and will keep doing what they deem good for them until a real challenger appears. And then they'll buy them or sue them into oblivion.
Photoshop (for example) is pretty extensible and has support for plugins as well as scripting capabilities etc, not sure what else you want?
Also part of the reason that adobe is the industry standard is that their applications are consistant and a designer who hops jobs can easily get upto speed in a new environment without having to learn a completely new tool.
are you assuming that every time a developer switches job, he or she has to learn a new IDE. Life isn't like that.
It's not impractical to assume that a user will use a specific subset of all of the tool offerings and doesn't need or use all of what the application has to offer. The app should be able to develop a profile based on what the user actually does with it instead of forcing all of the functionality onto them.
But Adobe makes a lot of money with their product, has no competitors of note and therefore doesn't have to change the way they do business because even if their subsequent releases fail to impress their user base, they're still going to sell licenses.
Besides when you have a program with a long load time, this is not necessarily correlated with the number of features, it's more likely that it's some core part of the program that is taking a good chunk of the initialization time.
The consistency argument is important, especially to anyone who has ever worked on telephone tech support. Being able to give somebody instructions on how to perform an action without having to worry about which of the 1000s of possible configurations their program is in is important. This is probably one of the big reasons desktop Linux never took off.
Most professional programs like IDEs or photoshop are intended to be used by professional users anyway who will be likely to have a reasonably fast computer and will have invested some time in learning to operate the program properly.
Adobe has actually had quite a few competitors over the years, currently there are programs like PixelMator and in the past they have had JASC , Corel, Macromedia (until they bough them) and of course GIMP to contend with.
Joel Spolsky has a good article on this. http://www.joelonsoftware.com/articles/fog0000000020.html
GIMP to contend with? Adobe could give two shits about that app, its user base and the Linux community in general.
what phone does he use? every phone that I know of takes at least two minutes to come up from a cold start, and has for the last ten years...
Not to mention that HTC has now seen fit in the latest version of Sense to add a mandatory spinning animation that plays for ~2 seconds every time I unlock the phone before I am allowed to use it.
I used to love Macromedia Fireworks, so that I bought a copy of Fireworks after Adobe acquired Macromedia. I had to jump through some crazy hoops to prove that I did not steal the product, and that was nothing compared to what I had to do after buying a new computer – it turns out that I was supposed to unactivate the product on the old one and then activate on the new one. This is not what you do to your customers. I don’t even want to start on the issue of software quality or customer service (I once did the mistake of trying to report an i13n issue with my copy of Fireworks).
I swore there’s not going to be any software by Adobe on my computer anymore, and I even disabled Flash in my primary browser. I am lucky that I can do with the new wave of Mac graphics editors like Pixelmator. I was so happy paying for that product on the Mac App Store, getting a copy and doing nothing else that would require it to work. I was so happy that it starts immediately, that is has a decent UI. It’s not feature complete, it’s got its own bugs, but it’s a software and experience I am willing to pay for. Unlike Adobe. (Which is a company I once liked, being a typography geek and typesetting our school magazine in an old copy of PageMaker.)
Note the ongoing efforts to get Adobe to free FreeHand, including the recent antitrust lawsuit: http://freefreehand.wordpress.com/
Adobe is just another company where good software goes to die.
I'm like many, however, in grumbling about how crappy Fireworks has gotten (at least on OSX, not sure about Windows) and am to the point that I'm ready to move on.
If your primary use of FW is to mock something up and export it as HTML and image slices, Pixelmator is not for you. You can get a free trial, IIRC, and see for yourself.
Ok, I wait maybe 2-3 minutes for the computer to start (not even that if I just put it to sleep instead of turning it off). I can work for ~8-10 hours so those minutes aren't a big deal.
There are a few programs that are particularly slow to start (eclipse, steam, openoffice) but that's mostly just because there is a lot of code to load and I'm sure a comparable application for a smartphone would be just as slow.
I do run Linux most of the time though so there is probably a bias there towards smaller non-monolithic programs there and not having registry bloat helps.
However I still remember the days of Windows 98 and how horribly slow everything was back then on anything apart from a freshly installed machine and having to wait a full minute for Office 97 to start, we've come a long way since those days. I can't see it taking long before every PC comes with an SSD drive (which is probably part of the reason smartphones seem responsive as well as having a well warmed cache).
As for doing something like running a cloud instance of the program and then somehow syncing back to the desktop app seemlessly, that seems like it would add such an insane level of extra complexity and problems which is exactly what he seems to be against.
You can kind of achieve this with Windows + Adobe stuff too. Just don't quit Photoshop when you're done using it, and don't turn the computer off, put it to sleep. If you have an SSD (like your iPhone), then swapping Photoshop back into main memory will also be much faster.
Of course the OP is right, Adobe stuff is bloatware and sucks. Fortunately for non-pro designers, there are alternatives like Pixelmator and Paint.NET.
Facebook, Linkedin, Flickr, IMDB, Dropbox, Angry Birds, Skype, iGo, Quotes, PCalc Lite...
The idea is to give the user the impression the app has already started instantaneously, and you're just waiting for data to roll in to populate the UI.
The app needs to load something close to 200 fonts (it's a design-oriented app). If they're not all present, the font choice list won't render properly. Lazy-loading isn't really an option -- otherwise the user will be sitting there watching the UI slooowwwlly render each font choice, one by one, while he waits to do something with them. Better to take the hit at startup, IMO, rather than making the user pause while he's in the middle of creating something.
However with (let's say) eclipse or photoshop , when the program loads the first thing it displays is either my code or a graphic I am working on.
How would it allow me to interact with that in any kind of useful way without actually loading the program?
I created a web app recently that had to make an Ajax call but could not allow any user input until this action had completed as various parts of the UI would have to be refreshed with new information.
I had reports from users that they thought the app had crashed since it wasn't responding to their inputs for a few seconds. It turned out the best solution was to simply whiteout the entire page and show an animated egg timer until the action had completed.
It's only really heavy professional apps that take much time to start anyway.
I think the point the author is trying to make is that it shouldn't be up to the consumer to spend more money to make their programs run faster. Software reform is what's needed and "just buy an ssd" is a very strong argument.
Having said that, I agree with the idea of making software less monolithic and making it start up as fast as possible, as long as it is possible. However, when I say that I want a program to start up fast, I mean that I want it to start being useful fast. Quite a few of author's ideas are not about bootstrapping gradually, they're about faking it. It's like going to a place that used to have a "closed for lunch" sign and discovering that it's now open, but populated by robots whose personality is an Eliza-like AI.
And I agreed about the "faking" issue. Just like how Windows will silently keep loading tons of services in the background after a reboot, but shows you a desktop and makes you think you are free to click and launch stuff.
But quite a few of those ideas are useful.
The only ones I thought were a bit out-there were the ones about "just processing it in the cloud" while the local copy is still loading. But other HNers are probably more qualified to judge how realistic this is.
What is a possibility, however, during loading a lot of time is spent on loading all sorts of modules, ones that might not even be used that session, and most definitely not in the first few minutes. Because what is the user going to do first? Most likely it'll be `File > Open ...` and browsing through the filesystem looking for whatever project they intend to open.
You don't need any plugins for that. And it's exactly the type of task that spends relatively a lot of time waiting for user input and not so much time computing or loading things. During this task the app can continue loading modules and plugins and the user doesn't have to wait because they're selecting a file.
You probably need to disable (most of) the instant preview in the file open dialog until it's done loading, but that's a minor trade-off.
Of course you're loading the modules necessary for opening files first (most recently used filetypes first). When that's done the dialog can start showing previews. If the user happens to have found and selected their file before it's done, then, only then they'll have to wait.
Now you're loading the file and it's showing on the screen, the user can browse the layers a bit and ponder where exactly they left off last time. A wonderful time to load the rest of the modules! Of course the features used in this project will be loaded first. If there's no text layers, we can put off loading font-rendering support in favour of other modules.
It's not all load-on-demand, but a lot of user tasks are not as processor- or data-intensive as you'd think, because the user is busy thinking and as long as the UI is responsive enough they're happy.
Basically with command held down the entire time, hit tab until Preview is framed, and instead of releasing command (which would pull Preview to the foreground), hit Q, which will send Preview the command-q event and cause it to quit.
I do not understand what you are saying. Can you elaborate?
Edit: As to my original comment, when I switch to another app, preview stays open, but up to now I don't know how to close it because I can't get the menu to appear without a pdf or something using it, that's why I reopen a document, forcing the menu to show up, then close the app.
As far as the menu disappearing when you close both documents, that's confusing and directly contradicts what you typed earlier. I can open Preview.app, and it'll just show me the menu. I can close it by alt-tabbing to it and hitting Cmd-Q - no windows required.
That's the whole paradigm. Windows belong to applications, but applications aren't windows. That's one reason the menu bar is divorced from any window (along with Fitt's law): so that you can interact with an app even when it currently has no windows open.
You could just close it from the dock you know. Or switch to it and command-Q immediately.
In fact, I don't even understand how you'd go around to "reopening a window" of preview, preview will not open any window without a document in it, do you open a document just to close preview or something?
Some apps, like my browser, mail program, the terminal, Emacs, ... I love having start quickly, even if it's because they were just in the background before.
Other stuff, like Preview, I don't use often enough to care about the load time, and I would probably configure it to exit when the last window closed.
Under Lion, that is (sort of) what Preview and TextExit do. When you close all open documents in Preview and then switch away from the app, the app will terminate.
No, it's just vastly more complicated than most of the cut-down alternatives because it has to meet the needs of pro designers. Maybe there's some accumulated cruft there but I can guarantee you that Pixelmator, for example, would be similarly large if it had to support all the same use cases.
Many people install pirate Photoshop to resize and put a few filters on their photos and complain that is it too slow and complicated when really they could have achieved the same result from either a freeware program or a significantly cheaper commercial one.
If the author has the splash screen burned into his retina, (s)he's doing it wrong.
When I saw this, I was sure you were wrong. However, looking on Newegg[0], 12GB RAM is about $60. That's just crazy to me.
[0]: http://www.newegg.com/Store/SubCategory.aspx?SubCategory=381...
I wish I could just get more RAM, but some of us are still somewhat budget limited. Photoshop took enough of my money the first time around.
That's what it ALREADY does, actually.
It takes that much time for just the basic UI code (plus plugin registration etc). It doesn't load the plugins or filters in memory before they are first use.
I'd rather have a reliable progress bar that says "go make coffee and come back in 5 minutes" instead of being misled to thinking i can use the program in 30 seconds.
But lazy loading for rarely used functions is of course a good solution, as long as you don't use it for everything.
IIRC there was something that was basically a "flash intro wizard" however this may well have just been added due to demand from developers for such features.
edit: I forgot to mention my even bigger gripe about the flash intros, and that was because I was basically being forced to sit through a commercial before I could interact with the company. It went (and goes) against the very basics of web use.
But alas, I agree, they were a total waste of time. As I said, the people who pay the bills don't always listen to the people that they should listen to.
Frankly, I'll manage my applications myself.
Are you tired of waiting for Photoshop to launch? You might want to try leaving it open...
I see the software splash screen in the same light. It is giving credit to those who have put it together. Now, obviously entertainment is different then a work application, but many of us feel that software is art, just like a movie and that if someone wants to do a credit role then they should.
You may notice if you watch some older movies (pre-1950s, mostly) that they used to run the ENTIRE credits list at the start of the film. The WHOLE THING. Not just the credits you see at the beginning today, but also all the ones that today are listed at the END of the movie, too. The copyright notices for all the songs they used, the logos for their camera and film providers, the names of all the gaffers and best boys and Assistants To Mr. Bigshot... you had to sit through them all before the movie got underway.
They don't do that anymore. Today only a very small number of Very Important People get credited before the start of the movie. Everyone else gets shunted to the end. Why? The answer is TV. When TV came along and movies started getting shown there, they no longer had a captive audience. The audience could now change the channel if they weren't being entertained -- which meant that there was pressure on the filmmakers to GET ON WITH THE DAMN MOVIE. So they moved nearly all the credits to run after the film, rather than before.
That was a bit of a blow to all those other folks, of course, since credits at the end of a movie are credits nobody reads -- they're too busy leaving the theater or changing the channel. But it was necessary to conform to the audience's desire that they GET ON WITH THE DAMN MOVIE.
Which is Thomas' point: users' expectations are changing. Used to be that it didn't matter that much if your app was slow to load, because users didn't expect it to be fast. But the proliferation of mobile devices and lightweight apps is changing those expectations. So if you care about your users and want to hold on to them, it behooves you to GET ON WITH THE DAMN APPLICATION.
You can see the progression even over the last 10-20 years. We used to see the title of the movie, and then a few minutes of scenery with the actor's names on them. These days it's not uncommon for the movie to start almost immediately with the credits integrated into various background elements.
The same evolution has been underway for a couple of decades now with TV shows. Until the early 1990s it was commonplace for TV sitcoms to have a full opening credits reel, complete with a theme song just for that show. Think of the opening of Mary Tyler Moore [1] from back in the '70s, for instance, or Cheers [2] from the '80s; they both became iconic representations of those shows.
These intros helped set the tone of the show that followed them. But they generally took a full minute to run, and as the universe of options provided by cable expanded and remote controls became inexpensive, waiting that extra minute for the show to start began to turn off viewers. The push began to GET ON WITH THE DAMN SHOW, and so the traditional musical opening first shrank, then disappeared altogether. Today's openings run much shorter -- 25 seconds max -- and usually include just a couple of title cards and a musical snippet.
[1] http://www.youtube.com/watch?v=9m4-Te1m7fY
[2] http://www.youtube.com/watch?v=FD8ljNobUys
I find it fascinating to see the number of different skills that are required to get something like that from a drawing board idea to a shipped product.
Not to mention that sometimes they add some kind of extra "easter egg" content right after the credits as a bonus for watching right through.
His proposed solution sucks too. Show the UI while it's loading so the user can impotently click around waiting for the program to "turn on". Windows does this when it boots up and it drives me insane -- if the OS or program isn't in a usable state when you show it to me, don't show it to me
Loading speed is just one of a multitude of factors that come into play when making software. According to this Adobe employee it should be the chief most concern, even dominating other things like features, usability, UX, cost, technological debt, etc.
And on his proposed solution, he asks developers to empower users, to not make users feel belittled, and at the same time he asks developers to trick users into thinking the full app has loaded. How can you avoid belittling someone and trick them at the same time?
Everytime I start Blender (3D content creation suite) I'm blown away by the time it takes to start. Less than 2 seconds! Ready to use!
Do I call Blender a complicates program? Yes I do. The feature list can compete with the one of 3ds Max.
I remember Blender loading fast as well. But are you sure every single feature of the program is available as soon as the GUI is displayed? Because I wouldn't be surprised if there's some lazy loading going on. Maybe some things finish loading in the background so they are not available right away or maybe some things are loaded on demand to spread out the loading time.
I hope not.
Ever checked an online Photo editor? (http://pixlr.com/editor/ for example after a quick Google). Open the page and there it is: your interface ready to use.
So I guess the launch was faster but waiting for the fonts to load was annoying when I was in the middle of working. During the app startup I'm probably spacing out for a few seconds while the app launches.
I see similar things in other apps. One that comes to mind at the moment is Eclipse where there are certain menu items when you drag over them the app freezes for a second. I always curse myself when I accidentally roll over one of those.
Particular parts of the app that require a lot of disk access may have a bit of a performance hit and so it makes sense to lazy load them, but it is a trade-off and sometimes I'd rather just wait a few moments at launch instead of getting killed by a thousand cuts while working.
Which, out of curiosity I timed it, the "long" loading time for Photoshop CS5 on my machine is less than six seconds. It think I can wait that long.
Everybody seems to be missing the third way: load in the background as the user can already work.
Take those fonts, you could spend 5s loading them during the splashscreen making the user wait, you could spend 5s loading them when first requested making the user wait again. Or you could load them after the program has started, in the background.
Will the user go from "empty document" to opening the fonts dropdown in under 5s? Pretty damn unlikely, and if he does he'll wait for the remainder of the load. In either case, he just "won" 5s.
If I don't have an SSD my drive head is going to be spinning around like crazy trying to load resources from different parts of the disk at once which is going to give me slower overall performance. If you do have an SSD then it's likely fast enough either way.
This is exactly the point made in the article...
That's why.
And they're not enormously complicated, paint opens instantly and has the same UI. Word is little more than a glorified textbox. Programmatically all the features make those programs enormously complex, but the actual common use of the programs are simplicity itself.
Although I agree with the annoyance of accidentally opening something like Photoshop and having to wait to close it. But a good number of resources that is loading is third-party stuff that demands to be present immediately on startup as opposed to being loaded on demand. But whatever.
Paint has the same UI as what? I hope you're not comparing it to Photoshop or any other professional level software. I believe the modern version of Word is a good bit more than a glorified textbox.
But then you point out exactly why these programs load slowly in your last sentence. Maybe just start using less complex software?
You do not need to initalize all the 3rd party tools, you just have to find out which tiny little icon to add on a task bar or extra menu items to add, and why didn't you cache that when the extension was first detected?
And how silly of me, of course all the corporations these days let you turn off the updates on their computers don't they?
Stop telling your users that 'if they just..', do the opposite with UI than you do with your code, start programming for the best case scenario, not the worst case.
Out of curiosity, when was it? Wasn't openoffice.org an option?
I don't understand what you are saying about third party tools. Could you clarify? Is that whole sentence talking about the same thing because I read it as having four different topics in there.
If a corporation won't allow you to adjust update settings then that's an issue to take up with IT since they are preventing you from doing what you need, not the software itself. What if the default settings were exactly what you wanted and your IT department prevented it, is that also the fault of the software? I think your complaint is misdirected in this case.
Ask ten different people to define best case scenario and I bet you'll get several different answers. Which one do you choose? You can't make everyone happy but I guess since you're not happy then your way is the best choice? What you complain about telling users "if they just..." is what I call choice. When I say an application won't do something I need then I WANT the answer to be "if you just do this..." so I can have that choice.
Seriously? I mean, my Dodge Neon has the same gas, brake, clutch and steering wheel that a Ferrari 599 has, why doesn't it 0-60 as fast? Stop comparing engine size and complexity, it has all the superficial elements of a sports car! God, you're such a mechanic.
Either way it's going to take some time to load because it's a big application. One way lets you know it's working, the other makes you think it has frozen as you're fruitlessly clicking around. The interface is the least important thing in the application until it's fully loaded.
The idea with Photoshop is, sure, loading the entire thing will take much longer, but users tend to use one tool at a time, and loading an individual tool shouldn't take anywhere near as long.
It also makes sense from the point of view of parallelization. One example of an extremely slow operation is waiting for the user to click on something. So instead of sequentially loading things, followed by the user deciding what to do, Photoshop should continue loading while the user decides e.g. what brush size and color he/she wants.
Like any other, this approach has advantages and disadvantages - it would indeed be frustrating if the brush tool hadn't loaded by the time you started using it, and it would probably require a lot of work for Photoshop to load so modularly and on-demand - but all I'm saying is, I understand the value in the alternative he suggests.
It's possible that what the program is doing at initialization is not loading code from the disk but doing something else, like perhaps checking it has a nice big contiguous area of disk to use for temporary storage or for loading some type of cache into.
There are many times in programming where you make a choice between taking a one-off up front cost to optimise something for faster overall performance vs slower overall performance without the setup cost.
For example with a DBMS you can lose some write performance by having an index on a table and rebalancing when you are writing but the advantage is much faster read performance.
Also A Java program can take longer to run the first time by JIT compiling the program for the platform it is run on but this will mean faster performance of the program itself.
The programs from Office 2010 have a _x on the splash screen which lets you easily minimize/kill the program in question. It's really snappy, works like a charm.
The Adobe apps still do have more significant load times, more like 5-8ish seconds, but RAM is cheap, just load that app once and keep it open forever. Hibernate your system instead of shutting it down cold so that the apps don't have to reload from initial state when you next use them. This also makes Windows pop up very quickly (but even from cold boot modern Windows only takes like 15-ish seconds on my (again 4 year old) system), which isn't anything to complain about compared to any other desktop OS out there.
All in all, I'm in the group of people very confused about this post. I'm historically someone who absolutely hated long load times, but it isn't something I've worried about for any app or OS I use in years now.
Having a power cut during a Windows update shouldn't result in a completely trashed system.
I'm curious if cutting the power on a Mac while it's moving files into place will break a software update, or if the whole package receipt mechanism prevents that from occurring.
[1] http://en.wikipedia.org/wiki/Transactional_NTFS
Transactional NTFS is implemented on top of the Kernel Transaction Manager (KTM), which is a Windows kernel component.
Because this is implemented on top of the kernel itself, if you have brought down the kernel in order to update files within said kernel, you likely are not going to be able to leverage the transactional rollback. You might able to do a system restore, if you boot from CD, but breaking your kernel is not an easily recoverable situation. I suspect there are actually safegaurds in the update procedure which protect against this situation, but things can go wrong and it is really not something you want to have to rely on.
Something like this:
1. Download all compressed archives that are required for the update from the update website and unzip somewhere.
2. Check the package manifest and figure out which files need to be changed/added/deleted.
3. Write a flag somewhere on the boot drive that says the update process has begun and which files will be altered.
4. Make copies of all the files which will be changed.
5. Work through the update process by modifying or overwriting the copied files with the contents of the update archives.
6. Temporarily suspend the scheduler so the update process is the only thing running and release locks on all of the files which will be changed.
7. Work through every file that needs to be changed and link the filesystem reference from the old version to the new version whilst keeping a copy of the old version.
8. At every stage in 7 mark in a log which references have been updated.
9. Mark a flag to indicate that the update process has been completed, either resume the scheduler and re-instate locks or force a restart of the OS if necessary.
When the system next starts up as part of the bootup process it can check if both the transaction start and finish flags are set. If the start flag is set but not the finish flag then it knows that an update failed so it can roll back by re-linking to the old versions of every file (reading the logs to know which files to re-link) and setting the start flag back to 0 so it can try again.
If the update was successful then it can delete the old files if the disk space is needed or keep them around in case there is an issue later which required a restore.
In regards the kernel example, my Linux install actually keeps old versions of the kernel on the system so that if a kernel update breaks something for whatever reason it is still possible to boot the system from the previous kernel. I imagine Windows and OSX do something like this , although possibly more transparently.
Note: This is what I could think of off the top of my head, I'm sure it's not a perfect way of doing it but it demonstrates the idea.
This can be done for directories too - make a new one, write changed files and hard link unchanged ones, then FSExchangeObjects. Obviously this scales linearly with the number of files in the directory, so it's not perfect. I'm not sure if / how any of this is used for system updates, though.
The spashscreen does 1 thing, it tells the user that the app is loading and you don't need to click the exe/icon again.
His solution to a 5-10 second load time is to provide a fake UI, record phantom mouse clicks, and also give the user a game to play, only makes everything worse.
Some apps have to initialize, and without that you are left with an empty shell of a UI that has no functionality. Or even worse, a slugish UI that initializes in-place or during work... Which then causes the typical user to go online and rant about how his app is broken or unresponsive.
Though I like what he has posted on the rest of his blog... http://asserttrue.blogspot.com/
This is the wrong way to notify. Let its dock icon bounce on (or similar), instead of obscuring the center of the working area on the computer.
Anyways he's solving the wrong problem. What he really wants is to have the OS log him in, lock the screen, and load his common apps before he gets to work.
In general no - I can't agree they're "really, really way better" than OS replacements. They're better for some people, worse for others.
It also makes purchasing easier, for example you can just buy photoshop/illustrator/whatever and have all the features you need straight up rather than having to choose between programs for different actions (say one program for drawing vectors , another for applying filter effects, another for format conversion etc etc).
Given the tremendous engineering challenges apps of these size pose the last place I'd like to see developers spend their precious time is on this.
"Oh sorry sir you are using a "server" with Indesign that requires escalation level 3, and that is $79 to talk to a level 3 advisor sir, kindly."
Thanks a lot Adobe.
(NSFW)
http://www.youtube.com/watch?v=grxL5umOE6g&feature=relat...
This rant is not about life, though, it is about what makes for good and bad software. Which happens to be what we do for a living. In the grand scheme of things, we're all dead, and software doesn't matter. While we're here, though, it's not a bad thing to get bent out of shape about the things that bug us about it. It's our job to make this little area of the universe better. I think taking that seriously is a good thing.
But I do think that the original rant was clearly someone who let his rage batter the rational part of his brain into a pulp. He mentions things like that the iPhone experience is now what constitutes "minimally usable". Except that no PC (mac or otherwise) comes close to that level of experience and people are still using/buying them, so clearly he has a different definition of minimally usable than a sane person. He's also so annoyed at having to wait that he proposes worse solutions than the wait itself (a fake UI, that still logs actions; I foresee way more frustration from that than having to look at a splash image).
Yeah, there's a lot of room to improve load times, and a well reasoned blog post on that would have been great. But when someone is ballistic to the point that they can't think straight anymore - I think a little comedic appeal to perspective isn't entirely out of line.
I find it hard to get worked up about a program that you are going to use for the next 8 hours taking 30 seconds to start. Though I do get annoyed waiting for STS (SpringSource's Eclipse) to start up.
One thing that would be very helpful for these plugin based program would be for them to be configured with the minimum to start with. It takes forever for Eclipse to start up because it's initializing a dozen plugins/services that I don't care about. And it's not always easy to turn them off.
It's pretty amazing to fly across the country with only ~8 hours of time spent in transit. However, just because that's amazing doesn't make it wrong to complain about one of those hours being spent on completely unnecessary security theater. It could easily be 7 instead of 8, and that's an hour that everybody's wasting. Yes, 8 is still amazing, but 7 would be better.
Same thing with software. It's amazing that we can do this stuff at all, let alone as quickly as we do. Being able to start something as powerful as Photoshop in an hour would still be fantastic. But when the capability exists to make it start in five seconds instead, it's still reasonable to complain about the gap.
To look at it another way, when you're waiting around because necessary work is being done, that's reasonable. But when you're waiting around for the sole reason that somebody decided his time is more important than your time, that's rightly frustrating.
And the comparisons to mobile devices are just ridiculous. At least in my use, I'd estimate that on average apps on my desktop launch much more quickly than on my Android phone. And I challenge anyone to find a smartphone that boots up faster than a fresh Windows 7 install on a SSD (or even on a regular HDD).
[1] I just timed: Photoshop 5 seconds, Word 2 seconds, both from warm caches. And that's with a 4 year old budget laptop.
Anyone familiar with why you have to have loading screens in games? Would it be possible to pre-load a level while you're playing?
TV Tropes has a list of examples: http://tvtropes.org/pmwiki/pmwiki.php/Main/DynamicLoading
http://www.google.com/patents/US5718632
I have always wondered though why when doing an OS install they never provided a game or something interesting to do while you wait rather than show adverts for the product you are currently installing ("Windows 7 has all these great new features!".. "I know , hence why I bought it.."). They could at least give me a browser to use though.
I hate bloatware. I despise behavior like the sloth and neglect Microsoft inflicted on Windows XP once Vista shipped and I loathe the abandonment of gingerbread phones like my late Droid G1 (unaffectionately nicknamed "the brick" in its final days) by Google once they entered the crunch phase for ICS, but 5 to 10 seconds?!?!?!?
Get a grip... If an app has any mandatory online component whatsoever (not that photoshop does), its boot time is unavoidably non-deterministic. Good luck fixing that (not that there's any excuse for avoiding latency that can be avoided)...
If you are using the latest version of Photoshop for web work only, you are wasting time and money for tons of features you don't really need.
Nevertheless, this kind of rant is interesting in so far as it points to what I think a growing momentum behind the UNIX philosophy. What I mean by that is: small programs that do one thing well and interoperate with others.
I wonder whether the underlying cause of this shift in thinking is the levelling off of CPU cycle speeds. Time was when the performance of something like Photoshop or Office would just prompt you to buy a better computer. People would assume their computer had gotten old or out of date. Now that getting new hardware doesn't magically fix things people are asking why certain things take so long and comparing programs' performance.
Proof: http://www.amazon.com/Adobe-Photoshop-Extended-CS4-VERSION/d...
Proof: http://ubuntuforums.org/showthread.php?t=1661254
I will not be using an Adobe product other than Flash again. I would ditch Flash as well, but last time I checked, gnash was not good enough to replace it yet. That's not an issue though. I'll just wait for HTML5 to kill it.
At least for many websites this trend has been stopped, due to mobile requirements.
My experience in OS X is that Photoshop has to be restarted very frequently or it just eats up more and more memory until it uses it all. Seems like bad memory management.
If you have photoshop running and using a lot of RAM it is likely that were you to run another application the RAM usage of photoshop would drop to accommodate the other program as the OS will simply drop some of photoshop's pages and let the other program use them.
There is not really any performance hit from doing this since any page that is not "dirty" (i.e has not been written to) which will be basically any pages containing program code does not need to be swapped back to disk.
If you are concerned you should find a way to measure the quantity of IO going on in the swap area since heavy swap IO will be the best indicator that you either need more memory or something is not as it should be.
For example I run a server that is often at 70% or so of RAM usage but has only swapped something like 10MB of data in the last month.