At CascadiaJS my friend Nick Niemeir gave a talk about how he ended up reinventing some wheels for a project a work. He went further to say that everyone should feel encouraged to go forth and reinvent. It is more than just learning. Sometimes you build something better, whether that is better for you or better for the more general case.
I’ve recently started picking up Rust. It is an interesting programming language with concurrency as first a first class citizen. It has borrowed from several languages to make that happen and it is quite enjoyable. If something I’m building is just for myself, I will likely write it in rust.
So, lets combine the first and second paragraphs. I’m finding that there is a fair amount of technology that is interesting to me, that I have never written one of. Last weekend I started in on an SMTP server in rust. I already have plans for an AMQP server and as well as a Pub/Sub server. The intent isn’t to come up with something that is better than existing tools. But more understand the problems involved and work through them.
I start out with grand plans, then I don’t always follow through. With that in mind, I’m going to set a goal to reinvent at least 6 services in the next year. All using rust as their primary language so I can feel it out in various environments. SMTP, AMQP, and Pub/Sub are definite. Other ideas I have, but aren’t solid yet, are an IRC server, monitoring server, DNS server, or maybe a key/value store of some sort.
I’m not the only one venturing into this territory, most inspiring to me is the #infoforcefeed and #stackvm crews on freenode. Between them there is are a lot of folks who’ve already reinventing all sorts of wheels together. I look forward to being more active in my participation in these communities.