articles in November 2009

Bluepill monitoring delayed_job

2 comments

Lately I have been using bluepill to to monitor long-running processes on my application servers. The guys at serious business wrote bluepill out of their frustrations with god and monit, which gradually leak memory over long periods in certain conditions. bluepill is a simple piece of code with a small feature set, but does all you need to keep your processes alive. It even has parent/child monitoring for the likes of Unicorn master/worker processes.

Right now I am using it in Bugle production to monitor the delayed_job master process. It will also be useful if (or when) I get a chance to try Unicorn. Delayed Job is used in Bugle for two things right now, processing uploads (storing/deleting to/from S3) and delivering all application emails asynchronously. Here is the bluepill monitoring configuration script for it;

Bluepill.application("bugle") do |app|
  app.process("delayed_job") do |process|
    process.start_command = "/apps/bugle/current/script/delayed_job start -eproduction"
    process.pid_file = "/apps/bugle/current/tmp/pids/delayed_job.pid"
    process.uid = "bugle"
    process.gid = "bugle"
  end
end
November 26, 2009 18:26

Open the pod bay doors Hal

no comments yet, post one now

So, I'm back here again. Its been two years since I posted regularly and a lot has happened since then. Here's a quick summary of that, and some reasoning behind my motivation to start writing again.

read the rest of this article →
November 20, 2009 18:49

1955 Mercedes Benz 300 SLR Coupe

no comments yet, post one now

1955 Mercedes Benz 300 SLR Coupe

1955 Mercedes Benz 300 SLR Coupe at cartype

November 20, 2009 11:42

Paging Keys

no comments yet, post one now

Some time ago I wrote a javascript class to implement keyboard short-cuts for paging through listings one item at a time (and across paginated pages). It was inspired by the navigation at FFFFOUND! and explained nicely by Ryan Singer of 37Signals.

Some time ago Ryan posted a link to my script on the 37Signals blog, now with over 130 watchers on github a creeping sense of responsibility has settled in. So the latest revision now has both jQuery and Prototype support and a handier configuration object, so you can further customise how your page and CSS work with the script.

var config = {
  nodeSelector:        '.hentry h2 a.entry-title',  // used to select each item on the page and place in the map (must be a link)
  prevPageSelector:    '.prev_page',                // link on this element should always jump to prev page a.prev_page (must be a link)
  nextPageSelector:    '.next_page',                // link on this element should always jump to next page a.next_page (must be a link)
  pagingNavId:         'paging-nav',                // dom id of the floating page navigation element
  keyNext:             'j',                         // hot keys used 
  keyPrev:             'k',
  keyNextPage:         'h',
  keyPrevPage:         'l',
  keyRefresh:          'r',
  additionalBodyClass: 'paging-keys',               // this class is assigned to the page body on load
  bottomAnchor:        'bottom'                     // the name of the anchor (without #) at end of page, e.g. set on last post on the page
};

I’m using the script on this site (see the overlay on the top right) and you can try it out by pressing j/k to navigate through the articles. Some things worth mentioning about the code;

  • It tries to closely follow the ’7 rules of unobtrusive javascript":http://icant.co.uk/articles/seven-rules-of-unobtrusive-javascript/
  • By default (and in the demo) it hooks to items in the HTML that formated with in the hATOM microformat
  • It also latches onto pagination links generated from the popular will_paginate gem
  • It makes use of Hotkey.js
  • Eventually this script will live inside many of the default templates in Bugle
November 18, 2009 11:14
← (k) prev | next (j) →