Ferdy Christant describes a sneaky way to display a progress bar (he performs the whole action, then displays a pre-timed animated gif before taking the user to the next page).
Some things never change! About 18 years ago, while I was an employee of the University of Pennsylvania robotics lab, I installed a beta of Ultrix v1.0. This was on a large VAX with a dot-matrix printer console. When the install started, the console printed something like,
with a new dot added every few seconds, to indicate that work was progressing. New messages would appear at various points, with the same parade of dots to show everything was OK. At one point, it seemed like there were an awful lot of dots, and we should have gotten to the next message already. After a long while, it became clear there was no forward progress, and I ^C-ed the install.
Digging into it, the install was a shell script, and it became clear what was going on: at each step, the script started two processes: one to print the dots, and one to do the work. If the work process got wedged, the dot process happily printed dots until the end of time (or until the tape monkey got bored and hit ^C).