Simon Bull

Simon Bull (born March 6, 1958) is an English-born artist living in America.[1]

Early years and education

Simon Bull was born in Bedfordshire, England, the second of four children. His father, Ian Bull served as an officer in the Royal Army Chaplains' Department of the British Army. Ian's extensive military postings stationed the family around the world in Guyana, Hong Kong, Germany, and Northern Ireland. Simon went to boarding school in Yorkshire, attending Ripon Cathedral Choir School from 1965 to 1969 and in Surrey, at the Royal Russell School from 1969 to 1976. In 1976 he took a one-year Foundation course at Gloucestershire College of Art and Design and went on to graduate in 1980 from Leeds Polytechnic with a BA (Hons) degree in Fine Art. He studied printmaking and Fine Art under Norman Webster and Norman Ackroyd RA. His time at Leeds was marked by his interest in and study of the masters, such as Henri Fantin-Latour, Jean-Baptiste-Siméon Chardin, and Rembrandt; he wrote his dissertation on watercolorist John Sell Cotman. In his graduating year he exhibited his etching “Jackie” at the Royal Academy Summer Exhibition and his works were acquired by Leeds City Art Gallery.

Career

His art is currently represented exclusively, by his own company Simon Bull Studios of Carmel CA and MEUSE gallery on Carmel's Ocean Avenue. Simon Bull Studios contracts with and supplies a network of fine art galleries around the world including Cutter & Cutter Fine Art, Park West Gallery and others. He has been represented in the UK by, London Contemporary Art and DeMontfort Fine Art; as well as in the USA with Media Arts Group. His worldwide licensing agent is Art Brands Group.

In 2007 he was invited to create a series of paintings that celebrated the life of Muhammad Ali. Many of these works are now on permanent display in the Muhammad Ali Center in Louisville, Kentucky. He has spoken on behalf of the Muhammad Ali Center at the Vancouver Film Festival for the premiere of the movie Facing Ali.

In 2009 he was commissioned to paint US President Barack Obama by boxing legend Muhammad Ali. His two joint portraits of Barack Obama and Muhammad Ali were unveiled at the Kentucky Bluegrass Ball on the eve of the Presidential Inauguration in Washington DC by actress Ashley Judd[2]

Awards

Bull received multiple National Association of Limited Edition Dealers awards [3] for Graphic Print/Lithograph of the Year. In 2003 he became the first British artist to win the NALED award for his print "The Journey Never Ends", and again in 2004 for "Bird of Paradise". He was also honored in 2004 with the NALED Medal of Honor [4] for artistic services to the limited edition industry.

In 2002 he was selected along with fellow artists Thomas Kinkade and Howard Behrens to commemorate the 2002 Salt Lake City Winter Olympics. These works were unveiled at an event in New York City in the Spring of 2002 by Donald Trump.

In 2000 he won the British Fine Art Trade Guild's Artist Print Award for the top selling original print artist in Great Britain. He was also short listed for the Fine Art Trade Guild's Best Selling Published Artist Award in 1997 and again 2000.

Life

He immigrated to the US in 2003. He currently lives and paints from his studio in the Monterey Bay area of California. He became an American Citizen in 2011.

gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.
gollark: * desired

References

  1. "Ali salutes Obama at inaugural soiree". NBC Sports. 19 January 2009. Archived from the original on 11 October 2012. Retrieved 6 April 2011.
  2. http://www.cbsnews.com/2100-207_162-4738042.html
  3. Art Business News;Aug2004, Vol. 31 Issue 8, p14
  4. Art Business News;Aug2004, Vol. 31 Issue 8, p14
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.