Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Here's the path I've been following :

(ruby)rjs -> prototype -> jquery -> backbone -> angular -> react -> flux -> redux -> elm...

But I'm just a backend guy happy with Ror, just waiting to go on the frontline... with the proper weapons!

My feeling about elm is that it's more than the new kid on the js block. It's closure without parens, it's Haskell without academy, it's Redux without facebook, it's duck-typing without quacks, it's MVC without objects and last but not least evan Czaplisky (the creaor) is the new Aaron Patterson (bright and fun!)

I'm all in (but yeah I've been bitten before)...



From my limited experience playing with Elm

Pros:

- All the Joys of functional programming .

- Once you satisfy the compiler you can be fairly sure that code will just work.

- FRP saves you from callback hell.

- Fairly easy Javascript Integration via Ports( also see con on this)

- Time traveling debugger ( see con about this)

- Active mailing list.

- Automatic package versioning which more or less works for the most part

- Pure render function ( popularized by ReactJS), makes writing/debugging UI's trivial and painless.

- "Concurrent" FRP

Cons:

- Javascript integration is very and tedious. You have to declare all your ports in main which breaks abstractions. There is "secret" way of integration via Native modules but this will break if compiler changes ( which does quite often ).

- Debugger/reactor won't work if you have ports, basically all non trivial apps.

- All the ui components have to be reimplemented since stuff like jqueryui/webcomponents don't work ( react suffers from this also)

- No support for isomorphic apps, its a client side only tech.

- Can't do code splitting. Compiler generates one big blob of js.

- Constantly changing terminology ( eg: mailbox)

- IDE's/code editors are on the same level as dynamic languages i.e no code completion, refactoring ect.


That's a lot of churn. You should stop and ask yourself if it's worth being on the cutting edge all of the time. Are you making better projects as a result of dropping "old" tech the moment something shinier comes around?

Everything has tradeoffs. Elm has no server side rendering, for example.


>Are you making better projects as a result of dropping "old" tech the moment something shinier comes around?

That's a lot of assumptions you are making there. Why "better projects" is the only metric considered here? Perhaps, OP utility in front end technologies is based on their learning. Or what's you reason to assume OP is dropping old tech "the moment something shinier comes around" and not after a reasonable period of exploration and trial?

Prototype.js was created in 2005, 10 years ago. Angular was released in 2009. React was released in 2013.

A lot of churn? Absolutely not. Someone staying current, perfecting their skills and knowledge? Good for them!

The HN trend of "hipster shaming" people trying new, sometimes esoteric technologies (even if it's only for the novelty factor!) is not conductive to constructive discussions and really has no place in the community named Hacker News.


Unless building a taste for long lived techs as opposed to favoring the newest reinvention of old ideas is part of the learning process?


It may not be that he's trying to be cutting edge, so much as trying all of the options to see which one he wants to use.


Considering rjs and prototype are way past dead and buried, that path covers a good 6-8 years, and up until React mirrors what most client-side devs have gone through.


Maybe check out clojurescript. Lots of React/Flux/Redux/Elm like ideas in there, you'll get exposure to clojure proper.

That said, maybe stick with elm. The only way to make the thing you love blossom is by promoting and evangelizing it. :)


You can skip all of that and just use https://github.com/gaearon/react-transform-boilerplate as your sole dev environment. You don't need all of that other stuff, especially for prototyping. This is an instant win if your familiar with React (its just JavaScript)




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

Search: