Live data from Hacker News

Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

gilesbowkett.blogspot.in

101–110 of 143 posts

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#101
Has anyone made a comprehensive comparison of the top web frameworks and how mature the libraries/plug-ins/services around them are?

Frankly, Rails and Node.js seem to have much more in common than apart. Both are based around relatively inconsistent languages (though conforming to some BDD or Good Parts style can help), both have deeply flawed runtimes in terms of performance and especially parallelism, and they seem to have extremely high overlap in the people who program in both frameworks.

What I care about is libraries, plug-ins, and services. Specifically, if I have some new web task, what I care about is that there is some library/plug-in/service that exists to perform that task (e.g., user auth, Facebook API, exception logging, Heroku, resque, state machines), that the library/plug-in/service is mature enough that I can pretend it works, and that it has enough of a community around it that it won't break in the future.

Is there some comprehensive list of use cases, plug-ins/libraries/services, and relative maturity of those plug-ins/libraries/services across web frameworks? For example, the maturity of the various ORMs across frameworks, or the various testing tools, or the various Facebook libraries. It would be great to see it change over time, and to know when to jump ship to the next flawed language/runtime that has good plug-ins/libraries/services.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#102
post #29
post #11

This came across to me as a long rambling rant which amongst other things interchangeably referred to ruby as both "ruby" and "rails", but i got the feeling it was more about bashing rails. Rebuilding something because the older stuff is is "bloated" and the new stuff is somehow superior always seems like a weak excuse to me. The new stuff quickly becomes the old "bloated" stuff and you're back to square 1. In fact I…

In fact I have no doubt that within 5 years something else new will come along and perhaps Giles will be writing another article about "Node Went Off The Script: Why I'm Rebuilding Clyde In TheNextBestThing" Which possibillity he mentions in TFA. But this is what we call progress (or, to a more bitter viewpoint) change. It doesn't stop.

Aside from async, I don't see a single drop of progress moving from Rails to Node.JS.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#103

Earlier quoted context omitted.

Rails was easy to use/learn in 2006/2007, and, coming from a background of 5 years of writing Java web apps, it was vastly easier than doing that mess.

Easy to use and easy to learn are too very distinct things.

And it was both...

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#104
post #57

Rails is missing the V8-like phenomena Node.js has. Imagine if we would see something like V12 in the future, a JavaScript engine running on nVidia CUDA. That's where I would like to run my Node.js from ;-)

>Imagine if we would see something like V12 in the future, a JavaScript engine running on nVidia CUDA.

For that concept even to make sense, we would have to have massive leaps forward beyond what is currently even believed possible in the realm of auto parallelization.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#105
post #87
post #43

Earlier quoted context omitted.

or if that's too much use --binstubs to use "bin/rake balls" or if you are really, utterly crazy, use --binstubs AND set $PATH to contain './bin' and then use "rake balls".

You can also use rvm with gemsets and just not use bundle exec at all. I'm amazed how quickly people forget about the things that bundler tries to fix. If you don't have any conflicts across your gems, you can basically use bundler as "just install my gems".

This broke for me with Rails 3.1 last I tried it. I had to use bundle exec to get it to work.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#106

Earlier quoted context omitted.

I'd go further and say, that it will be very hard to have a good MVC framework with Node before the async callback mess is brought under control. Maybe we'll even need something like Iced CoffeeScript for this.

I'd caution against any "I'd go further to say" statements. Either you know because you've tried, or you don't and are simply guessing. As someone who has made an MVC framework in Node.js and launched a production site using that framework, I can assure you that it's not hard to avoid async callback mess. I can also assure you that many others have had success doing this. It's really not difficult to write beautiful,…

All the examples, github repos, books, and tutorials I'm seeing with my dive into node say exactly the opposite - the code becomes a mess of callbacks. It looks like enormous work goes into avoiding callbacks, similar to the amount of work that went into Rails in 2005 so that server-side folks could avoid writing JavaScript.

