This week I’m going to run down some of my favorite and/or most used resources of the last year. This may seem like a random collection of things, but they’ve all been useful to me in one way or another over the last year. So let’s get started.
First off, there are a few web sites that I’ve found increasingly useful for information about the technology I use day-to-day as well as new technologies and ideas worth paying attention to.
One of my favorite blog aggregators is Planet MySQL, which manages to collect an impressive array of articles and experience on a bunch of MySQL related topics. The volume is high enough that I don’t even pretend that I read it all, but it’s worth having in my Google Reader subscription list so that I can skim the headlines and mark those that seem worth reading and come back to them. In a given week, I’ll easily find a dozen very relevant and useful postings that help me do my job.
MySQL Performance Blog
Of all the groups outside of Oracle/Sun doing work in and around MySQL, Percona is at the top of my list. Not only do they do excellent consulting and development (XtraDB and xtrabackup in particular), they’re very good about writing up their findings on their MySQL Performance Blog. If you work with MySQL regularly, any time spent reading their blog will certainly be repaid many times over.
MySQL at Facebook
Facebook has done a wonderful job of giving back to the open source community. Not only do they provide code and patches to various projects, they also regularly publish the results of their ongoing work to squeeze more performance out of the hardware and software they’re using. My favorite of them is the MySQLatFacebook page. There you can read about interesting work that Mark Callaghan (formerly of Google) and team are doing to boost MySQL/InnoDB performance as well as identify and remove bottlenecks.
When it comes to event-driven programming in Perl, Marc Lehmann’s AnyEvent is hard to beat. It’s a event library agnostic wrapper that nicely hides the details of working with libevent, glib, select, POE, or whatever the underlying event system is. That frees you up to focus on the meat of your application. Surprisingly, there’s not a big performance cost for allniceities that AnyEvent provides. That alone would be enough to make me want to use it, but there’s also a pretty good sized collection of CPAN modules that are written specifically for AnyEvent. At the end of the day, you can do async networking, DNS , disk I/O, and also handle a good collection of higher level protocols as well. If you’re doing event-oriented programming in Perl, check it out.
I’ve written about Redis already this year, so I won’t try to tell the whole story here. But I believe that Redis is a unique combination of in memory key/vale store and primitive operations that offers a lot of performance and flexibility. It’s easily my favorite new key/value store for the year. Plus the author is very talented and responsive and has developed a good community of users that are helping to shape the project’s evolution by adding new feature ideas and refining performance in critical areas.
I’m always on the lookout for good MySQL monitoring tools, and mycheckpoint recently came across my radar. It’s a self-contained system that uses MySQL to store performance data gathered from MySQL and then provides easy mechanisms for presenting that data in easy to understand formats, either textual or graphical using the Google Chart API. I like the fact that it’s just as suited to running on a single host as it is for a whole cluster of busy MySQL servers.
git and github
I never gave much thought to version control systems until this year. For ages I’d always worked in CVS and even, shudder, RCS. But when distributed version controls systems started to become popular a few years ago, I watched with interest but never took the plunge myself. In true open source fashion, before I knew it there were so many to choose from that you needed chart to understand the similarities and differences between Subversion, Git, Mercurial,Bazzar, and so on.
This year changed that. I started using git at work and, after a bit of a learning and re-training curve, am really loving it. I really like being able to “cheaply” branch code for an experiment and not bloat the centralized repository with my testing. It took a bit of time to wrap my head around the idea of having a fully functional local repository from which I could push and pull to sync with other repositories. But once I did, a whole new way of working opened up for me.
Earlier this year, I moved mytop to github as well. Github has fascinated me as an intersection of revision control and social software that I’d have never expected to see. But the ease at which I can track code that others are working on or watch the evolution of a new but promising project is very, very compelling.
I admit it. As of a few months ago, I’m a proud member of the cult of tiling window managers. After hearing people praise the efficiency and simplicity of working in tiling window managers, I read this posting fromTombuntu that pushed me over the edge. I installed xmonad and never looked back. And I’m proud to say that the only tweak I’ve had to make was a single key mapping (using the Windows key instead of Left Alt) that is this easy to accomplish. The only other resource that I needed along the way was this keyboard reference. Some people get hung up on the fact that it’s written in Haskell, but it’s really never been an issue for me.
Looking back over this list makes me optimistic about next year. For the last 12 years or so, I could have published a list of 8-12 things that really helped make my year (from a technology point of view, at least). I’m confident that next year will bring just as many advancements, resources, and great tools. I just wish I knew what they’d be already.
What are your favorite discoveries of 2009, even if they weren’t new for 2009? A great editor or library? A new web server? Drop a line in the comments below.
Fatal error: Call to undefined function aa_author_bios() in /opt/apache/dms/b2b/linux-mag.com/site/www/htdocs/wp-content/themes/linuxmag/single.php on line 62