Clean Ruby
clean-ruby.com
clean-ruby.com
This means (a) I have horizontal scroll bar added to my browser window, (b) I need to scroll a bit left/right to read some of the text, (c) it is easy to accidentally "wobble" the horizontal scroll bar when trying to scroll vertically using multi-touch gestures.
If you were to shrink the width just slightly your site would be much more comfortable to read at 1024 pixels wide. As it stands I won't read the long-form letter because of the annoyances above. The bits I read sound interesting.
It's just been one of those things: wait to get it perfect or get it done. It's probably not great on a mobile phone either but I haven't had time to tackle that.
I'm still getting the scroll bar. There may be other reasons as well, but it looks like your header image[1] is 1016 pixels wide. I tried reloading without cache, but it is possible I'm getting an old version somehow.
I'm not sure how wide the scrollbar/window chrome typically are but I think I'd allow a 20 pixel buffer at minimum (i.e. 996 width). Personally, I'd probably allow a 40+ pixel buffer just to be safe, but I in practice I just use the 960px width that 960.gs and others popularized. 64 pixels might be a little generous, but it does allow the page a little breathing room even on 1024 monitors.
1024 might be becoming a rare screen size (I don't know either way), but the vast majority of the sites I visit work at 1024 without horizontal scrolling. (A bigger problem for me is the 600px height. Even at full screen the modal popups some websites use are off-screen. I know how to scale and/or drag the window to work around that, but I'm sure most users don't.)
[1] http://s3.amazonaws.com/solarhost/21/assets/57/header.png
What's next? Tests are a waste of time?
P.S.: Not all Ruby programmers are like that obviously that's why this exists http://tomdoc.org/ Zack thinks the same way http://twitter.com/#!/holman/status/144579142367711234 And there's a good movement of Ruby hackers that think that way.
"While following the Model View Controller approach has made your code cleaner, and following conventions have reduced the need for documentation, there’s still plenty of room for improvement and too much time needed to instruct new developers."
That made me think that the goal was writing less documentation.
That's the shittiest documentation in existence.
Your tests are implementation documentation, they're useful (maybe) for other maintainers, and useless for third-parties trying to actually use your code.
> Want to know what a method does? Look at the tests for the method where it explicitly says what the method is doing and ensures it is functioning correctly.
Right, look at 700 lines of edge cases testing, that's informative and helpful. Not.
I'm going to call bullshit on that one all the same.
And as expected, it's awful.
The front page looks good. It's also a Markdown document. Open any actual feature dump[0] and you land straight in dreadful-land. The introduction is acceptably readable (since it's written in markdown throughout), the "code samples" are mostly an unreadable mess with little logical flows and huge blocks of unreadable code. It manages to fail both at being a documentation and at being an APIdoc.
The most laughable part is the "Examples" sections as they show not examples but values with which the placeholders in the rspec test can be replaced.
The only part worth reading of these is the heading, which has nothing to do with RSpec, and the only thing rspec doee is makes this "documentation" worse by imposing the test's structure onto the documentation.
It's not even a step up form having only extracted APIDoc, it's a step down.
[0] https://www.relishapp.com/myronmarston/vcr/docs/cassettes/ca...
From these examples DCI seems a lot like lisp's generic functions..
* https://metacpan.org/module/Moose
* https://metacpan.org/module/Class::MOP
* BankAccount example (Practical Common Lisp) - https://metacpan.org/module/Moose::Cookbook::Basics::Recipe2
DCI's main advantage is that it encourages you to write code that follows an "assemble the objects I need, then perform a sequence of operations on them" pattern, where the operations generally occur inside a single method. This is your algorithm, and the idea is that you should be able to read that algorithm and get a good idea of what the program is doing. Instead of relying on tests alone to verify that your program does what it's meant to, you should be able to read the code too.
Jim Coplien's talk here is a good intro: http://www.infoq.com/presentations/The-DCI-Architecture