Jason Fox

Icon

programming, products, and pontifications…

Check Constraints and MySQL

Unfortunately, MySQL does not support check constraints out of the box.  This makes the task of enforcing business logic in the database layer difficult, but not impossible.  I recently found this approach to implementing check constraints in MySQL.  It’s not as pretty and clean as I’d like, but, it’s the best approach that I’ve found so far.

Now. why would you want to encode business logic in the database?  Can’t you make due with your ActiveRecord::Validations?

Well, have you ever updated the database directly?  Have you ever called update_attribute on an object?  How about save_with_validation(false)?   Yeah, I thought so.  Read more about why you should treat your database as a fortress in Dan Chak’s recently released book, Enterprise Rails (review coming soon).

poop car

img_05721

Rewriting Sub-selects as Joins

Your RDBMS will usually rewrite your sub-selects behind the scenes as joins.  However, there are times where you’ll want to do this yourself.  For example, past versions of MySQL did not play well with sub-selects.  Here are a couple examples of how to rewrite sub-selects as joins.

select *
from   table_a
where  id not in (select a_id from table_b);
-- can be rewritten as...
select *
from   table_a
left   outer join table_b on table_a.id = table_b.a_id
where  table_b.a_id is null;

select *
from   table_a
where  id in (select a_id from table_b);
-- can be rewritten as...
select *
from   table_a
left outer join table_b on table_a.id = table_b.a_id
where  table_b.a_id is not null;

Hi-Res View of the Space Shutttle Cockpit

spaceshuttle-thumb-520x345

Awesome hi-resolution image of the inside of the space shuttle’s cockpit.  As my desktop background on my 23″Apple Cinema Display I feel like I’m behind the wheel of the Millennium Falcon.  NASA rocks!

Mikro Men

These are sooooo cool!  My wonderful girlfriend got me one of these for Christmas this year.  They are called Mikro Men and according to their website, “are a brand of miniature fold out metal sculptures created by Sam Buxton.” And I love them!

Mikro Men come in a sleek looking, black, fold-out cardboard package kept closed with a magnet.  The Mikro man is shipped flat and is stamped out of a single thin piece of stainless steel.  You use your fingers to bend the metal at the “fold lines” or a pair of tweezers for the smaller pieces like the trash can in the Office Man above (this is the one I have).  After a few fun minutes you have a totally awesome piece of art for your desk.  My Mikro Man lives on my desk on the base of my Apple Cinema display.

DOTS Gloves Review

DOTS Wool Gloves

I received my pair of DOTS gloves just the other day.  The gloves are special because they enable you to operate touch screen devices, such as the iPhone, without removing your gloves.  They accomplish this by attaching button-like, metal “dots” to the index and thumb finger on each glove as you can kind of see in the picture.  DOTS come in two models: wool ($20) and knit ($15) in sizes medium and large.  I opted for the wool model in size “medium” (more like a small in reality).  So far I’m not 100% sold on them.

Over the past few days I’ve worn them while walking around frigid, windy downtown Albany, under my mittens while snowboarding, and in my car.  I’ve found that gloves, while made from wool, are not very warm.  You will especially suffer on windy days as the wind seems to pass right through them.  I’ve also found the “dots” in the fingers to be kind of annoying when trying to operate anything besides the iPhone such as the buttons on the dash or steering wheel in my car.

The other downside to these gloves is that they are slippery, really, really slippery.  Anything with a smooth surface, like that pricey touch screen device you bought these for, will slide right out of your hands with surprising ease.  The same goes for car key fobs, credit cards, thermoses, you name it; if it’s smooth you are going to drop it.  If you have a case for your iPhone you’ll probably be fine but if you opt to go all-naturale as I do you better hold on tight!  I think the DOTS guys could fix this problem by adding some grippy rubber strips to the palms and fingers.  Perhaps we’ll see this in DOTS 2.0.

On the plus side they work as advertised.  However, it can take a little getting used to and accuracy can be a problem as the “dot” sometimes becomes a moving target as your glove shifts around your fingers.  Once you find that sweet spot, though, you’ll be whizzing around your device with great precision.  Surprisingly, I found that the gloves especially excel with typing.  I found myself wishing I had retractable dots on my fingers as I often times fat finger the keys while typing on the iPhone.  The dot gives you a great precise “tip” (they are actually rounded) to tap with almost like a stylus, that is, when you can line the glove up right with your finger.

Overall, I’m not impressed.  The wool is also starting to unravel a bit and it’s only been a few days.  :-/  The NorthFace makes a similar glove, though, I think I like their approach better.  They opted to sew silver into the finger tips of the gloves to allow for conductivity.  The NorthFace model also has a rubbery grip on the palm and fingers.  I think I might try them out.  The two downsides are the price 2x what I paid for the DOTS and the graphics they added to brand the gloves as “hi-tech.”  Lame, IMHO.