A software blog and portfolio

Is the Movie Industry Dead?

I think not, and I certainly don’t think it has to be.

One of the biggest issues facing the movie industry, as well as the music industry, and the entertainment industry as a whole, is piracy.

While I don’t think there is any silver-bullet solution to piracy that will be available any time soon… I don’t think it has to spell the end of the theater business.

I think, the motivation that a potential movie-goer would have, would be to see a movie with a group. The more that a movie can appeal to groups… the more appealing it will be to pay to see it in a theater.

If your movie is only going to appeal to individuals, they might as well stay home and pirate it.

The greatest thing about the theater experience, is the ability to see a movie with your friends, thus, if the theater business wants to stay in business, the movie industry should focus on this, because it really is, in my opinion, the whole motivation behind purchasing a movie ticket.

I personally have no issue with purchasing a movie ticket, I enjoy the theater experience. I enjoy experiencing a movie on a large screen, with friends, and I definitely appreciate a comfortable theater with very comfortable chairs, and I definitely appreciate a good movie. Paying around $5-$7 would be ideal, and I think well worth the money for a good movie.

I can also see the value in movie streaming services like Netflix, where there’s a paid subscription for unlimited access to a collection of movies, but as it currently stands, my opinion of Netflix’s selection is… pretty stinky. I like the idea of Netflix, but in reality, Netflix has a pretty weak selection.

Paying $10 for a DVD is simply outrageous. DVDs are a technology that is quickly becoming obsolete, thus the production and distribution of these mediums no longer required, reducing the cost of production, and therefore, logically, should also reduce the net cost of the movie for consumers, especially consumers who purchase these movies from online movie stores. A movie download shouldn’t cost the same as a DVD, essentially.

And on that same note, I see absolutely no point in “owning” a digital copy of a movie. But, some people do, and for these people, a cloud service to store these digital goods should be provided… in case something were to happen where their computer crashes and they aren’t able to recover their digital goods, or should be able to re-download them.

I do see the value in that, at least, being able to purchase a digital copy, and along with that, having the ability to re-download the movie as many times as needed. But, of course, the movie industry probably wouldn’t be okay with that either, because of fears that one person could download the movie, and let all of their friends watch it. I personally see no problem with that, because in the real world, when you own a DVD, you let your friends borrow it, and you let your friends watch it as many times as you want. What the consumer is really buying, is the ability to always have a copy of that movie. The friends can’t re-download the movie if they want to watch it again and again. So for me, I see no issues with this. It’s exactly like purchasing a DVD, and I don’t see the need for any complex DRM “don’t let your friends have a copy” type systems. Because, if they receive a copy, they’ll lose it eventually, or delete it, or whatever… and they won’t be able to download another. You’re not necessarily selling just one download, you’re selling access to that movie… that is where the value comes in, and that is the consumer need that businesses can fulfill, lifetime access.

Working With Arrays of Promises With Bluebird.

While working with bluebird, I ran into a situation where I had a long chain of promises. I initially wrote my chain of promise execution as follows:

Promise.all([func1(), func2()])
  .spread(doStuffAndReturnAnArray)
  .all(doStuffAndReturnAnArrayOfPromises)
  .then(finish)

When I went to run the script, it wasn’t quite working. I noticed that the function passed to .all() wasn’t being executed at all. I discovered this by placing a simple console.log statement in the function definition. I then suspected that .all() requires an array of promises, and .all() doesn’t know what to do with a function that returns an array of promises.

I ended up testing my theory by re-writing the code like this:

Promise.all([func1(), func2()])
  .spread(doStuffAndReturnAnArray)
  .then (theArray) ->
    Promise.all(doStuffWithArrayAndReturnArrayOfPromises(theArray))
    .then(finish)

I opened up the promise chain by passing a callback to .then(), in which I explicitly called the function that returns an array of promises, and passed the result to Promise.all

Initially, I thought that naturally, .all() would be a chainable function in my case, and that it would pass the results from the previous promise to the function it received, and then the function would return an array of promises, which is what .all() expects, but that’s not how it works.

Long story short, Promise.all needs to receive an array of promises. It won’t work with a function that returns an array of promises.