Autotest meets Doom
Autotest with SFX
http://fozworks.com/static/autotest-sound10.html
I really like this last one. It uses well engineered audio to bypass the need for visual interruptions. Hopefully it'll help you keep flow better.
http://fozworks.com/static/autotest-sound10.html
I really like this last one. It uses well engineered audio to bypass the need for visual interruptions. Hopefully it'll help you keep flow better.
Eric and I will be at icanhasruby tonight... join us if you can!
them: this brick wall keeps hurting my head every time I bash into it over and over!
them: it never changes! help! why doesn't it work?
me : what are you actually trying to do?
them: bash my head through this brick wall!
me : what are you actually trying to do?
them: I'm trying to bash my head through this brick wall!
them: why do you keep asking me that?!?!
me : do you perhaps mean, get to the other side of the wall?
me : why don't you just use that door?
There is a certificate course at the UW starting this fall. It is 3 quarters long starting at rubynewb, then rails/web development, then rubyjedi. no, not the real titles. You are not required to take all three courses. do what feels right. To take just one:
http://www.extension.washington.edu/ext/certificates/rby/rby_sce.asp
There is space available. apparently, plenty of space... so take make this a success, if you are interested or suspect someone you know is interested, PLEASE, help make it happen.
ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails.
ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Test::Unit.
unit_diff is a command-line filter to diff expected results from actual results and allow you to quickly see exactly what is wrong.
autotest is a continous testing facility meant to be used during development. As soon as you save a file, autotest will run the corresponding dependent tests.
multiruby runs anything you want on multiple versions of ruby. Great for compatibility checking!
Test::Rails helps you build industrial-strength Rails code.
Changes:
4 minor enhancements:
Hoe is a simple rake/rubygems helper for project Rakefiles. It generates all the usual tasks for projects including rdoc generation, testing, packaging, and deployment.
Tasks Provided:
Changes:
1 bug fix:
A script which automates a limited set of rubyforge operations.
Changes:
Fix fetching of user id when user has no releases.
My theme for this year is shaping up to be "don't be clever, it doesn't suit you". Here is some real code we found and how it can quickly and easily be cleaned up to be much more readable, more correct, and more efficient all at the same time. (indeed, it took more time to benchmark and write this post than it did to fix the code)
The original code in all its clever glory:
if MODELS.keys.inject(true) {|b, klass| b and klass.constantize.columns.map(&:name).include? association.options[:foreign_key]}
pull out the foreign key, since there is no reason to do that in a loop:
fk = association.options[:foreign_key]
if MODELS.keys.inject(true) {|b, klass| b and klass.constantize.columns.map(&:name).include? fk}
pull out columns to improve readability:
fk = association.options[:foreign_key]
columns = MODELS.keys.map { |key| key.constantize.columns.map(&:name) }
if columns.inject(true) {|b, column| b and column.include? fk}
Oh look, now that we can read it, inject is totally wrong and slow:
fk = association.options[:foreign_key]
columns = MODELS.keys.map { |key| key.constantize.columns.map(&:name) }
if columns.all? {|column| column.include? fk}
Finally, while that map symbol to_proc hack sure looks cute, it sucks:
fk = association.options[:foreign_key]
columns = MODELS.keys.map { |key| key.constantize.columns.map { |c| c.name } }
if columns.all? {|column| column.include? fk}
Measure the change (slightly wrong after minor edits):
And finally, (rough) benchmarks:
\# of iterations = 100000
iter user system total real
null_time 0.020000 0.000000 0.020000 ( 0.012905)
benchmark-1 11.350000 0.030000 11.380000 ( 11.564039)
benchmark-2 10.900000 0.020000 10.920000 ( 10.975134)
benchmark-3 10.720000 0.010000 10.730000 ( 10.928107)
benchmark-4 10.520000 0.030000 10.550000 ( 11.300934)
benchmark-5 3.260000 0.010000 3.270000 ( 3.275238)
Sure does pay to not be clever...
In the fall I'm going to be teaching the ruby course I hinted at in my last blog post. I've pretty much finalized the curriculum's syllabus, and am starting in on each day's slides now. I plan on releasing the slides under creative commons or some-such, but can't do so until afterwards. However, I would like to get a small (5ish?) private group of people who would be interested in reviewing the slides ahead of time. They'll be in PDF form to make life easier. I'm guessing you'll spend roughly 5 minutes to my 60.
Anybody interested? If so, leave a comment here. If I know you and your background, great. If not, please drop a 3-5 sentence description telling me who you are and your background.