Amy Parent

Hi, I’m Amy Alex Parent! By day, I study cloud evolution in brown dwarfs at Abertay University. By night, I get bruises skating with Dundee Roller Derby, tell computers what to do and make video games 👩🏼‍🚀👩🏼‍💻

Simulating Spacecraft Reentry

After years of development, the first Crew Dragon reached the International Space Station on Sunday (this spacecraft is gorgeous!) and is coming back to land tomorrow, off the coast of Florida. Discussing the reentry on twitter with a couple of folks yesterday, I came across an interesting question: do we know how long before splashdown Dragon will fly over which parts of the world?

If you work at SpaceX or NASA, the answer is (I hope) yes. Since I don’t work for either, I spent the evening trying to program a (simplistic) reentry simulation to find out for myself. I’d done that years ago but the physics and code were pretty appalling, so I started from scratch.

Crew Dragon Reentry Trajectory

continue reading →

Transition & Marina

Marina's Love+Fear album

Transitioning is an altogether weird experience. I’m just over two years in, and there are still things I discover every day. About my body, about the effects hormones have on it – I now have a waist and hips, apparently! – but also about things I realise I was never taught because I wasn’t raised as a girl – the politics of going home alone at night – or the thousands little things that I now know were pretty good signs that I was never a boy.

There’s me wondering at eight why my shoes weren’t making that clacky noise that heels make. Me in high school, feeling excluded when I didn’t have any period stories to complain about with my friends, who were mostly girls. Another one I’ve picked up on recently is Marina (and the Diamonds).

continue reading →

PKN Dundee - Transition and Roller Skates

PKN22, slides 5 to 8

Last Tuesday, Creative Dundee invited me to speak at Pecha Kucha Night volume 22. I decided to talk about my transition, and how learning to play roller derby with the wonderful people from DRD has helped me accept myself. The talk felt too personal to use powerpoint (and I didn’t really have the pictures I wanted to illustrate what I was saying) so I drew my slides instead. It was really fun to take a bunch of hours doing nothing but art for once, and I’m really proud of how the slides (and the talk!) turned out.

Drawing a slide for PKN22

I used a mix of physical and digital techniques, which was a first for me: I drew the linearts with pencil and then marker pen on paper, then photographed them, burnt the exposure to make sure the whites were white, and then coloured everything using my old Wacom tablet and Pixelmator Pro. I’ve made a collage of the slides below, you can download the full images there, and I’ll add the video of the talk once it’s available online

continue reading →

To Abertay University

A few days ago, Dr. Waiton, lecturer at Abertay University, published a vile transphobic opinion piece in The Herald Scotland. Abertay’s support was an important part of my early transition, and this goes against the university’s stance of acceptance of LGBT+ students and staff. Here’s the comments I’ve sent as a complaint to the university. If you are in any way touched by this issue, please send your comments as well to the Abertay SA, and take the time to sign the LGBT+ society’s petition asking the university to put in place a zero-tolerance policy on discriminatory speech.

To Abertay leadership: while you may think a lecturer’s personal “opinion” (hate speech) does not reflect your stance on inclusivity, this will reflect on the university, and this will impact transgender and gender non-conforming students and staff. Please do not let it pass.

warning: this contains references to transphobic comments that might upset you. Please only click through if you feel up to dealing with such language

continue reading →

Syntax Trees and C

So as I mentioned in the last entry, I’m at the stage where the parser for orbit is working – not complete, but complete enough that it parses a file properly, and that it provides a good framework to which I can add a feature or two add whenever I have a few hours available to work on Orbit. That’s pretty cool in and of itself.

So after the parser comes the semantic analyser, optimiser and code generator. In the first compiler I wrote (palc, for a the Language & Compilers class), semantic analysis and code generation calls were done inline, in each of the parser’s recognisers. I considered doing this for Orbit too, because it’s simple.

The problem with that approach is that it’s not exactly flexible. Since bytecode is generated as the parser goes down the file, you can’t exactly play with the bytecode structure, so optimisation goes out of the window. It’s also not extensible, since everything is called from the parser. So instead, I’m going to do it using an Abstract Syntax Tree (AST).

continue reading →

Orbit's VM & Parser

So between the end of fourth year, my summer job and now gearing for my PhD, I haven’t had much time to work on Orbit, even less write about it. That’s not great, since the changes I’ve made over eight months are fairly significant once you add all of them up, and I have little record of the development, save for the git history.

I thought I’d at least do a quick recap here, before I can go back to (hopefully) more regular posts about the many wonderful horrors of compiler building I’m discovering!

continue reading →

Return of the Function Call

I have discussed function invocation in Orbit before, but then it was all about resolving functions and handing control. This part is (I think) done. like I’d said last time, I’ve gone with a hybrid message/direct dispatch system. On first invocation, the function is resolved by name, in a hashmap. The bytecode is then doctored so that future invocations are just a matter of following a pointer to the function’s bytecode (code on github).

Calling Convention

Something I need to think about now is how I do parameter passing and local variables. OrbitVM is stack-based, so parameters must be passed, well, on the stack.

continue reading →

OrbitVM Execution

So I now have the beginning of a type system (need to write about this) and a garbage collector for Orbit, which means I need to start thinking about how bytecode actually runs.

I want to have system close to java’s, where the machine takes in compiled object files that contain the bytecode for a script, along with the constant pool and user-defined type. That’s step 1.

Where it gets a bit less clear to me is what happens when I want to start running the newly loaded module (let’s call it a module). Ideally, it’s a call to orbit_run(OrbitVM* vm, VMModule* module, const char* signature). So in order to have that, I have to do a few things.

continue reading →