Letter to my MP

Blimey, I haven’t used this blog in ages. Anyway, mainly for a couple of friends, here’s the content of the letter I wrote to my MP recently to support trans kids. Welcome to use it, but you’ll probably need to adapt it quite a bit if your MP isn’t as good as mine. My MP is pictured here so I’m pretty sure she’s one of the good ones.


Dear Ms Cadbury,

Firstly, my congratulations on your well deserved win this general election. It was a delight to be able to vote for you again, and a joy to see you re-elected.

I’m writing to you concerning the healthcare of transgender children. Previously writing to you on transgender issues you’ve always replied positively and thoughtfully, and I’ve appreciated your work on this in the past. Your letter to Liz Truss on the conversion therapy ban was outstanding and it was a real source of happiness and inspirational to see you meeting young trans people just over a year ago to listen to them. 

Several events recently cause me to write to you again today. It upset me to see transgender rights weaponised by the Conservative Party this campaign, and I found it horrifying to see the previous government ban puberty blockers for trans children with little to no discussion, following the Cass Review and just before the dissolution of the previous parliament.

The Good Law Project has highlighted the impact this sort of ban has had. In the seven years before access to puberty blockers was restricted following the Bell case, they state that one person using Gender Identity Development Services lost their life. Since then, in the following three years, sixteen have. 

https://goodlawproject.org/rise-of-deaths-young-trans-people

While it isn’t clear how many of these deaths are suicides, the sharp rise and the known risks to transgender children and adults’ mental health when lacking gender affirming care makes it desperately concerning to me.

During the election campaign I also witnessed trans youths coming down from an occupation of a ledge at the headquarters of the NHS. Their words were inspiring, but they spoke of how desperate their circumstances were. One stated that they felt safer on the high and narrow ledge for several days than they did on NHS waiting lists for gender affirming care.

https://www.instagram.com/p/C9CD6zBC49f/ https://transkidsdeservebetter.org/about

I really hope the new government will listen to their concerns and meet their desperately urgent needs. As said by one of the youths, having to wait years for medication to prevent a puberty that would lead to far worse gender dysphoria and irreversible changes they do not wish to undergo is about as helpful as having a nine month waiting list for an abortion.

I’m optimistic and pleased at the appointment of your colleague Bridget Phillipson to the position of Minister for Women and Equalities, and hope this and the change in government overall will make for a rapid reversal of the previous government’s decisions on these matters.

Lastly, on the subject of the Cass Review, I know the transgender community and the LGBTQ+ community that support them more widely were horrified by the nomination of Dr Hilary Cass for a life peerage in the dissolution honours. As the Good Law Project mentioned the review has had a devastating effect. Labour’s past acceptance of the Review was a huge disappointment, with Wes Streeting’s moves to accept the recommendations very saddening to see.

