New week, new Rust! What are you folks up to?
Had some bugs logged against
elastic that made me realise just how terrible my error handling and logging really is. So I’m sketching out a plan to improve that.
I’ve got a PR in
reqwest that I need to get stuck back into, so will do that this week.
There’s always more libz blitz to support so will try keep on top of that. Feel free to give me a hand, there are lots of contribution opportunities in that thread
Also working on a super-secret-squirrel project (not commercial, but still super-secret) that I’ll put up on GitHub in the next few months.
I have been drafting up this idea where you say any guitar chord to the program and it’ll tell you all partial chord combinations. It’s really relevant to me because I’m starting to learn guitar and I wanted for a more theoretical dive on the subject. I’ll start investigating tomorrow. I should be reading up math papers by now… Combinatorics, Music Theory, etc. and I don’t have any Rust experience yet, so I’ll ask a lot about the language in the forum.
Earlier in July, I made this program that generates Mother’s Day letters for my mom. I bundle a pool of “bags” of paragraphs with the program. I do it when I compile it. When the program is executed it randomly picks a paragraph from each bag provided. Then it arranges a document. One of the main goals was place predefined order on the bags so I’d read more like human-written than purely machine-generated.
Although it was originally for Mother’s Day, I fixed the program for Fa-ther’s Day, too. I would use the same program with a different message pool this Christmas. But I didn’t give it to my parents. One thing was it’s generally awkward to give someone an executable file through email. Secondly the generated message rarely made sense (). Thirdly I originally intended to automatically upload the document to my Google Drive storage as a beau-tiful Google Docs document. It didn’t work because Google didn’t like the idea of automatic sign-in. I spent so much time just to realize that. So instead I stuck to using Notepad on the local computer. So it didn’t look so gor-geous as I wanted it to be.
Good night from Washington State
I’ve been dogfooding my command-line mpv + youtube-based music player for a while now: surge
Just added the
share feature (to give you the youtube URL to share).
Found the key to resolving a longstanding OSX-specific CI freeze of spmc-buffer. Actually, the origin was kind of interesting, I think I got it now but perhaps someone more familiar with OSX internals will be able to enlighten me.
The test ran on three threads, and depended on all three threads making progress in order to terminate. From the Travis CI doc, their OSX VMs are supposed to have only two virtual CPU cores, which could indeed be problematic (if unlikely to be encountered in practice now that almost every CPU on the market comes with 4 threads). What puzzles me, though, is that one of the threads ran yield() statements when it could not progress in order to give other threads a chance to run.
My understanding is thus that…
- Either thread::yield() statements from the Rust stdlib never reach the OSX scheduler, or it does not care about them.
- In the absence of (honored) yield statements, the OSX scheduler either does not switch between threads spontaneously, or has a very long scheduling quantum.
In the end, I worked around the problem by modifying the test so that only two threads need to make progress for it to terminate.
Aside from that, still playing with procfs sampling. I found a way to get meminfo parsing overhead as low as I like (50% of the time it takes the kernel to produce the file) by realizing that Linux pseudo-files only contain ASCII chars and leveraging that fact in the parsing code. Being able to associate bytes with characters is quite a powerful assumption in practice.
I also started playing with diskstats, and then I discovered that I don’t have a proper strategy in place for handling hotplug yet. So I’m taking the opportunity to clean up the code a bit, and once I’m done with that I will put in place a placeholder “panic on hotplug” strategy as a first step towards real hotplug handling in the future if there is demand.
I think I finally have a proof of concept for thermodynamic temperature and temperature interface in
uom (type-safe zero-cost dimensional analysis), but mostly summer activities!
Working on P&T, my digital tabletop RPG, as always - but finally getting back to more Rust code instead of the Typescript+React code that I have been focusing on for weeks.
Currently I’m implementing “volume conditions” – abilities which can leave a persistent area effect that applies to creatures inside the volume. Think hazards like oil slicks or fires or whatever. I’m finally trying out ncollide’s whole-scene collision detection for this feature, and it seems very nice so far, though it’s always a bit of a struggle to deal with code with tons of generic types.