John Monks

John Stephen Monks, Baron Monks (born 5 August 1945) is a Labour Co-operative member of the House of Lords and former trade unionist leader, who served as the General Secretary of the Trades Union Congress (TUC) in the UK from 1993 until 2003. He also served as the General Secretary of the European Trade Union Confederation (ETUC) from 2007 until 2011, having been made a Life peer in 2010.


The Lord Monks
Member of the House of Lords
Assumed office
11 October 2010
General Secretary of the Trades Union Congress
In office
1993–2003
Preceded byNorman Willis
Succeeded byBrendan Barber
Deputy General Secretary of the Trades Union Congress
In office
1987–1993
Preceded byKenneth Graham
Succeeded byBrendan Barber
Personal details
Born (1945-08-05) 5 August 1945
Blackley, Manchester, England
NationalityBritish
Political partyLabour and Co-operative
Alma materUniversity of Nottingham

Early life

Monks was born in Blackley, Manchester, and educated at Ducie Technical School in Moss Side. He studied Economic History at the University of Nottingham.

Career

From 1967 to 1969, he was a management trainee and junior manager with Plessey in Surrey.

TUC

He joined the TUC in 1969 and by 1977 was the head of the Organisation and Industrial Relations Department, and the Deputy General Secretary in 1987, leading to his election in 1993 as General Secretary.[1]

ETUC

He was General Secretary of the European Trade Union Confederation, based in Brussels, between 2003 and 2011.[1]

Other Interests

Monks has also sat on numerous other bodies, including Acas from 1979 until 1995. In 2000, he agreed to chair the Co-operative Commission, reporting in 2001 with recommendations for the co-operative movement. He was also President of the British Airline Pilots Association. He was a non-executive director of Thompsons Solicitors between 2010 and 2019 and was a visiting professor at the University of Manchester. He is a vice – president of Justice for Colombia and of the Smith Institute, and President of the Involvement and Participation Association. Monks has honorary degrees from the universities of Nottingham, Salford, Manchester(UMIST), Cranfield, Cardiff, Southampton, Kingston and the Open University. He is also a Fellow of the City and Guilds of London Institute.

House of Lords

He took his seat in the House of Lords on 11 October 2010, having been created a life peer on 26 July 2010 as Baron Monks, of Blackley in the County of Greater Manchester.[2][3]

In August 2014, Monks was one of 200 public figures who were signatories to a letter to The Guardian opposing Scottish independence in the run-up to September's referendum on that issue.[4]

He was appointed a Chevalier of the Légion d'Honneur (2014).

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. Stevenson, Alexander (2013). The Public Sector: Managing The Unmanageable. ISBN 978-0-7494-6777-7.
  2. "No. 59502". The London Gazette. 29 July 2010. p. 14515.
  3. Biography Lord Monks Archived 27 December 2010 at the Wayback Machine – official website of the UK Parliament
  4. "Celebrities' open letter to Scotland – full text and list of signatories | Politics". The Guardian. 7 August 2014. Retrieved 26 August 2014.
Trade union offices
Preceded by
Kenneth Graham
Deputy General Secretary of the TUC
1987–1993
Succeeded by
Brendan Barber
Preceded by
Norman Willis
General Secretary of the TUC
1993–2003
Succeeded by
Brendan Barber
Preceded by
Emilio Gabaglio
General Secretary of the ETUC
2003–2011
Succeeded by
Bernadette Ségol
Orders of precedence in the United Kingdom
Preceded by
The Lord Browne of Ladyton
Gentlemen
Baron Monks
Followed by
The Lord Hennessy of Nympsfield
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.