SearchUnpaid ads:Stackoverflow is the most addictive developer's resource. Go check it out now! I use it myself, and I got to tell ya, they don't call it "crack overflow" for nothing. Joel helped me find my current job. Check out the Joel on Software job board if you are not happy with yours. WestNIC provides reliable reseller hosting services across the globe. Evernote is the best code, memo, photo, todo, wishlist application I've ever used. Mad props for making Memex real. What's All this Then?My name is Michael Krakovskiy, and this is my blog. Here's what you might find interesting: My Gastronomic Adventures: I eat weird food - from 13 year old New Coke to Durian and parasitic fungi. My attempts to grow exotic plants: pineapples, coconuts, etc. My photos, mostly of New York City. My musings about architecture mostly illustrated with my own photos. Would you like to learn about a mental patient who died at 103 who served as a model for some very famous sculptures? How about Brooklyn's ugliest building? How about a wooden skyscraper? I find myself frequently writing about logos. The most popular article I ever wrote is about the redesigns of the Starbucks logo. I wrote a series of "Best Sci-Fi You Haven't Read" posts: Psywarrior Other topics that interest me include NYPD, New York City subway system, Japan, and things made out of titanium. On top of all of that, I seem to be interested in pigeions and Rupert Murdoch. Dear reader, please browse around. You are sure to find something interesting. I could really use some help in bringing in readership: subscribe to the rss feed, digg the stories (there's a convenient button at the bottom of every article), link to my blog from yours, write some comments. I put in a lot of effort into writing, and I really appreciate your attention. If you don't want all this pseudo-intellectual and want some lolcats? Please don't go away. Here, I have that stuff too. Here, here's another. And another. And another. I lied about not posting cat pictures. |
|
![]() More Unpaid Ads:Jesse Reklaw's Slow Wave comics absolutely rock!. Jesse designed Deadprogrammer.com corner graphic, the one with the programmer and the cat. And now you can buy his new book - The Night of Your life: Random Amazon GoodieMonthly Archives
|
Comments
that is just too cool. my "couch" used to be a sleeping bag under my desk.
Hey, decided to check up on you, and noticed House on front page.
I envy you for not seeing House. When I found out, I was 2 seasons behind and watched all of them.
Another suggestion (there are only 2 suggestions) - is Breaking Bad. Only 1 season so far. Don't even check up on it, just watch the 1st episode.
Congrats on finally transferring to Drupal. FYI, I am doing RoR now, working for my own company, and everything seems to be going great (even though I'm not wearing proper clothing, not doing proper haircuts, and AM using a lot of new, OO functionality, such as database abstractions ;-) ). I am however eating nice meals at lunch, which includes "Pho" that my Vietnamese girlfriend makes. Hope you treat Serge well over there, I put effort to get him introduced to Drupal. : )
Best,
Max (your former co-worker from Stromberg).
I don't really know what you mean by "transferring to Drupal", but thank you so much for Sergey - he's great. I guess you did not read my anti-ROR rant. Believe me, database abstractions in ROR are equally as good of an idea as mullets.
"Breaking Bad" is awesome. You should check out "Mad Men" - AMC seems to be on a roll. It's about Ketchum in the 60s :)
I especially like your "believe me". To that I have to say no. Your article is a typical example of a rant by a person which has nothing to do with the subject, yet has certain emotions towards bits of accidentally noticed information. Also, most of your opinion on Rails expresses your hesitation to delve into new technology, and just put more effort into learning computer science. Sorry to undermine the comfort, but no you don't program patterns everyday -- most of them are anti-patterns. And even if you do, it's like saying "I accidentally solved a math problem, and have no clue how I got the answer". And no, your code is not the most efficient because instead thinking in patterns you program the way "you feel". Patterns are there for the same reason Quick Sort is there. Thinking that your nested for-loop is ok for the job would be illogical. The algorithms have been studied, and the speed has been determined.
You talk about Rails the same way I'd be talking about "Large Hadron Collider" and how it's gonna destroy the planet. I have no clue, but I hear things a lot.
Rails attempts to bring together well known pre-determined patterns. My last rails application was big and complex, although it did start with CRUD, which I didn't have to waste any time on. It came out to be a set of clean, testable classes, where everything knew its place and interacted consistently. The funny thing is that as soon as a perfectly maintainable clear code has been finished, - I do what's called profiling. I simply check my application for bottlenecks. It's a quick job, and I can rewrite any database calls and surpass any rails functionality to remove the bottlenecks. Then I can use the established recipe to get everything running and scaling. Nginx, mongrels with memcached, 2 db machines. That's all.
Twitter is an example of huge project with no business plan, therefore slow improvement.
Your article is very much a trolling piece of text. And I just fed you. : )
Trolling? Come on. Abstractions leak, people laugh at mullets. It's the facts of life.
We'll see if the LHC will start spitting out Earth-destroying false vacuum bubbles and black holes (probably not), but Rails is causing enough pain to the only Rails application that I know that is big enough to make tens of millions of dollars. Twitter's problems are not business plan related - they can plaster the site with ads and start making money hand over fist. They are technical. Memcached is not gonna save you from shitty queries, proxy server is not gonna save you from slow application performance, and having to use an exotic web server is not a good thing.
Patterns are not a bad idea, but it's a bad idea to limit yourself to them. When you have a hammer, everything starts looking like a nail.
Well, sir, you have some nice proverbs in your arsenal. I only wonder if they really apply. I know many rails applications that aren't causing any problems, among which are GitHub and Lighthouse. In addition, there are numerous business entrepreneurs that I know, which either start up or transfer to rails, claiming that it was one of the best decisions they've made yet, as it gives much better bottom line, and much more flexible development cycle. It's really a joy to write anything a client might need in Rails, you won't know till you feel it.
You misunderstood twitter comment - its problems ARE business plan related - poor BP puts twitter in position where they don't have enough money to CARE enough, (ie to pay for their time and equipment). The project started as an exercise. And do you really think ads are a solution there? Most people don't even visit the site to leave or read twits.
Memcached will save you from db server overload.
Profiling will save you from shitty queries.
Now on to the servers. It's funny to hear "proxy server" and "exotic server" in relation to one of the most trivial setups. Any good admin will tell you that you need a front-end caching server which is going to be the most. Is nginx exotic? The thing has been around for many years and is widely acclaimed as the quickest simplest server out there -perfect for front-end caching. Calling it proxy is like using the word "tubes" for internet. Grandma style.
Mongrel is the rails server since the beginning. Once again, nothing exotic. It has to be on the back end farm.
Most importantly - I can't get enough of your "CRUD is easy, no need for framework" philosophy. You can say that about practically any technological advantage in the history of humanity. "Pens are easy, why do we need typewriters". "Ships are easy, why do we need airplanes. They crash a lot too." Etc. Get up with the times. Accept the fact that it matters more how maintainable and clear your code is, than how fast it runs in certain machines. It matters more that you focus on innovative ideas instead of reinventing the wheel every time you start an application. Why do you rewrite all the crud crap every time you have to start an app? Isn't that why you're using drupal, to save time on base stuff?
And the shitty queries - I can't get tired of saying it. User profiling. It's like mastering after you've recorded your audio tracks. Instead of programming "your way" (which doesn't guarantee better queries but makes your code less testable), you can program the right way, and only fix queries when they're broken. And have perfectly testable code to verify that well before production. Open your eyes, man.
GitHub and Lighouse are tools built by developers for developers. Twitter is the only "big time" more or less mainstream RoR site with a decent amount of traffic that I know.
I really, really doubt that Twitter is in need of money to buy hardware. They could probably buy a datacenter if they wanted to. They have a monster hit on their hands, but for some reason they can't rein in stability problems. Looks like architectural problems to me.
As far as I'm concerned, in OS world everything except Apache is exotic. Memcached is great, it allows MySQL almost compete with Oracle and SQL server. Still, if you abstract your SQL out, you make it so much more difficult to optimize it.
Your analogy about pens and airplanes is pretty good. I'm not a luddite, RoR has it's uses - like quick prototyping or light duty programming. If you try to use it for anything else, you run into trouble.
Whenever you start using a sexy new technology, when you move up the abstraction hierarchy, you always sacrifice something. When people gave up fountain pens letters lost personal touch. With airplanes you have to endure hours of stress to get on or off. Mass-produced food is full of poison and tastes like crap. Except for the food, these were good trade-offs. RoR is a lot like airplanes in this respect: it's insignificant in terms of overall traffic, blows up in most public and spectacular ways, and is most lousy as a business to be in with few exceptions (like FedEx and military). Very sexy though.
Don't even get me started on automated testing :)
This is going to be long, feel free to transfer this thread to the proper blog post. Also, feel free to thank me for spending my time on this. : )
"I really, really doubt that Twitter is in need of money to buy hardware."
Mike, take a second, and imagine yourself a one out of 2-4 guys who made a toy project. It got big and popular, but you weren't going that route. You probably have a lot of serious stuff on your hands, real ventures, business plans. Exposure of your toy project forces you to give interviews, answer for downtimes, and so on, but it's not what you're focusing on. It's not a matter of buying hardware. It's a matter of humans having only 2 hands, yet wanting to become successful. Very simple. How would you set your priorities? Would it be your #1 priority to help thousands of nameless, non-paying visitors who are probably working on something of their own that is profitable, and using your system for convenience? Simple logic. At most you'd be thinking how to use the user base for a profit. But twitter having money?? Puhlease! Just search Google for "twitter makes profit". All simply elaborations.
"As far as I'm concerned, in OS world everything except Apache is exotic."
Well, dear colleague, doesn't seem like you're concerned too far. Big projects are going with either heavily modified older versions of apache, or lighttpd, nginx, and so on. Apache is exactly what you'd usually dislike - a bloated server which supports everything, and sacrifices efficiency to shoot for wider admin audience. Other servers focus on certain things, which is what you'd expect in multi-server environment. A server responsible for responding to millions of requests shouldn't concern itself with script processing. Now when you look at it this way, is apache the right tool for the job? Sometimes. Do you notice a problem with your logic?
"if you abstract your SQL out, you make it so much more difficult to optimize it"
I would like to hear more on your complications of SQL abstraction, since this sentence has no argument. When you program using natural laws of OOP, you end up with ORM for your db, one way or another. And when your ORM makes things slow - you replace an abstracted db call in that particular method with a query that's faster. See how it works? Anywhere you can do that. What's even more fun - smart query caching decreases your database load by orders of magnitude - even more so with db abstraction. DB caches (such as memcached) use a query itself to identify a necessary resource. It means that the more generalized your query is, the more stuff is being cached. It also means that the more specific and "to the point" your query is - the more times you have bother database for each specific set of data. If on one page you'd have to fetch "select * from users where profile = 1" and on another you'd have "select * from users where profile = 1 inner join avatars on users.id = avatars.user_id", these two queries have same data fetched twice, the info from users table. You could avoid that by using abstraction and caching. Abstraction would split these queries into 2, and caching would take care of the one already mentioned.
"RoR has it's uses - like quick prototyping or light duty programming. If you try to use it for anything else, you run into trouble."
I used it for something else, have you? This argument is illogical, since there's no scientific method applied to get your conclusion. My experience showed no problems, and you have no experience. See the difference? Stop resorting to twitter for your judgement. It's old and boring. All you're accomplishing is making yourself more comfortable, and losing an opportunity to expand your horizons.
It's funny that your attempt at turning my airplanes comparison against me is similar to high school taunt. Sounds cool, but there's no substance. Rails pays at least 120k right now. It gets more and more use every day. I'm sorry to see you choosing to stand aside getting old quietly, intentionally losing touch with technology.
Not gonna start on auto-testing (i never mentioned that at all), but wanna add 1 more thing.
Rails is hard. It's harder to learn than Drupal, and harder to learn than plain programming. That's because - first of all - Rails is on Ruby (a complex beautiful language), second of all - Rails encourages you to use best practices. If you think that newbies program on rails because it's simple - that goes as far as some macro-style declarative programming copied from books. To do anything real, you have to be truly interested in best practices and computer science in general. You have to explore beautiful language, and its abilities such as blocks, closures, etc. You have to learn your discrete math, algorithms, etc. There's a reason why rails costs so much, while average php is half of rails salary on average, a reason besides scarcity.
Max, dood. Oy vey. Twitter was VC-funded to the tune of $20 mil which gave it $80 mil pre-money valuation. That buys a metric shitload of hardware. With that money they could give all their developers mullets made of pure gold, if they wanted to.
There's no problem with my logic. The problem is that RoR apps start requiring all that fancy stuff at most trivial amounts of traffic. It takes a lot to outgrow Apache using just about anything else.
I seriously doubt that you've built anything that brings in or can take a serious load. There are people who have - these guys, for instance. It's not impossible, it's just so much more difficult.
My problem with Rails is that it does not encourage me to use best practices. It actually tries for force me to use what somebody else thinks are best practices.
Newbies pick RoR not because it's easy, they pick it because it's sexy and pays better. Stupid business owners pay more for the same reason, not because it makes them more money. It's because they don't know better.
Ruby is a pretty language. It's just knowing SQL well is much more useful.
I'm gonna start with a closing </em> tag, which screwed up half this thread.
Ok, this is a little better with arguments and such. I see you manage to include a mullet into each response (which I never had before and after that one time at Stromberg where I was just waiting till it gets overall longer). :) At least I can cut my hair, but how about some exercising, huh, Mike? Some morning jogs?
According to the article, Twitter raised this funding in May of 2008. It doesn't apply to most of our conversation. What are they doing with these monies since then? Possibly improving things, maybe changing the choice of tech, etc. Only since May, buddy.
RoR doesn't require any of the "fancy stuff" in the beginning if you program well. It runs perfect on a shared host for one of my applications.
It's not "just so much more difficult" to build for serious load, it just requires testing and profiling to optimize. If you optimize while programming, you're optimizing prematurely, screwing up your maintainability. And that makes me a saaad panda.
Mike, nobody's forcing you to use best practices. Rails "forcing" goes as far as, "hey - create a class if you're making up a new entity/concept to work with". For example "hey, don't make that weather service call from your template spaghetti nonsense, just make a Weather model, and write fetch, then do Weather.fetch". Even that's not necessary. It just encourages, not forces - do proper goddamn OOP. : )
RoR is not easy. It's an illusion. It's harder than Drupal, I repeat, as a person who's been working with both extensively. And let's not talk about "stupid business owners", as neither of us can verify that.
Knowing SQL comes handy when you do profiling. I'm not going to let the advantages of my DB engine stand aside while RoR is using generalizations. I will refactor and take advantage of fast features manually, later, not prematurely, ya know whatcha mean?
Forgot to mention:
"Transferring to Drupal" - I meant your blog.
I think we were both still at Stromberg when I converted the blog from Wordpress.
Then how come only recently I noticed your site having a default drupal homepage? Were you updating something?
I was probably just changing something.
Still congrats.
Damn, that em tag above didn't help...
Post new comment