HN2new | past | comments | ask | show | jobs | submit | 2009-05-18login
Stories from May 18, 2009
Go back a day, month, or year. Go forward a day, month, or year.
Currently working on a Startup part time
223 points | parent
Not working on a Startup at all
221 points | parent
3.The Git Parable (building a Git-like system from the ground up) (preston-werner.com)
147 points by mojombo on May 18, 2009 | 20 comments
4.Dear American Airlines... (dustincurtis.com)
136 points by kyro on May 18, 2009 | 87 comments
5.A Life Offline (aaronsw.com)
130 points by imgabe on May 18, 2009 | 83 comments
6.Ruby on Rails and the importance of being stupid (law.harvard.edu)
120 points by lackbeard on May 18, 2009 | 92 comments

Judging by some of the comments here, it seems people are giving Greenspun a free pass because he's apparently getting at deeper point. However when I read this article, it is chock full of straw men. The comparison between a competent Microsoft programmer vs a complete bumbling fool labeled as an MIT Genius is at best intellectually dishonest. I wrote a lengthy response which I'll post here in case his moderator decides he doesn't like it:

I read the moderation policy where it's suggested that reviews of the post are not valued. However I feel an obligation to point out the factual errors in this post. There are dozens of nonsensical assertions and could potentially be very misleading to anyone who doesn't understand Rails or web development in general.

My first general critique is that there is no real comparison going on here. It says the business guy called up Microsoft and they recommended buying a bunch of hardware, but there's no discussion of who developed the site or how they got up and running. There's no discussion of the price of the hardware, which clearly looks to be well into the 5-figures, or the price of the fiber connection at home, system administration, backups, etc. To get into some specifics:

The programmer, being way smarter than the swaptree idiot, decided to use Ruby on Rails, the latest and greatest Web development tool. As only a fool would use obsolete systems such as SQL Server or Oracle, our brilliant programmer chose MySQL.

This is a caricature of an "MIT Genius" that doesn't jive with reality. Anyone who was actually that smart would know better than to dismiss Oracle in favor of MySQL. They may prefer using Ruby on Rails and be more productive than if they used .NET, but they wouldn't go around calling people idiot's for such superficial reasons. Therefore you're not describing an actual genius, just someone who thinks they are a genius, but is actually a fool. Using such a person as the basis for an argument of why Microsoft's recommendations are better than Rails is intellectually dishonest.

How do you get scale and reliability? Start by virtualizing everything. The database server should be a virtual “slice” of a physical machine, without direct access to memory or disk, the two resources that dumb old database administrators thought that a database management system needed.

The reason that virtualization is done in the web deployment world is so that you can get access to fast and reliable hardware if you need less than the cost of the full resources. A degenerate example would be that if your capacity requirements could be met by a 250mhz processor, you would get better throughput by using 1/8th of a 2Ghz server. The reasoning for this is that the vast majority of sites don't need dedicated hardware, which you seem to imply as being cheaper, but clearly it is not if you are leasing server capacity.

Ruby and Rails should run in some virtual “slices” too, restricted maybe to 500 MB or 800 MB of RAM. More users? Add some more slices!

I'm going to assume you are talking about EngineYard here, since that is the managed Rails hosting provider I am most familiar with and is somewhat inline with your pricing figures below. First, the 500 or 800 MB is just a base amount of RAM that is good for most small Rails apps. When that starts to run out, the solution is NOT to add more slices, you simply commission more RAM. EY can do this without even restarting your slice. Incidentally you can also commission more CPU if you need it. The reason they start with two production slices is for redundancy. One of your slices goes down for some reason? That's okay because there's a backup.

The cost for all of this hosting wizardry at an expert Ruby on Rails shop? $1100 per month.

What you described above is a very poor description of what you are paying for at a managed hosting provider like EngineYard. I will describe managed hosting in a minute. But to compare to your unmanaged Microsoft example, I currently pay $8/month for a 256MB of unmanaged hosting that is plenty to server significant traffic on a well optimized app. This is an order of magnitude less than the Verizon FiOS line alone, and provides much better network connectivity (ie. multiple tier-1 connections, lower latency to more endpoints).

With managed hosting at EngineYard, you are not just paying for the server. You are basically paying for a fulltime system administrator. They have people all over the world ready to help you at a moment's notice any time of day or night. They proactively monitor your server and contact you if they notice any abnormalities. They provide a large suite of finely tuned recipes and standard software installations that they can install on a moment's notice, and will tie into their monit-based server monitoring setup. The individual machines in the cluster are optimized for their specific tasks. The network hardware and topography is optimized for real world usage scenarios. They continuously tune the machines for throughput and move clients around to avoid bottlenecks. They will even take significant steps towards helping the client tune their own application, above and beyond their contractual obligations for server adminstration. In short, you've completely ignored 95% of what they do, and painted it as extremely expensive without even providing a comparison against the overhead costs of buying and managing your own servers.

For the last six months, my friend and his programmer have been trying to figure out why their site is so slow. It could take literally 5 minutes to load a user page. Updates to the database were proceeding at one every several seconds. Was the site heavily loaded? About one user every 10 minutes.

