700 karma · joined October 3, 2007
If you want to have a respectful debate, I'm completely game. If you'd prefer to continue with your incredibly condescending tone, then I'll bow out here.
Thanks a lot, man.
The whole point of objectify is that it actually makes it pretty reasonable to work this way right off the jump. I would have a hard time believing that it's really any more work to build an objectify app than it is to build a vanilla rails app - at least once you become accustomed to the paradigm.
> That said, if you have a large amount of single method classes, you might need to take a look at why you need them and find a better approach (which will vary from project to project).
I don't buy that. My project has hundreds of single method classes and it's by far the best factored non-trivial application I've ever seen (anecdotal, obviously, but so it goes).
Auto-pilot on a 747 is a very complex system. RubyGems is not.
What's hostile about proving points with code?
> ...the division that would be caused by a fork...
You still haven't explained what the problem with this "division" is. Why will this be different than the rails/merb fork? Honest question: are you afraid of division or of your friends losing control of the project?
> There is no denying that Eric+Ryan have had personal conflicts with Loren...
As well as just about anybody else who has tried to work with them.
> However, Evan Phoenix...
Evan is a great and brilliant guy, but let's be honest here. He's another personal friend of the current maintainers and (former?) Seattle.rb member. We need fresh blood.
Seriously. Do the benchmarks.
We're mostly talking about looking at your data growth curve and extrapolating points in the future. Why would that become impossible just because the curve is steep?
> it's all about technology and not about people or emotions.
Yes, hiring a designer definitely shows a complete disregard for the people using the product.
Especially the enormous yellow bar on the front page. The type is way too big for the box, and the facebook connect icon is way too big. It needs to be displayed in its natural size - or an appropriately sized one needs to be found.
In general, little issues like that plague the UI and make it feel unpolished. Fixing them will go a long way towards making the app feel like something I'd want to use.
> Patterns are still patterns whether you acknowledge them or not, and they are not defined by the LOC or number of classes they require in language X.
> Refusing to admit that patterns are used hurts your development team and the community, because patterns (simply identifying them) serve a very important purpose.
> Well, design patterns are just like [agile] metaphors, but they are meant for code, not UI.
> For instance, consider the factory pattern versus the builder pattern. Both are concerned with creating objects, but a builder is also concerned with the assembling of the object. This is a relatively subtle but pretty noticeable difference. Telling someone you are using a "builder pattern" should immediately ring a bell in their heads saying, "oh, it’s not just a factory".
Patterns are specific nomenclature not implementation.
In the case of logging, an observer may or may not be appropriate depending on the specifics of your application. In your Go app, it sounds like a NotificationObserver makes perfect sense.
The broader point that I was trying to make in the article was that coupling all of your business logic to your persistence objects is a bad idea. It couples all of the concerns together, and with larger codebases, makes for slow tests and code that's difficult to reason about and debug.
If your business logic lives outside of your persistence layer, service objects can be a great way to coordinate several objects necessary to complete some user action. Observers can work quite well too.
As long as business logic is decoupled from persistence, I think a big step has been made towards better code.
It actually happens to be quite a write-intensive workload. We have definitely seen a slow down on writes, but the speed up on reads has more than compensated for it.
We do have more data than RAM. But, most of the data that actually gets read is fresh, so it's hot in cache.
Of course Friendly isn't going to be right for everybody. But, I just want to make it clear that my data isn't from synthetic benchmarks. It's from production.
Either way, durability wasn't the issue for us. Mongodb has no write concurrency. So, when it got so overloaded with data that queries were taking forever, we had no way to purge older data without blocking all read & write operations for hours.