5 ms·
This is largely a solved problem, at least if you choose the right framework. For example, Rails + Heroku gives you sensible defaults for your programming lang
by ekidd 16y ago
This is largely a solved problem, at least if you choose the right framework.
For example, Rails + Heroku gives you sensible defaults for your programming language (Ruby), you web server (Heroku), your database (PostgreSQL), your server side web framework (Rails), and your client side web framework (Prototype—perhaps not my favorite, but certainly a default). You can have this all set up from scratch in well under half an hour, your first time through.
If you don't like Rails, you can find similar pre-configured environments elsewhere.
The real web development headache is just how many of these layers you need to understand: SQL, a server-side language, HTML, CSS, JavaScript, and multiple libraries designed to make server-side and client-side coding sane.
According to other comments in this thread, the author has a commercial product designed to address the issues he raises. But if so, he does not seem to realize that he's working on a problem with many existing solutions.
- deleted 16y ago[deleted]
- Yoric 16y ago> The real web development headache is just how many of these layers you need to understand: SQL, a server-side language, HTML, CSS, JavaScript, and multiple libraries designed to make server-side and client-side coding sane. So I take it that you agree with me on the brokenness of web development, even if you consider that setting things up is not all that bad? You mention the layers themselves as a headache, and I could certainly have added them to my rant - for many, they are a nightmare by themselves. But let's just assume that we're all seasoned developers and that no language or sum of languages is too scary for us, as long as they interoperate correctly. We still have a nightmare, here, because these languages simply do not cooperate. Just getting them to work together takes considerable amounts of glue. And please tell me if I missed something, but last time I checked, RoR + Heroku really didn't solve much of the glue nightmare.
- bricestacey 16y agoThere is no glue nightmare. You get a full stack each time you type `rails new myproject` that works seamlessly. You can code right away and put off tweaking your database and web server until later. Also, if you add additional libraries there is no dependency hell because RVM and Bundler are each a work of art.
- Yoric 16y agoLet's stick to the vocabulary I imposed with my rant :) That's the _dependency nightmare_ you're mentioning. I agree that RoR solves a non-negligible chunk of it. But I have never seen a "rails new foobar" configure my SELinux or introduce any sane security policy in the database, for instance. So, the nightmare is still here. The _glue nightmare_ appears when you're trying to pass non-trivial data from the client to the server, or worse, from the server to the client. Or when you're trying to validate the heck out of input data to ensure that there is no CouchDB injection or SQL injection or anything such.
- ekidd 16y agoSo I take it that you agree with me on the brokenness of web development, even if you consider that setting things up is not all that bad? I completely agree that web development is a mess. I just don't think that the first major problem described in your rant (choosing a programming language, web server, database, server-side framework, and client-side framework) is actually a major problem these days: Just pick any modern stack, and use the defaults. And please tell me if I missed something, but last time I checked, RoR + Heroku really didn't solve much of the glue nightmare. Rails provides excellent glue between the database and server-side code, at least if you like the sort of APIs provided by ActiveModel. (I do, some people don't.) Rails provides less glue between the server-side code and the client-side code, at least out of the box. Basically, it pre-configures Prototype, and makes it easy to do basic AJAX stuff via view helpers and unobtrusive JavaScript. If you prefer jQuery, you can switch over in about 30 seconds using jquery-rails. Rails does not provide a default client-side toolkit for highly interactive JavaScript applications, such as those typically built using Backbone.js or SproutCore.
- Yoric 16y ago> I completely agree that web development is a mess. I just don't think that the first major problem described in your rant (choosing a programming language, web server, database, server-side framework, and client-side framework) is actually a major problem these days: Just pick any modern stack, and use the defaults. Actually, the first problem mentioned was not choosing, it was _dependencies_ and then _documentation_.
- hackernewz 16y agoIf you have to spend any time setting it up, it doesn't have sensible defaults.
- ekidd 16y agoWhen I said you could set everything up in under 30 minutes, I meant starting with a bare Macintosh (or Linux box), with no development tools or Heroku account, and ending with fully deployed and scalable production application. The second time through, I can probably do it in under 60 seconds. rails new my_app cd my_app git init git add . git commit -m "My application" heroku create git push heroku master Creating database tables adds a few more commands: rails generate model post title:string body:string # Commit new files. rake db:migrate heroku maintenance:on git push heroku heroku rake db:migrate heroku maintenance:off I imagine that Microsoft, PHP and Django have something similar, or are working on it as we speak.
- candidlyvic 16y agoMS has nothing near as simple.
- edanm 16y ago"This is largely a solved problem, at least if you choose the right framework." I've never used Rails or Heroku, so I have a question - how many companies can depend on deploying to Heroku? Is it really flexible enough? I have only used Python + Django. A few solutions are starting to crop up for Heroku-like easy deployment. But I have some special needs that I don't think will be covered well by these services (for example, I have to do Comet, which means setting up an extra server to do Comet, etc.) My gut has always told me that Heroku is fine for deploying your application initially, but that most companies will quickly outgrow it and have to resort to manual deployment solutions. By the way, in my case, I started off with deploying on DreamHost, which is almost brain-dead simple. Then I moved to WebFaction, which gave me more flexibility but I had to do some extra stuff for deployment. Then at some point, when I started making more serious apps, I moved to using VPSs and encountered exactly the nightmare the OP is talking about. I suddenly had to learn how to deploy from scratch, which involved learning to install and configure various programs, and get them working together. It was... not fun.
- ekidd 16y agoI've never used Rails or Heroku, so I have a question - how many companies can depend on deploying to Heroku? Is it really flexible enough? As long as you don't write to the file system, and you don't need non-web, non-worker, non-cron server processes, you're probably OK on Heroku. You also have to be willing to trust Amazon and Salesforce, which isn't too big a stretch in many industries. Their WebSocket support is still in beta, and it's not clear whether it supports Comet on non-WebSocket browsers: http://addons.heroku.com/pusher http://addons.heroku.com/pusher On the other hand, if you need to respond to ZeroMQ messages, or if you need to poll S3 every 5 seconds, Heroku's just not going to work for you. In that case, you can either toss everything onto a server running Phusion Passenger, or set up a real deployment infrastructure with Chef (or Puppet). This can take up to 2 days for a sufficiently messy project, assuming you want to fully automate everything, and I agree that's it's not fun. (Edit: Chef provides pre-packaged deployment instructions for Apache, Unicorn, Rails, ha_proxy, a database, etc. This takes a couple of days to work through the tutorials and set everything up. The setup is a bit of a drag, but it's sweet once everything is working.)
- nhangen 16y agoWhat about gems? As someone new to both Ruby and Rails, I found the process of installing both + gems and anything else I needed to take most of my first day coding, not to mention if I install on two machines. I'm no programming guru, but it seems to me that even Rails could be simplified.
- bricestacey 16y agoGems are super simple once you get the hang of it. Look into installing RVM[0]. It will let you manage multiple versions of ruby at once. Also get familiar with Bundler[1] and watch the Rails 3 screencast[2] that explains it. [0] https://rvm.beginrescueend.com/ https://rvm.beginrescueend.com/ [1] http://gembundler.com/ http://gembundler.com/ [2] http://rubyonrails.org/screencasts/rails3/bundler-action-mailer http://rubyonrails.org/screencasts/rails3/bundler-action-mai...
- kaylarose 16y agoTake bricestacey's advice, use RVM. I was in the same boat as you when getting started with Ruby - it seemed like I was always fighting with gems and other dependencies - "there has to be a better way!", I thought. And there was... I read this article[1] and it changed my life. [1]http://sirupsen.com/get-started-right-with-rvm/ http://sirupsen.com/get-started-right-with-rvm/
- astrodust 16y agoThere's always Bundler (http://gembundler.com/ http://gembundler.com/) to make your life a lot easier. Prior to this it was a bit of a scramble to get everything installed properly.
- netaustin 16y agoIf he is as successful as Rails, one of the biggest impacts he'll have is the creation of a hundred other frameworks in other languages. Also, the "I don't want no glue" line is a lie. Any such framework to coerce Web Development into a single language is all glue, all the time. Further, he has a marketing problem. Most seasoned developers probably will not flock to a framework that prevents them from writing their own HTML/CSS/JS/SQL, so he'll have to grow his user base on people who haven't been programmers for long.
- Yoric 16y agoEdit: Ok, I can rephrase this "I don't want to write no glue"