Friday, September 7, 2012

Benefits of Standing Desks

One of the perks of working from home is that I have total control over my work environment: chair, desk, computer, climate, light, etc*.  However, like many professionals, I sit for a lot of the day; 45+ hours a week, 48+ weeks a year for the past 12 years.  This isn't healthy or natural.  I've been pretty good about getting exercise regularly, but since 45, or more, of my 120 waking hours during a week are spent working, there is a great opportunity to lead a healthier lifestyle with simple changes during work; small, simple sustained improvements can have a huge overall impact on your lifestyle and goals.

Wednesday, September 5, 2012

Expanding multiple sections of a JQuery Accordion

I've loved using jQuery and jQuery UI on my current project.  They work, on all browsers, and they make things simple.  They are powerful and extensible - great tools. However, one thing that has really annoyed me is the jQuery UI accordion.  They have this snippet in their documentation:

NOTE: If you want multiple sections open at once, don't use an accordion

This drives me nuts!  If you have to write a note about something that the control doesn't do, bolded and in a larger font size in the documentation, because lots of people want to do that, or are asking for it, the control should probably perform that function.

This is exactly what I wanted to try out for one of our UI prototypes.  Usually, we wanted one section open at a time (the accordion behavior), but sometimes we want to see all 5 sections (say for printing or so you don't have to remember the first section when looking at the last section.

I found this excellent example of how to hack the jQuery UI accordion to allow multiple sections to be expanded at the same time: http://jsbin.com/eqape.

I then added this bit of JavaScript to expand and collapse all the sections.  These are hooked up as click handlers for a couple of icons on the page.


Expand/Collapse All
function accordion_expand_all()
{
  var sections = $('.accordion').find("h3");
  sections.each(function(index, section){
    if ($(section).hasClass('ui-state-default')) {
      $(section).click();
    }
  });
}

function accordion_collapse_all()
{
  var sections = $('.accordion').find("h3");
  sections.each(function(index, section){
    if ($(section).hasClass('ui-state-active')) {
      $(section).click();
    }
  });
}

This improved the jQuery accordion significantly and I hope we see all this behavior native to the control sometime in the future.

Monday, September 3, 2012

How I backup my photos

As my wife will quickly let you know, we lost some important photos of a trip we took due to a hard drive crash.  Since then, I've become very paranoid about how I store and back up our photos and videos.  Here is how I now back my photos and videos.

Friday, August 31, 2012

Validating a User's Age in Rails

We ran across an interesting bug in our application recently: a user who was 18 years old exactly could not sign up for our service.  This happened only in our production environment (not staging, development or test) and when we manually tested a number of dates, a user who was 18 years and 7 days old could sign up, but a user who was 18 years and 6 days old could not.

Improve yourself with crontab and growlnotify

Its been a very long time since I last posted.  I've moved, changed jobs, major technologies (Windows / ASP.NET / C++ to Mac / Rails), had twin boys and am now working from home.  Working from home provides some great opportunities (family time instead of commute time being the big one).  I've found that I need help making sure that I take a break and step away from the computer occasionally during the day.  Also, I'm a skinny ex-cyclist who doesn't like to go to the gym, but does want to be stronger.  Enter GrowlNotify and crontab to the rescue.