Rate Limiting with NGINX and NGINX Plus

Nginx blog (which, if you work with Nginx in any capacity, you should subscribe to) has an excellent guide to rate limiting.  The article explains rate limiting from the basics, through bursts, all the way to more advanced examples, with multiple rate limits for the same location.

Deploy and Maintain Redmine, the Right Way

Jens Krämer wrote this nice guide to deploying and maintaining Redmine the right way.  This is basically a combination of the official Redmine documentation with a variety of guides on deploying and running a generic Ruby on Rails application.  The solution is rightfully focusing on git, combining the upstream patches with your own changes.  And given that this is “the right way”, you don’t even have to have any of your own changes.  Just being prepared for some is good.

Once you’ve setup the proper environment, you can further automate the deployment of Redmine with Capistrano.  If you don’t use Capistrano for whatever reason – no worries, the process is easily adoptable to whatever build/deploy tool you are using.

Huginn integration platform

Huginn is an integration platform that manages triggered events with agent services according to workflows.  Unlike many hosted services (Zapier, IFTTT, bip.io), Huginn is an Open Source application written in Ruby on Rails, and can be hosted, extended, and customized locally.

If you can read Russian, make sure to check out this post that shows some example use case scenarios.

Making “Push on Green” a Reality

Making “Push on Green” a Reality is an insider look at how Google handles continuous deployment.  Very few teams and companies need to deal with such level of complexity, but the overall principals still probably apply.

Updating production software is a process that may require dozens, if not hundreds, of steps. These include creating and testing new code, building new binaries and packages, associating the packages with a versioned release, updating the jobs in production datacenters, possibly modifying database schemata, and testing and verifying the results. There are boxes to check and approvals to seek, and the more automated the process, the easier it becomes. When releases can be made faster, it is possible to release more often, and, organizationally, one becomes less afraid to “release early, release often”. And that’s what we describe in this article—making rollouts as easy and as automated as possible. When a “green” condition is detected, we can more quickly perform a new rollout. Humans are still needed somewhere in the loop, but we strive to reduce the purely mechanical toil they need to perform.

Linux Inside – A book-in-progress about the Linux kernel and its internals

Linux Inside” is a book-in-progress about the Linux kernel and its internals.  You can read it online or download as a PDF.  It’s also available in several languages.  Some of the things that you’ll find inside are:

  • The boot process
  • Initialization
  • Interrupts
  • System calls
  • Timers and time management
  • Synchronization primitives
  • Memory management
  • SMP
  • Data structures in the Linux kernel
  • … and more.