The review has been criticised by WPATH, who said that it “is rooted in the false premise that non-medical alternatives to care will result in less adolescent distress”. A report led by the Law School at Yale, with authors from numerous other institutes including medical schools gives a detailed breakdown of the flaws in the review (https://law.yale.edu/sites/default/files/documents/integrity-project_cass-response.pdf) as does a second academic study led by the University of Galway with substantial contributions from UK academics and doctors (https://osf.io/preprints/osf/uhndk).

I feel strongly having read the Cass Review and its criticisms that the flaws in the report should be taken much more seriously by the government and the implementation of its recommendations urgently reconsidered, as transgender children are now facing such disastrous mental health and at huge risk of suicide and self harm, and that the peerage for Dr Cass might be reviewed if possible.

I hope you can raise this with Mr Streeting and other health ministers as soon as possible so that effective healthcare can be returned to these children without delay.

Thank you for taking the time to read my concerns and I hope you will continue to listen to trans youths on this as you have done before, and I’m hugely grateful for the work you continue to do for our constituency and country.

Yours with thanks,

Dr Edd Edmondson

Boxes

Scientists like putting things in boxes. They categorise things a lot. It’s one of those things they do along with measuring things a lot and formulating relationships between things they measure. They do all this to try and figure out things about the world

Someone else who likes boxes

Some people seem to be a bit overly obsessed with this at the moment, and I wanted to post something about why I think scientists categorise things a lot.

Sometimes categorising things works really really well. Particle physics springs to mind. When a particle physicist sees an electron it looks exactly like all the other electrons, and it is easy to say ‘that particle fits in the category of electrons’.

In my old research area of astronomy it’s not always so clear cut, but most of the time it works well. You can look at a large collection of stars on its own and say ‘That’s a galaxy!’.

You can look at one object made up of a lot of stars and see that it shares a lot of things in common with another with a lot of stars, and say they’re both galaxies. You can subcategorise things into ellipticals, and spirals, and irregulars, and lenticulars, just as Hubble did and a lot of the time it’s nice and easy and helps you do your research.

Sometimes things don’t fit well into one box or another. A galaxy might be on the edge of one of those things or another. Or it might be a large collection of stars that’s not categorised as a galaxy. Or two galaxies have smashed together and you can’t decide quite if they’ve finished doing that and are still two galaxies or if they’re now one.

Sometimes even particle physicists find that some particle shows up that looks exactly like an electron, but weighs too much. They might make a new box for those particles and call them muons or tau particles, and have a bigger box for the collection of particles that includes them.

I think the reason we like to put things in boxes like this in science is that it makes it really easy to spot when something new and interesting comes along (like a muon, or a peculiarly lightweight galaxy or whatever) – an opportunity to learn something new about the world, and encourage you to rethink the way you’ve boxed things up. When something comes along that doesn’t fit neatly in your box, it’s a sign you should maybe change the way you’re thinking about things (because it is a box you created, even if things in nature have a propensity to climb into it, like the little guy pictured above). The boxes are not a ‘scientific fact’. The things you observe are, whether they fit neatly in your boxes or not.

It’s also ok I think to have more than one way to box things up, more than one way to define something, and sometimes you can sensibly reuse labels when the definitions broadly encompass the same collection of things. Even ‘alive’ and ‘dead’ as categories are sometimes not exactly defined, but we keep reusing those terms in all sorts of contexts despite definitions that sometimes has a thing classed as alive, and sometimes as dead. And that’s ok.

You can use different definitions at different times, as long as if you’re doing science you’re careful and you’re trying to learn new things about the universe, and as long as if you’re doing something else you think about why your chosen categorisations might be helpful, and (as you should when doing anything else) you’re kind and respectful to people and listen to them especially when they’re affected by what you’re doing, and try to make the world a little bit better. Or something like that. I’ve not terribly well defined that either, and that’s ok.

I think you probably know what I’m talking about.

I may not have worded things as best as I might, and comments are open, but comments may also be unceremoniously deleted if they don’t do the kind and respectful thing.

Tensorflow 1.8 on CentOS 6

edit: I now recommend you use Singularity to get Tensorflow up in an Ubuntu 16 LTS image.

Following on from more manual instructions posted before, just a quick mention that to install Tensorflow 1.8 on CentOS 6, or presumably RHEL 6 and such there’s a semi-automatic script here on GitHub.

You can run this, and it’ll download dependencies, finish patching up the source and give you instructions on finishing the last few steps yourself to get a .whl file you can go and install with pip.

Installing Tensorflow 1.7.0 on CentOS 6

Tensorflow is a continuous pain to get working on any Linux other than a recent Ubuntu. Unfortunately most of my production systems are on some variant of CentOS 6…

Here’s what I currently do to get Tensorflow 1.7.0 working on it. These instructions are brief and not absolutely step by step, but you can probably figure out what to do from them, and certainly I should be able to look back at these notes and figure out what I was doing. I’m not going to do things like explicitly tell you when to cd or mkdir a new place to drop things in. There aren’t proper patchfiles. These are scribbled notes as I went along getting bits from various links around the place.

  1. Download source and install to some –prefix=/location a recent binutils – 2.30 at time of writing
  2. Download source and install to some –prefix=/location a recent GCC (I used 7.3.0 initially but CUDA doesn’t like GCC 6 or later, so you probably want a v5.4.0 compiler, but not v5.5 or later as that breaks stuff too! v4.9.4 didn’t work so just go with v5.4.0!) – note also there’s some references below to 7.3.0 which I’m too lazy to fix.
  3. yum install java-1.8.0-openjdk-devel
  4. Grab a suitably new Python (I used an Anaconda installation)
  5. Get bazel (I used v0.11.1) – make sure it’s the -dist.zip download
    Unpack bazel
  6. Patch bazel – in tools/cpp/unix_cc_configure.bzl comment out
    “-B/usr/bin”,
    – it’ll be prefixed by a comment like
    # Always have -B/usr/bin, see https://github.com/bazelbuild/bazel/issues/760.
    which is totally rubbish, as that very link will tell you in one of the github comments.
  7. Set $PATH to add python, gcc, and binutils bin locations. Set $INCLUDE to add gcc and binutils include location. Set $LD_LIBRARY_PATH and LIBRARY_PATH to add gcc lib64 location and binutils lib location. Set $JAVA_HOME to /usr/lib/jvm/java-1.8.0.
  8. Backup if wanted, then rm -rf ~/.cache and mkdir /tmp/someplace and ln -s /tmp/someplace ~/.cache (prevents NFS headaches with bazel)
  9. In bazelsrc directory do ./compile.sh, then copy resulting output/bazel somewhere and add that somewhere to $PATH
  10. git clone https://github.com/tensorflow/tensorflow.git
    (and checkout a specific version if wanted)
  11. Patch tensorflow –
    1. tensorflow/tensorflow.bzl:
      def tf_extension_linkopts():
      
       return ["-lrt"] # No extension link opts

      (add “-lrt” inside []s)

      def tf_cc_shared_object(
      
       name,
      
       srcs=[],
      
       deps=[],
      
       linkopts=["-lrt"],

      (ditto)

       args += [src.path]
      
       outputs = [ctx.outputs.cc_out, ctx.outputs.py_out]
      
       ctx.action(
      
      use_default_shell_env = True,
      
       executable=ctx.executable._swig,
      
       arguments=args,

      (adding use_default_shell_env=True,)

    2. tensorflow/third_party/gpus/crosstool/CROSSTOOL_clang.tpl, tensorflow/third_party/gpus/crosstool/CROSSTOOL_nvcc.tpl, tensorflow/third_party/sycl/crosstool/CROSSTOOL.tpl, tensorflow/third_party/toolchains/cpus/arm/CROSSTOOL.tpl, tensorflow/third_party/toolchains/gpus/crosstool/CROSSTOOL,
      change “-B/usr/bin” to “-B/path/to/binutils/bin”
    3. tensorflow/third_party/gpus/crosstool/CROSSTOOL_nvcc.tpl
      change
      linker_flag: “-Wl,-no-as-needed”
      to
      linker_flag: “-Wl,-R/share/apps/gnu/gcc/7.3.0/lib64,-no-as-needed”
      Change /usr/bin paths for ar, compat-ld, ld, nm, objcopy, objdump, strip to installed binutils and cpp to installed gcc
      After
      cxx_builtin_include_directory: “/”
      add
      cxx_builtin_include_directory: “/path/to/gcc/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include”
      cxx_builtin_include_directory: “/path/to/gcc/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include-fixed”
      cxx_builtin_include_directory: “/path/to/include/c++/7.3.0”
  12. Configure tensorflow – most defaults should be ok especially if it picks your python up correctly. Notable exception – answer no to jemalloc question.
  13. bazel build –config=opt //tensorflow/tools/pip_package:build_pip_package may also need –config=cuda
  14. bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
  15. Find .whl file in /tmp/tensorflow_pkg, copy it somewhere safe and pip install tensorflow-….longname.whl

Note – –verbose_failures is a useful flag at the bazel build stage.

(You can comment below but I’m unlikely to offer much help. I’ve had enough of this.)