If a request on an unloaded server takes 5 minutes to load, and the programmer can not figure it out in 6 months, then that programmer is incompetent plain and simple. Laying this at the feet of Rails is just plain ridiculous.

I began emailing the sysadmins of the slices. How big was the MySQL database? How big were the thumbnail images? It turned out that the database was about 2.5 GB and the thumbnails and other stuff on disk worked out to 10 GB. The servers were thrashing constantly and every database request went to disk. I asked “How could this ever have worked?” The database “slice” had only 5 GB of RAM. It was shared with a bunch of other sites, all of which were more popular than mitgenius.com.

Are you implying that you need enough RAM to keep the entire database in physical memory? That is patently false. In a worst case scenario, yes it could take performance down quite a bit, but disc access is not nearly as slow as implied above. I've served tons of sites on pure shared hosting (not even virtualized) with much higher load and orders of magnitude better performance than you are describing here.

How could a “slice” with 800 MB of RAM run out of memory and start swapping when all it was trying to do was run an HTTP server and a scripting language interpreter? Only a dinosaur would use SQL as a query language. Much better to pull entire tables into Ruby, the most beautiful computer language ever designed, and filter down to the desired rows using Ruby and its “ActiveRecord” facility.

This is nonsense Philip. Please don't take this as an ad-hominem, because there's no other way to put this. What you described here is 100% pure nonsense. ActiveRecord, like any ORM component, abstracts away some SQL in order to simplify common database interactions. The lion's share of ActiveRecord code is all about constructing efficient SQL. When you are developing with Rails it shows you all the SQL running the development log, and you can quickly spot n+1 errors. If you need something more efficient, it offers plenty of levels of access right down to pure SQL.

In reviewing email traffic, I noticed much discussion of “mongrels” being restarted. I never did figure out what those were for ... What am I missing? To my inexperienced untrained-in-the-ways-of-Ruby mind, it would seem that enough RAM to hold the required data is more important than a “mongrel”. Can it be that simple?

I'm shocked that a programmer would speculate so wildly as to say something like this. A mongrel is an application server. I don't understand what you seem to think it is, but it's simply the process serving up Rails requests to the web server and passed through to the client. Typically you run more than one so you can serve multiple requests concurrently, but for a well-optimized app usually no more than 3 or 4 are necessary. Rails uses a non-threaded share-nothing architecture which means you can scale horizontally across unlimited servers. Note that I am not talking about virtualized servers. I'm talking about when you have more traffic than the biggest server in the world can handle, Rails will let you scale out painlessly at the web server level until your database can not be served by a single box. At that point you need to look at database sharding, or alternative data stores using Map-Reduce or some other scalable database solution.

None of this is to say Rails doesn't have its warts. Ruby is memory hungry, leaky, and relatively slow. Deployment has traditionally been very complicated compared to something like PHP (although it's much improved with Phusion Passenger aka. mod_rails for Apache/Nginx). There are many reasons why you would be well-advised not to use Rails, however this article doesn't touch on any of them. Rails, just like Oracle, .NET, Java or many other technologies is a proven platform with pros and cons. In this article you pit an apparently competent programmer developing swaptree.com against what can be described as nothing less than a complete bumbling idiot using Rails. You insist the cost of Rails is high without any justification or direct comparison against the costs of swaptree.com.

I've read your blog in the past and found it to be pretty interesting, which is why I've taken the time to write this response, and suggest politely that you retract this article.

8.Amazon EC2 gets statistics, auto scaling and elastic load balancing (aws.typepad.com)
115 points by ropiku on May 18, 2009 | 42 comments
9.How to make your application viral - A guide to getting users (danieltenner.com)
112 points by swombat on May 18, 2009 | 32 comments
10.Top Programming Fonts (hivelogic.com)
68 points by danbenjamin on May 18, 2009 | 49 comments
11.Vim made easy: how to get your favorite IDE features in Vim (arstechnica.com)
67 points by sdfx on May 18, 2009 | 44 comments

Yawn. Yet another misinformed "Ruby/Rails can't scale" article.

Seems to me the main problem is that his "MIT trained" friend had no experience building a scalable web service. He would've botched it up in PHP, Python, Java, whatever. There's nothing about his main mistakes- running your database on a shared server, naive (ab)use of SQL- that is unique to Rails.

And this bit: "pull entire tables into Ruby, the most beautiful computer language ever designed, and filter down to the desired rows using Ruby and its “ActiveRecord” facility" is completely incorrect and makes it obvious Philip Greenspun knows less than nothing about what he's ranting about.


Everything in moderation, including moderation.

Every now and then I run across a story like this where someone is overburdened with communication and technology and wants to give it all up for a fixed time to cleanse themselves from the toxicity of modern life. Then they come back renewed, with new energy to conquer it all, and tell everyone how great it is and that everyone should give solitary confinement or meditation a serious attempt. Then a few months later, they get back into their old overloaded lifestyle of stress and constant work.

