Over the past several months, I very slowly worked my way through Michael Hartl’s Ruby On Rails Tutorial and just wrapped things up last weekend. As someone who has worked in many different programming languages over the years, I found this to be a great survey on how Rails can be used to build functional web apps.
The majority of the book is spent methodically building out a basic Twitter clone. I like the way that concepts like MVC and TDD were introduced, but I question whether I might have been a bit lost if I wasn’t already familiar with them.
The writing style was very easy to follow, and I liked the predictable flow of Write Tests, Code, Test, Repeat. I do wish that whomever curates the Kindle version would eliminate all of the “Click here to view code image” links, but that was only a minor distraction.
The author rightly states in the intro that a basic understanding of HTML and CSS is needed. If you’re starting without that baseline, a lot of the sample app is going to seem like magic, and relying on magic is a bad way to code. As it stands I feel like a lot of the Ruby code in the book was a bit on the mystical side, so I’m probably going to find a good Ruby book for my next technical read. If you want to take a look at where my sample ended up, you can see the code at: https:/github.com/hallihan/rails_tutorial and I’ve got the sample running on Heroku at http://yamf.net.
Overall I’d say that if you’re familiar with other web frameworks like ASP/ASP.Net, PHP, JSP, etc. this is a great book to introduce the Rails framework. I’d probably recommend diving into a Ruby book first if you have the interest.
The book is available from Amazon
If you design a product that might wake me up in the middle of the night, you should meet the following bar: I, or someone I love, must be in danger. Not a hypothetical “If the power goes out and if something in the house is still managing to produce CO without power” type of danger, but something more actual and imminent.
Smoke and CO detectors seem to have been designed with a severe disregard for how the customer will react to the various interaction points other than a true emergency. I can remember several times in my adult life when a chirping detector has induced me to get out a ladder in the middle of the night and climb up to check on various possible sources of the chirp, all in a semi-alert state.
Last night, the culprit was a CO detector that happened to be plugged in to the wall in our master bedroom, perhaps about 3 meters from where I sleep. The acoustics of the alert sound on this device seem to have been designed to make it echo and reverberate around the house, which is great for an a alarm, but again is horrible for a low battery warning. In my efforts to find the noise that only repeated every minute or two I got out two different ladders, stood on the ladder near the upstairs smoke alarm, then the downstairs one, then climbed into the attic to check that one, then stood in the room listening for the chirp again, then up to the attic to see if maybe there was another alarm up there that I didn’t know about. Thankfully my wife happened to look down at the right moment and correlate a chirp with this CO detector plugged in to the wall.
I know that I should have probably replaced the battery at some point, but honestly I had totally forgotten about this particular detector. It’s one of 3 CO detectors in our house, and I’m pretty sure that it’s been 3 or 4 years since the battery was changed because it runs off house power and the battery is just for power failures. The end result of this particular warning was that the device was unplugged and batteries removed so that we could get back to sleep.
This morning as I tried to get back to sleep I was wondering how many middle-of-the-night ladder injuries are attributable to low-battery chirps. I’m guessing that the low battery behavior is probably design-by-regulation and that manufacturers like First Alert don’t have a lot of latitude to make this better, but I see that Nest Protect is trying to solve the UX gap, although at quite a premium on price.