I'd love to see this framework you wrote. Is it open-source? or is it something you're unable to share?

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#107
This is garbage, why is it being voted up?

Rails is not bloated it's modular and quite simple if you understand ruby and can read - look at the source. That said his to address his _complaints_:

* Rspec / Testing is slow as it has to reinitialize a whole rails stack every time it runs - run it async smartass it's what you're preaching, use inotify or fsevent with watchr or guard.

* Bundle exec for Gemfile changes? This guy is inept.. async yet again with inotfiy / fsevent

* HTML5 - It's a server side framework, if you want HTML5 you do it in the markup or the included coffeescript pipeline, why not pure coffeescript / javascript? because I value my time and sanity over the new hotness

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#108
post #33

Tldr: Giles discovers 2011.

Too short, expanding: Giles BS reasoning of what 2012 should be resonates so well with you, that you not only consider it the truth , but also "so yesterday, dude". i.e another fad-chaser.

Yeah, but you have to give the guy credit, his was the only comment that made me laugh.

And it's basically true. Not in the sense that this is new to me, I did a bunch with node and jasmine-node (etc.) in 2010, maybe earlier, but I went to a Ruby conf and was shocked how many people hadn't heard of it. even heard people saying you don't have to test JS because it's hard. so I decided the Ruby community needed to have a look at all the stuff that's already been going on for quite some time in JS-land.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#109

Earlier quoted context omitted.

I'd caution against any "I'd go further to say" statements. Either you know because you've tried, or you don't and are simply guessing. As someone who has made an MVC framework in Node.js and launched a production site using that framework, I can assure you that it's not hard to avoid async callback mess. I can also assure you that many others have had success doing this. It's really not difficult to write beautiful,…

All the examples, github repos, books, and tutorials I'm seeing with my dive into node say exactly the opposite - the code becomes a mess of callbacks. It looks like enormous work goes into avoiding callbacks, similar to the amount of work that went into Rails in 2005 so that server-side folks could avoid writing JavaScript. I'd love to see this framework you wrote. Is it open-source? or is it something you're unable…

You have to think about async code differently than you think about synchronous code. In PHP you might write:

  $data = getData();
And people want to substitute the return for a callback in js.

  getData(function(data) {
    // Do something with data.
  });
That indeed does lead to callback mess. But when you are coding in js you rarely should use anonymous functions. I mostly just use them when I might want to perform recursion. Going back to my example, I would write the operation as an object like so:

  var SomeObject = {
    start: function() {
      getData(dataGot);
    },

    dataGot: function(data) {
      
    }
  };
JavaScript is an object-oriented languages; use objects! They make async painless.

Re: Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript

#110

If fashion is dictating your technology choices you're not choosing hard enough problems to solve.

Upvoted!

But here's the thing. How many technology choices does fashion dictate? I've seen fashion determine huge amounts of technology choices, and wheels get reinvented constantly in this industry as a result.

In 2006ish I did a talk about MVC JavaScript at a tiny FooCamp in Albuquerque. At the time people were all excited about Rails MVC, and I was like, "hey, initially MVC was for GUIs, and Ajax is headed towards GUIs." Because of that, it was easy to see that this particular wheel was headed for imminent reinvention.

It's easy to sneer at individuals for making technology choices based on fashion, but that's petty. Take a minute to look at communities making technology choices based on fashion. The periodic re-invention of wheels in programming mirrors the cyclical nature of fashion in terms of what people wear.

Embarrassing fashion confession: I used to be a raver in the 90s. I wore big baggy jeans. In the disco era, people wore pants like that. They called them flares in the UK and bell-bottoms in the US. Clothing fashions cycle, and programmer fashions cycle too.

If fashion is dictating an entire community's technology choices, you can learn something about the fundamental problem they're solving by asking yourself what wheel they're re-inventing, and looking into the history of computer science a little to see how programmers solved it last time.

Post reply on HN