lochsh's comments

lochsh | 3 years ago | on: Ask HN: Who is hiring? (November 2022)

Oxford Ionics | Senior Software Engineer | UK hybrid up to 4 days remote/1 day in office | Full time

Oxford Ionics are a quantum computing start-up building trapped-ion quantum computers. We're using Python and Rust to build our technology stack, which includes a custom optimising compiler for quantum circuits. Come join our growing team of engineers and scientists!

https://oxfordionics.bamboohr.com/jobs/view.php?id=32

lochsh | 4 years ago | on: Ask HN: Who is hiring? (September 2021)

Oxford Ionics | Embedded Software Engineers and Compiler Engineers | Full Time | ONSITE, HYBRID (Oxford, UK) | Quantum computing

Oxford Ionics is a small quantum computing start-up in Oxford, UK. We're looking for smart, motivated software engineers to join our growing team of engineers and scientists.

Rust | Python | FPGAs | qubits

This is a rare opportunity for a potentially really varied role, with the ability to make a big impact early on in the company's development. See links below for details

https://www.oxionics.com/careers

https://www.oxionics.com/software-engineer-embedded

https://www.oxionics.com/software-engineer-compiler

lochsh | 5 years ago | on: Designing a RISC-V CPU, Part 1: Learning hardware design as a software engineer

I've had this recommended and it looks v promising! https://vivonomicon.com/2020/04/14/learning-fpga-design-with...

Someone above has mentioned Robert Baruch too: https://github.com/RobertBaruch/nmigen-tutorial

I also found this helpful: http://blog.lambdaconcept.com/doku.php?id=nmigen:tutorial

And there is of course the IRC channel if you want to ask people questions, #nmigen on irc.freenode.net

lochsh | 5 years ago | on: Designing a RISC-V CPU, Part 1: Learning hardware design as a software engineer

I'm hoping to talk about this in the next installment where I actually talk about the design. It's been really interesting getting a feel for how the processes are different. It's something I've been aware of before from talking to hardware engineers, but I think I'm only truly understanding it now that I'm doing it myself :)

lochsh | 5 years ago | on: Why can't I pass std:vector<Child*> as std:vector<Parent*>?

Thanks for bringing up variance -- this is a concept I've since learned about and have added a small update to the blog post about.

I understand your point about the `children_as_parents` example, I've added another update to point out that the mutability of the vector makes it problematic to have the `children` variable.

lochsh | 6 years ago | on: How to flash an LED: writing ARM assembly for an STM32 microcontroller

Thank you for the compliment ^_^ I'm glad you found the post helpful.

This isn't a typo, actually. If you look at the documentation of the BSRR register (which is screenshotted in the blog post), it says of BRy:

> These bits are write-only [...] [Setting to 1] Resets the corresponding ODRx bit

So setting BR8 in the BSRR clears the ORD8 bit in the output data register. Because our LED is active low, this turns the LED on.

The indirection can make this a little confusing, I hope this cleans it up!

lochsh | 6 years ago | on: How to flash an LED: writing ARM assembly for an STM32 microcontroller

I don't have experience with this, but from talking to people who do, there are indeed open source implementations. They say the documentation is a bit confusing, but it does describe everything.

This Rust library is an abstract USB library that can implement CDC serial https://docs.rs/usb-device/0.2.5/usb_device/, and this library connects it to the STM32 USB peripheral https://github.com/stm32-rs/stm32-usbd

Examples here: https://github.com/stm32-rs/stm32-usbd-examples

lochsh | 6 years ago | on: C++ is not a superset of C

I've made some updates to the blog post based on feedback -- thank you everyone who pointed out mistakes helpfully :)

I've made the updates clear, and linked to the archived version of the original post.

lochsh | 6 years ago | on: C++ is not a superset of C

I haven't been able to find anything in the C11 standard about the initialisation of bar being a constraint violation. In 6.7.3, the only constraints for type qualifiers listed are for _Atomic and restrict. Could you let me know where you got the information you talk about here from? I could be missing part of the standard.
page 1