I design software and hardware systems. I've worked on orbital launch vehicles and satellites. I can talk about "space stuff" all day. I design sub-sea ROV systems for fun.
One day hacking on gateware, the next a byte-code interpreter, the next a PCB, the next a Linux kernel driver, etc. I wrote game engines for a time.
I'm recurrently obsessed with artificial general intelligence (Goertzel-like formulations), artificial life, computational behavior (not ML).
Tosol is Sol 800 👀 of the #Mars2020 mission in Jezero, Mars. It's celebration time so here is some rock acrobatics in 3D 😀 !
Processed, cropped MCZ RIGHT + LEFT for cross eyed viewing
FL: 110mm
Sol: 790, RMC: 39.0926, LMST: 09:13:07
Original: https://mars.nasa.gov/mars2020-raw-images/pub/ods/surface/sol/00790/ids/edr/browse/zcam/ZL0_0790_0737060141_318EBY_N0390926ZCAM08813_1100LMJ01.png
Credit: #NASA/JPL-Caltech/ASU/65dBnoise
The motion-blurred twang of the RIME antenna deploying on the JUICE mission is art. And bless them for having engineering cameras. https://www.esa.int/Science_Exploration/Space_Science/Juice/Juice_s_RIME_antenna_breaks_free
Ok, one more, LittleFS uses a software CRC. It's pretty lean, however the library organization is pretty throughful in its organization and it is easy to swap in a hardware-based CRC without forking the main library code. Also recommend you take a look at that if you are trying to squeeze out every drop of performance.
One more note, you definitely want sync() to obey the contract and write any cached blocks out to NVM. That can be a big hit. So, you might also want to stand up some sort of timer ISR or deferred work job to piece-wise flush dirty pages to NVM.
If you are using something like SPI flash which has large blocks, but supports partial reads, I recommend supporting those partial reads in the cache layer (meaning, don't load the entire block on a cache miss)
Caching the current whole live block improves things significantly but really you will need a random access block cache. If you are doing very basic reads and writes (like log files or something) you will probably only be hitting a small number of meta-data blocks. Caching just four blocks gets you pretty far. Caching eight will cover the most basic access patterns.
I've been using LittleFS (https://github.com/littlefs-project/littlefs) for a few embedded projects and I am fairly happy with it. It's quite straight-forward to implement a backend block device driver for it (ready, program, erase, sync). E.g. a SPI flash or SD/MCC. You can stand something basic up in probably 20-30 minutes.
However, you will want to implement your own block-level caching to get good performance out of it. It is quite "chatty" when it comes to hitting the meta-data blocks.
I just finished reading When The Heavens Went on Sale. I guess I partly hoped the Astra section might be a fun tale of wacky hijinks, but mostly it captured the monotony. And, really, it was monotonous, and a grind.
Working in that environment (Orion) was intensely weird in a way not captured in the book. We joked that we were actually just part of some social experiment. This week there's a single shared bathroom. Next week there are no bathrooms. It's 98F inside. Next month it's frigid.
Okay this is pretty unhinged, a custom PCI-Express x4 card that uses FPGA-s to trick a NAND flash memory controller into thinking the 256 DDR3 memory chips it is wired up to are actual NAND flash, and what you get as a result is a 1TB volatile "hard drive" that can saturate PCI-Express link speed.
Local #SFBayArea folks! Ok, I’m downsizing, which means acknowledging I won’t be completing some past projects. Like making my own #telescope. 🔭 Which means this 8” partially ground mirror blank in excellent condition is up for grabs, along with the grinding plate. You can take it over to the telescope makers workshop at Chabot for instructions, measurements, and help.
Locals only; requires pick up in #Berkeley.
eastbayastro.org/events/
sensor networks, embedded systems, space engineering. he/him. CS/EE. Will mentor freely via DMs. Center for Advancing Chronotype Awareness. Unresolved marching band issues.