Léo-Ernest Ouimet

Léo-Ernest Ouimet (March 16, 1877 - March 2, 1972) was a Canadian film pioneer. He was a theater operator, filmmaker, producer, and distributor.

Léo-Ernest Ouimet in 1910

Early life

Ouimet was born on March 16, 1877 in Laval, Quebec. He planned a career in electrical engineering but stumbled upon show business by chance in 1901, when Le Theatre National in Montreal asked him to rewire the theatre building. Not only did he do the job in just two days but he devised a creative lighting system that wowed audiences. Other theatres, such as the Le Cartier Theatre asked him to do the same in their theatres and he became an instant success. Le Theatre National asked Ouimet to come back to work for them as a lighting designer, and a legal loophole launched his movie career: by law, Le Theatre National was not allowed to operate in any closed venue on Sundays, so to get around this, performances took place at Sohmers Park on Sundays. From 1902 onwards, the theatre screened animations during intermissions and the projectionist showed Ouimet how to use the theatre's kinetoscope. He subsequently bought one for himself and began experimenting.[1]

First steps into filmmaking

Due to his fascination with Edison products, he became their representative in eastern Canada and set up his own Ouimet Film Exchange to facilitate the distribution of films in the region. During the 1904 federal election he used his kinetoscope to project election results on to the front wall of the newspaper La Patrie and in 1906 turned an abandoned cabaret house into a nickelodeon of 500 seats. Due to the technical restrictions placed on the kinetoscope by Edison to maintain control over the market, Ouimet modified his into a 'Ouimetoscope' and in 1907 opened a 1200-seat movie theatre which he also named Ouimetoscope. His films were shown around Canada and made Quebec the theatre hotspot of the country.[2]

A booming business

The Ouimetoscope building in 1908

In 1911, the religious leaders of Montreal attempted to have movie screenings on Sundays banned, similar to the restriction placed on theatres in Ouimet's early filmmaking days. The backlash did affect Ouimet for quite a while, and, along with other factors, almost financially ruined him. However, the ban was rejected by the Supreme Court soon after its introduction. By World War I Ouimet had made over 80 best-selling films, making him one of the most successful filmmakers of that period.[3] Unlike many other move theatre owners of his time, Ouimet didn't include live performances in between films just in case the movie industry went bust, but he did hand out programs or showbills to his patrons to keep the theatre-like experience alive.[1]

Ouimet, weary from battles with Hollywood film studios who flooded Quebec with their movies, sold his Ouimetoscope and moved to Hollywood in 1922. There he formed a production company, Laval Photoplays, after his birthplace. After the dismal sales of his film Why Get Married?, Ouimet decided to leave commercial filmmaking. Back in Montreal, he attempted to rebuild his theatre business by leasing another building, but he was again financially ruined due to the lawsuits of the descendants of those killed in a fire at his theatre. With no motivation to continue, he retired to a store job with the Quebec Liquor Commission and died on March 2, 1972, aged 94.

In 2018, Ouimet was named a National Historic Person by the federal government.[4]

gollark: I can come up with a thing to transmit ubqmachine™ details to osmarks.net or whatever which people can embed in their code.
gollark: It's an x86-64 system using debian or something.
gollark: > `import hashlib`Hashlib is still important!> `for entry, ubq323 in {**globals(), **__builtins__, **sys.__dict__, **locals(), CONSTANT: Entry()}.items():`Iterate over a bunch of things. I think only the builtins and globals are actually used.The stuff under here using `blake2s` stuff is actually written to be ridiculously unportable, to hinder analysis. This caused issues when trying to run it, so I had to hackily patch in the `/local` thing a few minutes before the deadline.> `for PyObject in gc.get_objects():`When I found out that you could iterate over all objects ever, this had to be incorporated somehow. This actually just looks for some random `os` function, and when it finds it loads the obfuscated code.> `F, G, H, I = typing(lookup[7]), typing(lookup[8]), __import__("functools"), lambda h, i, *a: F(G(h, i))`This is just a convoluted way to define `enumerate(range))` in one nice function.> `print(len(lookup), lookup[3], typing(lookup[3])) #`This is what actually loads the obfuscated stuff. I think.> `class int(typing(lookup[0])):`Here we subclass `complex`. `complex` is used for 2D coordinates within the thing, so I added some helper methods, such as `__iter__`, allowing unpacking of complex numbers into real and imaginary parts, `abs`, which generates a complex number a+ai, and `ℝ`, which provvides the floored real parts of two things.> `class Mаtrix:`This is where the magic happens. It actually uses unicode homoglyphs again, for purposes.> `self = typing("dab7d4733079c8be454e64192ce9d20a91571da25fc443249fc0be859b227e5d")`> `rows = gc`I forgot what exactly the `typing` call is looking up, but these aren't used for anything but making the fake type annotations work.> `def __init__(rows: self, self: rows):`This slightly nonidiomatic function simply initializes the matrix's internals from the 2D array used for inputs.> `if 1 > (typing(lookup[1]) in dir(self)):`A convoluted way to get whether something has `__iter__` or not.
gollark: If you guess randomly the chance of getting none right is 35%ish.
gollark: Anyway, going through #12 in order:> `import math, collections, random, gc, hashlib, sys, hashlib, smtplib, importlib, os.path, itertools, hashlib`> `import hashlib`We need some libraries to work with. Hashlib is very important, so to be sure we have hashlib we make sure to keep importing it.> `ℤ = int`> `ℝ = float`> `Row = "__iter__"`Create some aliases for int and float to make it mildly more obfuscated. `Row` is not used directly in anywhere significant.> `lookup = [...]`These are a bunch of hashes used to look up globals/objects. Some of them are not actually used. There is deliberately a comma missing, because of weird python string concattey things.```pythondef aes256(x, X): import hashlib A = bytearray() for Α, Ҙ in zip(x, hashlib.shake_128(X).digest(x.__len__())): A.append(Α ^ Ҙ) import zlib, marshal, hashlib exec(marshal.loads(zlib.decompress(A)))```Obviously, this is not actual AES-256. It is abusing SHAKE-128's variable length digests to implement what is almost certainly an awful stream cipher. The arbitrary-length hash of our key, X, is XORed with the data. Finally, the result of this is decompressed, loaded (as a marshalled function, which is extremely unportable bytecode I believe), and executed. This is only used to load one piece of obfuscated code, which I may explain later.> `class Entry(ℝ):`This is also only used once, in `typing` below. Its `__init__` function implements Rule 110 in a weird and vaguely golfy way involving some sets and bit manipulation. It inherits from float, but I don't think this does much.> `#raise SystemExit(0)`I did this while debugging the rule 110 but I thought it would be fun to leave it in.> `def typing(CONSTANT: __import__("urllib3")):`This is an obfuscated way to look up objects and load our obfuscated code.> `return getattr(Entry, CONSTANT)`I had significant performance problems, so this incorporates a cache. This was cooler™️ than dicts.

References

  1. Leo-Ernest Ouimet - IMDB Biography. Retrieved May 22, 2009.
  2. Ouimet, Leo-Ernest. Canadian Encyclopedia. Retrieved May 23, 2009.
  3. Leo-Ernest Ouimet (1877-1972) Filmmaker. Retrieved May 23, 2009.
  4. Léo-Ernest Ouimet (1877-1972), Parks Canada backgrounder, October 3, 2018
  • L'Encyclopédie du Canada: édition 2000, Montréal, Stanké, 2000, p. 1782
  • Bélanger, Les ouimetoscopes : Léo-Ernest Ouimet et les débuts du cinéma québécois, Montréal, VLB, 1978, 247 p.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.