About 6 years ago (feels like an eternity in Rails world) working at Scribd I’ve started working on porting our codebase from some old version or Rails to a slightly newer one. That’s when I realized, that there wasn’t a ruby gem to help us manage MySQL connections for our vertically sharded databases (different models on different servers). I’ve started hacking on some code to replace whatever we were using back then, finished the first version of the migration branch and then decided to open the code for other people to use. That’s how the DbCharmer ruby gem was born.
For the next few years a lot of new functionality we needed has been added to the gem, making it more complex and immensely more powerful. I’ve enjoyed working on it, developing those features, contributing to the community. But then I left Scribd, stopped being a user of DbCharmer and the situation drastically changed. For quite some time (years) I would keep fighting to make the code work with newer and newer versions of Rails, struggling to wrap my head around more and more (sometimes useless) abstractions Rails Core team decided to throw into ActiveRecord.
Finally, in the last 2 years (while trying to make DbCharmer compatible with Rails 4.0) it has become more and more apparent, that I simply do not want to do this anymore. I do not need DbCharmer to support Rails 4.0+, while it is very clear that many users need it and constant nagging in the issues and the mailing list, asking for updates generated a lot of anxiety for me, anxiety I couldn’t do much about (the worst kind). As the result, since I simply do not see any good reasons to keep fighting this uphill battle (and developing stuff like this for ActiveRecord IS a constant battle!) I officially give up.
After some long and painful consideration I’ve decided to officially suspend the project. Here is what the suspension means in this case:
- I will stop making any changes in DbCharmer code
- Pull Requests and Issues functionality on the project repository will be disabled (I will dump the issues somewhere for future reference, but no new messages could be added)
- There will be a huge message in the project README explaining that no Rails versions beyond the latest 3.2.x are supported and there are no plans to do any development to make the code work with Rails 4.0+
- Project mailing list will be disabled
- Project website will be moved to a github domain (with the same message explaining the project status)
I’m really sorry if any of the users of the project still had some hopes regarding the Rails4 branch and potential upgrade to the newer Rails versions, but 3.2.x will be the last version officially supported by the project.
Now, here are my answers to the questions that people have asked me about this decision (I’ve talked to a few of the largest users of the project already):
Are you going to kill the repo? – No, the repository (and even the rails4 branch) are going to stay intact. I’m just going to clearly mark it as inactive to make sure people do not try to use it with new Rails versions or expect the project to support those in the future.
What about Rubygems? – All rubygems versions released up until this point will stay active and accessible as long as rubygems is alive. Though no updates will be provided for any Rails versions beyond 3.2.x.
Why not crowdfund the development? – This is a really tough issue I struggled with for a long time. The problem here is that for many years now I had been very fortunate to be in a position when I’m not motivated by the money anymore. So crowdfunding the development would only increase my anxiety 10x, while not really changing the situation on the motivation side. That’s the opposite of what I need at this point.
What if you need DbCharmer functionality on your current or some next job? – This is why I’m not deleting the repo, gems, etc and calling it a suspension and not a closure There is a chance, that one day I will end up in a situation, where I will really need all those wonderful features I’ve enjoyed with DbCharmer for years. And I’m pretty sure, that unless there will be another project available on the market, I will try to revive the project (or build something new upon the most important pieces of DbCharmer codebase). But nobody knows what will happen, so for now the project is suspended.
Can I help with the development? Maybe send in a patch? – Another very tough issue. Accepting patches still requires a lot of time and dedication to review, understand and test them. And that is not something I want to do at this point. The only real way to resume the development of the project at this point would be to transfer the ownership to somebody else. But unless someone creates a fork, shows a true dedication to the project (making sure all the incoming changes are 100% test-covered and battle-tested, etc), I’m not ready to do that. If you have some ideas on this matter, you could ping me any time.
As a leader of a technical operations team I often have to work on technical operations engineer hiring. This process involves a lot of interviews with candidates and during those interviews along with many challenging practical questions I really love to ask questions like “What are the most important resources you think an Operations Engineer should follow?”, “What books in your opinion are must-read for a techops engineer?” or “Who are your personal heroes in IT community?”. Those questions often give me a lot of information about candidates, their experience, who they are looking up to in the community, what they are interested in, and if they are actively working on improving their professional level.
Recently, one of the candidates asked me to share my lists with him and I thought this information could be valuable to other people so I have decided to share it here on my blog.
Must-Read Books List
First of all, I would like to share a list of books I believe every professional in our field should read at some point in their life. You may notice that many of these books are not too technical or are not really related to the pure systems administration part of a techops job. I still think those are very important because technical operations work on senior levels involves much more than just making sure things work as expected. A lot of it involves time management, crisis management and many other topics that are equally important for a professional in this field.
So, here is the list (with not particular ordering, grouped by topics):
Systems and Networks Administration
Technical Operations, Architecture, Scalability
Project, Release and Time Management
For more information on interesting books for technical operations engineers, you can check out the following book lists on GoodReads:
Conferences, in my opinion, are an essential part in professional development of any engineer. Here is a list of conferences that could be useful for techops engineers:
- Surge Conference – in my opinion, this is definitely one of the best conferences dedicated to building and maintaining large web architectures. If I were to choose one conference a year to go to, it would definitely be Surge. Videos from previous years are freely available online: 2010, 2011, 2012. 2013 videos should be available soon as well.
- Oreilly’s Velocity Conference – biggest and, probably, the oldest web operations and web performance event. In my opinion, recently it became too focused on web frontend performance, though it is still a really interesting event. Complete video compilations from the conference are available for sale: 2011, 2012, 2013.
- Monitorama Conference – pretty new, but already very popular conference with interesting content for everyone interested in monitoring (which most ops engineers are). Sides and videos from the first ever Monitorama conference in 2013 are available online.
- Percona Live Conference – really awesome event for anybody who has MySQL in their stack. Huge multi-track event with talks from the best and brightest people in MySQL community. Slides and keynote videos from 2013 event are available online.
- DevOps Days – small events happening all around the world and becoming more and more popular. The major topic of these conferences is the DevOps movement, related team/project management practices, etc. Videos and slides from some of the events are available online.
Even if you do not have time to watch any of those conference videos, I think every operations engineer out there would really enjoy 2011 Surge Conference closing plenary session video where Theo Schlossnagle (one of my personal heroes in IT community) described a typical debugging session many of us go through every once in a while:
Interesting Web Resources
And last, but certainly not least, I would like to share a list of web resources I like to follow to stay up to date on the most recent news and fresh ideas within the web operations community and related areas:
Leading Industry Sites and Blogs
- MySQL Performance Blog from Percona – one of the best resources on MySQL performance
- High Scalability – awesome resource with a lot of great articles on scalability, performance and design of large scale systems
- Kitchen Soap – Blog by John Alspaw (another of my personal heroes in IT field)
- DevOps Community Planet – feed/news aggregator for the DevOps community
- DevOps Community on Reddit – not too active, but still a useful resource for getting interesting news
- Agile Sysadmin – Blog of Stephen Nelson-Smith
- obfuscurity – Blog by Jason Dixon, maintainer of Graphite, author of Descartes, Tasseo and other useful tools for metrics collection and displaying
- The Agile Admin – Many interesting thoughts on agile web operations and devops
- Operation Bootstrap – Blog of Aaron Nichols talking about many different aspects of working in operations
Engineering Blogs of Large Web Companies
- Changelog – member-supported podcast on 5by5 network talking about interesting open source projects
- Food Fight – bi-weekly podcast for Chef community
- DevOps Cafe – interviews with interesting members of DevOps community
- The Ship Show – twice-monthly podcast, featuring discussion on everything from build engineering to DevOps to release management, plus interviews, new tools and techniques, and reviews
And this is it! I hope these lists would be useful for young engineers going into the technical operations and for people who already work in this space. I am going to try to regularly update this post in the future to make sure it stays relevant for a long time.
As you may have heard, last January I have joined Swiftype – an early stage startup focused on changing local site search for the better. It has been a blast for the past 8 months, we have done a lot of interesting things to make our infrastructure more stable and performant, immensely increased visibility into our performance metrics, developed a strong foundation for the future growth of the company. Now we are looking to expand our team with great developers and technical operations people to push our infrastructure and the product even further.
Since I have joined Swiftype, I have been mainly focused on improving the infrastructure through better automation and monitoring, and worked on our backend code. Now I am looking for a few good operations engineers to join my team to work on a few key projects like building a new multi-datacenter infrastructure, creating a new data storage for our documents data, improving high-availability of our core services and much more.
To help us improve our infrastructure we are looking both for senior operations engineers and for more junior techops people that we could help grow and develop within the company. Both positions could be either remote or we could assist you with relocation to San Francisco if you want to work in our office.
If you are interested, you can take a look at an old, but still pretty relevant post I wrote many years ago on what I believe an ops candidate should know. And, of course, if you have any questions regarding these positions in Swiftype, please email me at email@example.com or use any other means for contacting me and I will try to get back to you as soon as possible. If you know someone who may be a great fit for these positions, please let them know!
So, after a few weeks of looking for a new job I’m really excited to start my journey in a young, but very ambitious startup called Swiftype which is focused on developing a technology for private site search, that could be used on everything from small blogs to large product sites. The company is growing really fast and I’m going to lead all the work on infrastructure, build the ops team and hope to get a chance to do some coding along the way.
Stay tuned – I really hope to finally get a chance to do more blogging this year.
As of today I’m no longer working for LivingSocial and I’m looking for the next thing to work on. Since my family is in Toronto and I have an apartment (mortgage) here, I’m not looking to relocate and currently looking for something remote (I have 7+ years of remote work experience) or something local in Toronto.
For more information on my background, please check my Github profile, my linkedin profile or the resume section on this blog. If you need to contact me, feel free to use any channels listed on the contacts page.
Update: After a few initial interviews I’d like to update this post with a bit more details on what I’m looking for in the new position.
First of all, I’m really not sure I want to be yet another ops engineer working on “everything ops” in my next company. If I’d be to join a company as a regular ops engineer, I’d prefer it to be a clearly defined role with a clear focus on some set of challenging problems. I’m honestly tired of setting up cacti/nagios/chef at this point and would like the job to be a little bit more challenging.
Though even more I’m interested in being able to make strategic technical decisions for an operations team and apply my experience and knowledge for solving challenging tasks with a dedicated team of ops engineers. This could be anything from a tech ops team lead role (in a medium/large companies) to a director of technical operations (in a small-to-medium sized startups).
Update: Ok, I’ve found a new job – I work for Swiftype now!