Robert Main

The Reverend Robert Main (12 July 1808 9 May 1878) was an English astronomer.

Life

Born at Upnor in Kent, he was the eldest son of Thomas Main; Thomas John Main the mathematician was a younger brother. Robert Main attended school in Portsea, Portsmouth before studying mathematics at Queens' College, Cambridge, where he graduated as sixth wrangler in 1834.[1][2] He served for twenty-five years (1835–60) as First Assistant at the Royal Greenwich Observatory, and published numerous articles, particularly on stellar and planetary motion, stellar parallax, and the dimensions and shapes of the planets. From 1841 to 1861 he was successively an honorary secretary, a vice-president, and President of the Royal Astronomical Society, and in 1858 was awarded the Society's Gold Medal. In 1860 he became director of Radcliffe Observatory at Oxford University after the death of Manuel Johnson, and was elected as a Fellow of the Royal Society. He An ordained priest of the Church of England, he preached regularly while living in Greenwich.

Main completed the questionnaire on which Francis Galton based his English Men of Science (1874), and his recorded answers included the following comments:

"I take considerable pains in the investigation of religious matters, one of my amusements being the collection of a considerable theological library, with the books of which I am familiar."
"I am not aware of any innate taste for science... My interest in astronomy, especially, was very small indeed until I was appointed."

Works

Main supervised the third (1859) edition of Sir John Herschel's A Manual of Scientific Enquiry, prepared for the use of Her Majesty's Navy and adapted for travellers in general (1849), which included an article on geology by Charles Darwin. His textbook Practical and Spherical Astronomy was published in 1863. He was responsible for editing the Second Radcliffe Catalogue (1870), which detailed 6,317 stars, and (with Charles Pritchard) Herschel's Catalogue of 10,300 multiple and double stars (1874). He also published observations made of rainfall in Oxford over 25 years from 1851 to 1875, and contributed to the Fortnightly Review during the editorship of G. H. Lewes.

His other works include the annual address for 1875 to the Philosophical Society at the Victoria Institute (entitled Modern Philosophic Scepticism Examined) and a sermon on I Corinthians 1:22-24 given to the British Association for the Advancement of Science in the same year.

Legacy

The lunar crater Main is named after Robert Main, and there is also a crater on Mars named after him.

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.
gollark: The tiebreaker algorithm is vulnerable to any attack against Boris Johnson's Twitter account.
gollark: I can't actually shut them down, as they run on arbitrary google services.

References

  1. Lee, Sidney, ed. (1893). "Main, Thomas John" . Dictionary of National Biography. 35. London: Smith, Elder & Co.
  2. "Main, Robert (MN829R)". A Cambridge Alumni Database. University of Cambridge.
  • V. L. Hilts "A Guide to Francis Galton's English Men of Science" Trans. Amer. Philos. Soc. (New Ser.) 65 (5), 1-85 (1975)
  • B. C. Williams George Eliot; a biography (1936)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.