No, you don't need to give it all up for a month or year to find yourself. This is reaching out to the other extreme because you hope to end up in the center eventually. How about just slowly moving to the center from where you are? Get rid of the email+text features from you cellphone. Billions of people live perfectly fine without it. Keep GPS/web on your phone but only use when needed. Feel free to check your email whenever you have a few minutes but don't reply to it immediately. Shape your routine so you get to do what's important and not just what's urgent.

When not doing something productive or relaxing on the computer, step away. Go kayaking, hiking, camping, or jogging. Go to the movies, mall, museum, theater, art show, or a theme park. Get a backyard project, build something in real life, get your hands dirty. And while you do all of this, make adequate use of the technology available to you without feeling crushed under it. The purpose of technology is to solve real-life problems. It is not to replace real-life with a 24/7 stream of stress. People are good in general. Don't ignore them for a month because they contact you too much using different mediums. Spend more time with them in person, even if they annoy you. And use your knowledge of technology to enrich your and their lives. What good is 15 years of computer knowledge if you renounce it instead of sharing it with others?

Connectivity is not bad. What is bad is not knowing what form of communication to give more value to. Figure out your communication medium hierarchy and live by it. Mine goes:

    Face-2-Face > Video chat > Phone > Email > Message boards > Social Networks
My social goal is to take people from the lower end and move them towards higher end. So I may get a friend message me through Facebook, then we'll email, then phone, with the final goal to hang out next time one of us is in town. Without technology, none of this would be possible. I love technology, but only enough to enable me to improve my real-life social activities.
14.Ask HN: Your Hacker Workspace
61 points by janitha on May 18, 2009 | 86 comments
15.The Death of Richard Dawkins: A short story by Steve Yegge (steve-yegge.blogspot.com)
59 points by mstevens on May 18, 2009 | 20 comments
16.Django tip: Caching and two-phased template rendering (holovaty.com)
58 points by mace on May 18, 2009 | 6 comments
17.Djng - a Django powered microframework (simonwillison.net)
56 points by simonw on May 18, 2009 | 19 comments

Nice rant, good PR for yourself. I guess it would be easy for anyone to redesign this site if they threw all business and technical requirements out the window as you have.

What are you supposed to do for one way trips? What if I am booking a multi-city flight? What if its an award ticket with miles? What if I want to check first class flights only? Flights with fully refundable fares? How do I check fares for children? What if I want non-stops only? Have you tested your "when" box with users? I can guarantee some of my less technical friends and family members would have no idea what to put in that box.

If you want a simple tool, fly an airline that has simple routes. All of you who love Southwest, go fly them. No one is forcing you to fly American. If you don't think they are providing shareholder value, don't buy their shares.

Anyway, like I said, nice PR. You suckered me in.

19.Django Command Extensions (wiki.github.com)
53 points by samueladam on May 18, 2009 | 6 comments
20.Fixing Threads in Ruby 1.8: A 2-10x performance boost (timetobleed.com)
51 points by sprsquish on May 18, 2009 | 14 comments
21.Computational complexity lectures by Fields medalist Tim Gowers. (cam.ac.uk)
50 points by amichail on May 18, 2009 | 7 comments

Wow, I am a hacker on my computer 60-80 hours per week and my lifestyle is 179 degrees from yours.

I have no land line and a cell phone, but it's not a smart phone. I carry it to work or out of town, but nowhere else. If I visit someone else, run an errand, or go out to eat, you'll have to leave me a voicemail. Sorry about that, but I devote my full attention to the people I'm with.

I have a laptop, but it leaves my desk once or twice a year. If I'm on the road, I probably have a file folder full of papers and a thumb drive, but no electronics.

I check email many times per day and I visit hn many times per day, but only when I'm already at a computer. I never IM, Facebook, Twitter, or text. If you want to communicate with me: if it's important, call me, if not, email me. Either way, I'll get to it when it's convenient for me, and I'll respond fairly quickly.

I went out to dinner with a group including my 22 year old niece. She texted the entire time (under the table, but we all noticed). How sad, I thought. What was so important that she ignored the rest of us for an hour?

I almost feel sorry for you, Aaron, but then again, I know better. I'm curious to see how the next month will affect your lifestyle afterwards. Hopefully, I'll be able to welcome you back to the real human race (by email, of course.)

23.Adium adds support for IRC and Twitter... (adium.im)
50 points by ericholscher on May 18, 2009 | 17 comments
24.Scribd Invites Writers to Upload Work and Name Their Price (nytimes.com)
49 points by robg on May 18, 2009 | 12 comments
25.Poll: How many HN readers are working on a Startup?
48 points by minus on May 18, 2009 | 60 comments
26.All Medical Science is Wrong within a 95 % Confidence Interval (entropyproduction.blogspot.com)
49 points by jackchristopher on May 18, 2009 | 41 comments
27.Mixed Feelings (wired.com)
46 points by geuis on May 18, 2009 | 7 comments
28.Resty - a bash REST client (github.com/micha)
44 points by wooby on May 18, 2009 | 4 comments
29.Preparing For A First Meeting With Me (feld.com)
44 points by peter123 on May 18, 2009 | 20 comments
30.Finally, CSS based gradient text, no images (dragoninteractive.com)
43 points by oni0n56 on May 18, 2009 | 23 comments

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: