August 30, 2019
I had the marvelous fortune of being able to attend RustConf 2019 a week ago, and it was a pretty incredible experience. I got to shake hands with Steve Klabnik and Sean Griffin, which made my inner Rust fanboy giggle uncontrollably. But the conference also just had a very cool atmosphere. I've heard it said so many times that the Rust community is welcoming, but that feeling got solidified in seeing the diversity of not just attendees but also the speakers. The talks were pretty great. I can't wait for them to hit Youtube so I can re-watch them, and so I can see the other half of the talks from the conference.
Steve Klabnik is co-author of The Rust Programming Language (a.k.a. "the book"), which is an absolute pleasure to read. There are really good explanations and examples throughout. I'm well overdue for my third full read-through of it. It was awesome to meet him in person and thank him for the work he put into the book.
Sean Griffin has hosted the great podcasts The Bike Shed and The Yak Shave and appeared on a few episodes of New Rustacean. He's also the creator of diesel. I love listening to him on podcasts because he constantly thinks out loud about different programming challenges and discusses them with other folks on the air.
Between going to a few PDX Rust meetups recently and now getting this chance to attend RustConf, my excitement about Rust just keeps growing and growing. For about a month, I've been working on a fun project to implement a Rust introductory tutorial game called Rust Warrior. It's a spiritual successor to Ruby Warrior, which I played many years ago while I was in college. It's been a fun project, and I've learned quite a bit along the way.
One thing I've learned is that Rust is a joy to work with on a real project. I intentionally started the project dead simple, despite having a perfect view of the finished product. One reason for this was that I wanted to leave myself room for taking it in a different direction than its predecessor. But also, each time I wanted to add a new feature it required refactoring, sometimes in non-trivial ways. Each time, I was confidently able to use the compiler to steer me towards successful completion.
This project allowed me to scratch an itch I've had for a while. This is a weird and obscure itch, but I've always wanted to generate one of those gifs of a program demo in a terminal. I was able to accomplish this relatively easily with Terminalizer. Check out the project readme.
While working on this project, I became acquainted with crates.io
and docs.rs. The default behavior of cargo is to publish
your crate (Rust project) to crates.io when you do
cargo publish. In addition to your crate being available there, your
documentation is also automatically made available on docs.rs.
My heightened degree of acquaintance with docs.rs came from me noticing that, after publishing a release to crates.io and checking in regularly... 13 hours later my documentation was still not updated. The docs.rs team is usually fairly responsive in discord, and I was kindly informed that there is a build queue which can sometimes get blocked by crates whose docs take a very long time to build. I have since seen that queue reach a size of over 200 crates, though at this exact moment the queue is empty. I was also told that one aspect of the slowness is that all of the files are uploaded to S3 sequentially. There was some talk about parallelizing the upload, which I offered to implement. At the time of writing this, my pull request is still open, but it's nearly approved and merged! This is an exciting accomplishment because I've been wanting an opportunity to work with async Rust.
One of my favorite talks from RustConf was Ferris Explores Rustc, partly because it was so entertaining (again, I can't wait for this and the other talks to all hit Youtube!); but also because it amplified my desire to contribute to the Rust language and compiler.
For the last several weeks, I have been trying to learn everything I can about
macros because I want to do a presentation at an upcoming PDX Rust
meetup. My notes and slides are here. This feels like a nice warm up
for jumping in to work on the compiler, since procedural macros (formerly known
as compiler extensions) give you a glimpse at some internals of the Rust
language. So my plan is to wrap up this presentation and set sail for the
THANK YOU to everyone at RustConf and everyone in this awesome community.
Totally unrelated to Rust, I recently built my first ever Firefox extension! It is quite simple: it lists all of your open tabs (across all Firefox windows) in a sidebar panel. You can click an item in the list to switch to that tab. I use it constantly because I always have so many tabs open that their titles are truncated down to just a few letters and an ellipsis, so I can't tell which is which. If this is a struggle for you as well, check out Tab List Sidebar.
Some other rad extensions I use: