In my career I spent a good deal of time working overnight, pulling 12, 24, and even 36 hour coding sprints. You can cram a couple of weeks of work into 36 hours. This is not unusual or heroic at all – most programmers I know routinely work crazy hours.
Because of this it is very important to have a couch for naps in the office. At my current job there are no cornerner offices. Every corner of our parallelogram-shaped building is either inside a conference room or set aside for a small meeting space. One of them is where “my” couch is. Whenever I’m working off-hours and stuck, I go there to take a nap. Just like Don Draper in “Mad Men”, I almost always wake up from the nap with an idea of how to solve the problem.
Recently there was a some kind of commercial shoot at the office, and I’ve been sent this photo. There he is, Doctor House, MD, on my couch!

Actually, I only recently started watching House, having being unable to turn off disbelief of so many doctors spending so much time on patients. I did not realize that it was a neat little pun on Sherlock Holmes, complete with drugs, loyal sidekick, and even very sexy Mrs. Hudson. Now I have 4 seasons to watch.
Pingback: buy facebook fans us
Pingback: mission fitness
Pingback: best supplements for muscle gain
Pingback: Kia Picanto
Pingback: pre workout supplements
Pingback: Peak Oil
Pingback: best pre workout supplements
Pingback: Escort girl Paris
Pingback: watch free movies online
Pingback: Smoke Herbal Blend
Pingback: post ads free
Pingback: how to avoid work at home scams
Pingback: Earn Money Online India
Pingback: myp2p forum
Pingback: picsterten
Pingback: web hosting
Pingback: Manchester boot camp
Pingback: buy neopoints
Pingback: lawn care advertising
Pingback: what is serotonin
Pingback: how to work from home
Pingback: icf bracing system
Pingback: solar panel installation
Pingback: samsung s860
Pingback: Good video camera
Pingback: Laser Hair Removal From Home
Pingback: backlinks
Pingback: Scott Tucker Payday Loans
Pingback: medical job search
Pingback: Scott Tucker Racing
Pingback: clearwater homes
Pingback: Medical Tourism Houston
Pingback: football speed
Pingback: LOANS
Pingback: money
Pingback: Proactol Plus
Pingback: maryland short sale expert
Pingback: Air Conditioning Repairs
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.
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?
Still congrats.
Damn, that em tag above didn’t help…
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 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. : )
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.
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.
Then how come only recently I noticed your site having a default drupal homepage? Were you updating something?
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 :)
I was probably just changing something.
I found this entry by accident while searching for photos of House’s office (I have the same two mid-century modern chairs in my office as sometimes appear on the show).
Anyway, awesome photo! That would make my day to find out that Hugh Laurie had been sitting in my chairs over the weekend. (Doubt that would happen as sitting in them is like sitting in a crevasse, but still.)
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 :)