A set of opinions with which you might disagree
Sean Kelly
@StabbyCutyou
I work for Tapjoy
I am a core mainter of...
Chore : Tapjoys Job System in Ruby
http://github.com/Tapjoy/chore
Dynamiq : Tapjoys Queue / Topic System ontop of Riak in Golang
http://github.com/Tapjoy/dynamiq
Rapp : A scaffolding framework for non-web based Ruby apps
http://github.com/StabbyCutyou/rapp
Buffstreams : Streaming Protocol Buffers over TCP made easy in Golang
http://github.com/StabbyCutyou/buffstreams
This one might be the most divisive
I wanted to learn Ruby, not the depths to which madness can drive a person
(But, it probably wasn't aimed at a person like me)
Let's get the obvious ones out of the way
It's slow!
Modules are weird!
Bundler keeps doing a thing I don't understand!
Rspec doesn't make sense!
Sometimes you use them, sometimes you don't
"Am I calling a property or a method?!"
It makes code ambiguous, difficult to read
My life in .NET was nothing but interfaces
Testing was especially impossible without them
"But how do I KNOW the method is available to be called?!"
Someone made something private?
Nice Try : #send
"Private" instance variable?
Think again : #instance_variable_get/set
Nothing is ever as it seems
Think you're calling a method?
Nope : Aliasing!
Going to lookup a method definition?
Try again : Dynamically created at run time!
Think you can only call methods that were actually defined in some way?
Swing and a miss : Method Missing!
No set of complaints is complete without it
Fat Controllers is bad design
Fat Models are ALSO bad design
Keeping business logic in "Service" objects does not make you "too enterprisey"
What properties does this model have?
Don't bother trying to read the model itself
Yes, you can execute arbitrary SQL
Yes, you can use AREL to build queries
But being able to hand-write reports where it matters easily is important
And AREL is no better than any other SQL building DSL. They're all subpar compared to the real thing
I don't have to worry as much about types
Blocks are pretty sweet
The functional-ish side of Ruby is pretty cool
It just took some getting used to programming without a net
I didn't like it first, but eventually grew to appreciate what it was doing
Context-driven organization for tests makes sense
It's not perfect, but no testing library is
If I had to write a DSL, I'd choose ruby
When you have to, it's great for hotfixing problems
I use app/services and you can't stop me
Turbolinks has an off button for a reason
And Rails is pretty good for most things in general
But, it's ubiquitous and works fine ~80% of the time
I can brute force my way around most of the parts I disagree with if I have to
Programming languages are different
It's ok not to like stuff, even stuff other people say you should like
Things you hate today, could be things you love tomorrow
A set of opinions with which you might disagree
Sean Kelly
@StabbyCutyou