You’ve probably followed that clickbait of a title and are hoping for some super-secret tips on how to be a ‘Rockstar developer’, and I’m not going to disappoint on that (technically). But before that, I’m going to note to those of you lucky enough to have not seen that particular variety of recruiter spam that the whole idea of a ‘Rockstar developer’ in general is just junk. Don’t just take my opinion on this: read lots of other articles. (See also ‘ninja developer’, unless maybe they’re talking about the Java framework, or they’ve been former tourist guides in Japan)
Introducing Rockstar – a proposal for a Turing-complete programming language in which you can write programs that are also 1980s power ballads. https://t.co/E9ggfFkbQE
— Dylan Beattie 🇪🇺 (@dylanbeattie) July 21, 2018
I’ve been hacking together my own implementation in Rust. It’s called Maiden (after the band), and leans heavily on the nom library. Nom is a ‘parser combinator’ library (make little functions that parse one thing and combine them together) and basically is as incredibly usable as it is because of the macro support in Rust, which is absolutely astounding. Most people tend to fall into two camps about macros, depending on whether you’ve written C more recently (in which case they’re kinda ugly, but useful for some things) or a Lisp (in which case they’re vital, if complicated).
Rust’s macros are interesting because they operate at compile time to generate new Rust code, but after that it behaves like everything else, which means you get all the compile-time safety that Rust is renowned for. The macros are actually even better than that from a safety perspective as they’re “hygienic macros” which means they don’t accidentally clash with the variables you’ve used in the code they’re embedded in.
Right now Maiden will run both versions of Fizzbuzz in the Rockstar examples (in both ‘minimalist programmer’ and ‘power ballad’ styles), and I think that’s enough to get me a ‘certified rockstar developer’ sticker whenever a design is agreed on. The spec is under pretty lively revision at the moment (because apparently people have Opinions about song lyrics), and I’ll be continuing to add more support for things as it evolves.