Back to work
Hi ho! Hi ho! It's back to work I go!
After taking a bit of a break from work, I am officially back into it (I've actually been back into it since July, but been too busy to do a proper blog post). I've decided to try out being an independent contractor/consultant. I'm offering software engineering services/team augmentation, advice and assistance on how to adopt Rust or use Rust more effectively, and training (courses and coaching) on Rust-related topics. I have immediate availability for coaching and advisory consulting, and availability for larger projects from early October.
If you're interested in any of my services or courses, or would like to hire me, get in touch via email. If you would like to get updates on new courses, availability, etc. you can join my (very low volume) mailing list.
I'm not actively looking for a permanent role at the moment, but if you're happy to work with a flexible schedule, are doing interesting work in the databases or dev tools domains (using mostly Rust), and have a role you think might be a good fit for me, I'd love to talk to you about it!
Consulting
I have a lot of Rust experience and I'd love to share it (I've been heavily involved with language design, dev tools, the compiler, the libraries, and governance since before 1.0, I've worked on large real-world code bases, and I've helped Rust adoption at companies from tiny startups to tech giants). I can help organisations to adopt Rust and to use Rust more effectively, and I can do that in the way which best suits the org: advice/Q&A, design and code review, training, coaching, mentoring, team augmentation, or some combination of those.
I'm available for more straightforward software engineering too. I work well with remote and hybrid teams, and can get up to speed quickly with large, complex code bases. I have most experience with database implementation, distributed systems, and developer tools. I'm also happy to work on more general development projects, particularly core components and libraries where API design, multi-context performance, and reliability are requirements. I can also add value to your team by maintaining or contributing to up-stream open source projects.
Courses
I'm developing two courses, hopefully more in the future. I'm offering these as open-to-anyone (paid), remote courses, and as private courses for a team or organisation. In the private case, I'm happy to customise in any reasonable way (and probably a few unreasonable ways, to be honest).
The first course I'll be offering (hopefully in early October, more news very soon) is an introduction to performance engineering using Rust. This is for anyone who knows some Rust and wants to write fast Rust code or to make Rust programs faster. It is particularly aimed at engineers with experience in higher level languages who want to learn about performance in the context of systems programming. It will cover the fundamentals of performance engineering and the specifics of writing performant Rust code, including profiling, concurrency, memory allocation, data layouts, common performance pitfalls, etc.
The second course will be a beginners Rust course. However, rather than being a short, intensive course of active instruction, this will be a kind of guided learning. There will be a curriculum, pointers to resources, and some short talks, but the onus will be on the student to teach themselves. The primary benefit of the course will be the support available - small-group office hour sessions (via Zoom or similar), online support (via Slack), assessed exercises, and a cohort of motivated students.
Rust
I'm still figuring out how to contribute to the Rust project. I love Rust. I think it is an important project for computer science/software engineering and humanity in general (urgh, that sounds pretentious but I honestly think it is true). There are lots of interesting problems to solve and great people to work with and learn from. BUT, I've found it hard to work on without getting too emotionally attached to the work and burning out. It's also hard for me to figure out how to contribute in a way which is useful for the project, interesting for me, and balances making use of my experience with learning new things. I've been away from things (or semi-away) for long enough that I feel a bit rusty (ha!), and getting from rusty to useful is hard work. To be honest, there are aspects of the project's culture and governance which I find dysfunctional and I don't want to be part of (nor do I have the energy or influence to change). I think I have a different vision for the evolution of the language to many people in the project, and swimming against that current is not something I want to do (I don't think I'm definitely right and they're definitely wrong, but I do believe in my opinions).
Anyway, I want to figure out some way to be involved and useful. I don't think I want working on Rust to be my full-time job or my primary focus. My hope is that I can work in such a way that I have the time, energy, and financial stability to work on Rust in my own time and on my own terms. But that is pretty hopeful, and at the least will take some time.