308 karma · joined September 26, 2016
We are a young startup building digital twinning solutions for spacecraft validation & verification.
The ideal candidate would have a demonstrated track record with Rust or possibly C++/Haskell/*ML, a passion for space and a background in physics or a related field of engineering.
Please apply at: https://www.linkedin.com/jobs/view/4129163803/ or email us at office@[company name].com
@enumclass
class MyEnum:
class UnitLikeVariant(Variant0Arg): ...
class TupleLikeVariant(Variant2Arg[int, str]): ...
@dataclass
class StructLikeVariant:
foo: float
bar: int
# The following class variable is automatically generated:
#
# type = UnitLikeVariant | TupleLikeVariant | StructLikeVariant
where the `VariantXArg` classes are predefined.I found Hifitime to be very opinionated and give a false sense of security due to its automatic computation of leap seconds based on historical tables. Yes, leap seconds are announced some ~6 month in advance, but what if you don't update regularly the library? Or if you can't because it is deployed on an embedded system?
In the end I wrote my own minimalistic TAI timestamp library [1] and made the conscious decision to let the user take the responsibility to deal with leap seconds in UTC conversion.
If optimizing repeated atomic loads is indeed allowed, waiting for a signal by spinning on an atomic load could loop forever. Yet I have the feeling most people consider such code to be valid. Are they wrong?
[1] http://backreaction.blogspot.com/p/talk-to-physicist_27.html
[2] https://aeon.co/ideas/what-i-learned-as-a-hired-consultant-f...
Even with those gigantic solar arrays, energy management on Juice is extremely challenging. Once in the vicinity of Jupiter, the spacecraft will be powered by less than 4% of the solar flux it receives in earth orbit.
One use case for C is communication with the CPU (remoteproc stuff). We commonly had one PRU handle CPU communication with trivial C code while another PRU on the same PRU subsystem was coded with assembly to handle real-time I/O.
The territorial limitations effectively prevents any form of open distribution, yet the license is open enough to remove most commercial incentive for maintenance and further development: a perfect recipe to make software instant abandonware upon release.
[1] https://essr.esa.int/license/european-space-agency-community...
But more importantly, unlike the various Markdown flavors or AsciiDoc, it is incredibly extensible thanks to the combination of custom filters and the possibility to add HTML classes and attributes. One can write filters to leverage the class/attribute information and perform transformations at the AST level, which basically lets you define a DSL with an arbitrary number of custom elements.
I wrote a collection of filters for the publication of a large online legal playbook. Not only did Pandoc make it possible to introduce different kind of custom elements that don't exist in plain Markdown or AsciiDoc, but by using different filters it was possible to use a single Markdown source to generate both the book and various summaries such as a list of examples, a list of civil code clauses etc. I don't know Haskell that well so I used Rust for the filters, but that worked very well.
Pandoc is IMO a very underrated tool.
Yes, but it is not possible to assert that both are true at the same time with full certainty.
A very common situation is for instance to plug the random number in a log, in which case you need to use log(1-r) rather than log(r) to avoid an infinite at r=0. The problem is, by doing this simple subtraction you have already lost all the subnormal precision.
On modern CPUs, its computational advantage over full-precision mapping methods, such as multiplication by a float, is not always clear [1].
For the multiple-consumer variant, however, consistency between head and tail is required so packing them in the same atomic is the simplest solution.
Many lock-free structures use CAS loops. It would not be lock-free if a consumer pre-empted at the wrong time could prevent other consumers to make progress, but I don't think this is the case here.
These do a bit more though, as they also allow batch stealing operations.
[1] https://github.com/golang/go/blob/master/src/runtime/proc.go...
[2] https://tokio.rs/blog/2019-10-scheduler#a-better-run-queue
It reminded me of a collaboration I had with a small Swiss company that did wonders with electro-discharge machining such as this flexure-based mechanism machined from a single block of aluminium: https://i.imgur.com/PDAVDmJ.jpg
It is what is mentioned in this fragment of the article:
"When power flows into the EmDrive, the engine warms up. This also causes the fastening elements on the scale to warp, causing the scale to move to a new zero point"
Basically, thermal expansion of the thruster and the measurement device causes the rest position of the thrust balance to drift with time, which is hard to differentiate from the actual thrust generated. This is most critical when the thrust-to-weight ratio is low, as is the case here.
https://news.ycombinator.com/item?id=12962579
But then, nobody had Tajmar's perseverance; kudos to his team!