Hey Team, hope everyone's week was good! I had a good week and hope everyone did too. Today I have a quick thought about static typing and the tools they enable. But first some updates from this week!
This Week
Stream Backlog Update
Last week I talked about how I'd recently been able to have some GPT models write titles and descriptions for all my old stream videos. And this week I've been working on uploading as many as.
I can upload about six videos a day before I hit my un-approved apps Youtube upload limit, so I'll be slowly releasing these for a bit.
But I was super surprised that one of the videos in particular got picked up by the Youtube algorithm. Nothing crazy for bigger channels, but by far my most viewed video with about 550 views so far! Which feels pretty good for an un-edited stream that got uploaded in bulk.
This is the video that is doing well is titled Rust Programming: Removing Background from Videos Using AI | Coreyja Live Stream and as with all of these was generated by OpenAI.
I think background removal and AI are a popular topic so I think I'll revisit that on a stream soon! Especially with candle by HuggingFace just being released, which is a Rust framework to deploy ml models and they provide examples of whisper and llama 2.
RustConf Presentation
I don't want to talk too much about my presentation but I've been working on that in recent weeks and wrapping it mostly up this week. I'm definitely a bit nervous, but really excited to share my Battlesnake and Rust journey with everyone soon! That's happening Sept 12-15 and I'll be sure to share the recorded video with everyone once it released.
Corey's Ramblings
Why I Like Rust - Let the Computer Help
This week, I have a quick thought about why I like Rust. But it's more about enjoying static types and the tooling that comes with them.
I've always been a fan of automated testing. Instead of manually testing my app every time I make changes, I'd write a test I can run repeatedly. Now, the computer can help me. It can even run the rests for me each time I make a change. I put in a little effort up front, but then the computer did most of the work going forward.
Back in Ruby, I'd even write what I'd call 'meta' tests to check that the Ruby classes followed some convention. Looking back, this is the start of a really simple type system.
But 'real' type systems like Rust are way more powerful than that. And one of my favorite parts is the better tooling. Language servers, as an example, in editors can do way more refactoring, auto-completing, and general awesomeness in statically typed languages. Even with Sorbet (a type checker layered on top of Ruby), the language server features are far from as advanced as in Rust or Typescript. Statically typed languages give the computer the power to help you in ways that aren't possible in a language like Ruby. In Rust, the compiler knows the fields of a struct and autocomplete their names. Or, if you call a function, the editor will know for a fact if it exists or not and even offer to import it when it exists elsewhere. VS Code will show me the compiler errors inline as I type. No more context switching to run tests to catch even the simplest typos in a function name.
I didn't think this would be as big a deal as it was, but it was a game-changer. Now I miss it every time I write Ruby.
I'm excited about even more improvements in language servers. And I will use more techniques and languages that let the computer help me out in the future.