Why Meteor
meteorpedia.com
meteorpedia.com
This requires joins. Mongo doesn't have joins, and Meteor doesn't even have fake joins, like Mongoose's 'populate'. There has been a lot written in the Meteor community about faking joins, as it is a persistent problem. First, I tried template helpers, but these are impossible to put into a nested template.
I looked at 5 different open source packages for serverside fake joins, but ended up doing a clientside solution (to get a feel for the 'basic' way to do things). This solution involved several functions on the clientside router, that would be called several times, with different data available each time. It is a convoluted thing to do, no matter the method.
Another thing I tried to do was purely clientside databinding, to populate the author badge in real time as the user fills a form. It's trivial to bind data to the database and have that update in realtime, but I wanted to hold off saving anything until the user hit the save button. Again, a simple task got weird. I ended up using an un-synced database collection, then saving to an identical, but synced collection.
I'm not writing off Meteor completely, but I ended up moving away from it. Node.js and a solid frontend framework have slightly more boilerplate, but are generally very flexible for whatever it is you want to do. In retrospect, one of the best things about Meteor is the one-line auth setup. This is usually a big pain, and it was nice to have it be so easy.
Meteorpedia, the site in the OP accomplishes this without joins. It has authors for pages. You just have to set up your schema in a way that's different from normalized SQL.
I almost find that the single biggest barrier to fully investing in is Mongodb. The queries are hideous. But Meteor is heavily invested in Mongodb and I'm afraid this is what will kill it.
My understanding was that, for better or worse, Meteor abstracts a lot of that from the developer.
Were you unhappy with the queries that Meteor generated?
Or did you find your application did not perform well, or in the way that you expected, and you believe this to be the result of the queries?
Or were there issues on the deployment/operations side of things?
I was excited and did 4 push-ups but it is a convoluted thing to do.
I'm not writing off exercise completely, but I ended up moving away from it.
I'd love to hear if anyone has used meteor for something read and if they've had to deal with migrating to something else: how they've done it, and what issues they encountered.
For example, I love angular, but migrating away from angular after using it for one year would doubtless be a very painful process.
The app is http://anonquest.com/ It's a realtime story writing community. Be happy to answer questions.
I wish AngularJS’s dependency injection/forced modularity and HTML augmentation/templating were somehow independent and not requiring each other.
> if I outgrew this, how difficult would it be to migrate away from it?
I'm becoming successful at fighting my urge to migrate my projects away from things I outgrow. I reason that changed preferences alone should not constitute a reason to rewrite an existing and working solution. And in case costs of adapting existing solution are higher than costs of rewriting it from scratch, then this is probably due to some unfortunate design decisions or obscure libraries/frameworks used, so these are the things to avoid.
That was why I eventually switched to React after trying to find ways to have Angular-like components/bindings without the DI/IoC parts of Angular (even going as far as reimplementing parts of Angular).
If you only want the bindings, maybe rivets or knockout is an alternative?
I just want to make the distinction between that and JS frameworks that don't try to own your whole stack. Migrating from Angular is no more painful than migrating from Backbone. They're all frontend frameworks that talk to a rest api. When choosing between React, Backbone, Angular, Ember, etc ... it seems to me that migration effort shouldn't even be a consideration since a complete UI rewrite will be required in any case.
The whole idea of having to run phantom.js to render your website because search engine robots can't index your site reminds me awfully like trying to keep up with a high maintenance girl who is more trouble than she's worth.
Stay away from Meteor until they hit 1.0, unless you're ready for pain.
Even front-end frameworks like Backbone.js doesn't make sense to me. I still find using jQuery more than adequate.
There are bad programmers and bad programming practices for every language. If you see code that has 5 levels of nested callback chains, it's only because people don't know how to write code. Have you see chromium code? It's filled with callback in c++. All this is nothing new.
Why would you write a CRUD app using Node.js when you can accomplish this in multitude of other well established methods? LAMP, Java, Python etc.
Nothing wrong with experimenting but for real world needs, there's no clear answer as to why you would need Node.js to redo what you used to do.
I use Node/JS on the server b/c I'm hyper productive with it. Like all languages/frameworks/runtimes there are issues. But the speed of development is what keeps me on Node, despite the fact that other languages do not share some of the same weaknesses as JS.
I'm working on an alternative template engine for Meteor now based on django. Currently in a big branch that's moving slow since I'm pretty busy at my regular job.
We originally wrote the app using sql and signalR and as we've done with many of company's (Tempworks Software) products, but we switched in no small part for the real-time reactivity offered natively in Meteor and the productivity gains from its packaging system.
At one point we used Knockout for all our binding but switched when Meteor's Blaze matured. The speed and simplicity of the templating engine coupled with the fact that js is used both client and server side reduces the learning curve as we add devs to the project.
Contrary to many comments here, I've really enjoyed using mongodb and find it fast and eminently suitable for a problem domain like CRM that is constantly in transition.
Our biggest problem with Meteor was that as a new platform there were no enterprise level apps to model after. We made the app open source (github->Exartu) in hopes to change that, and we welcome critiques to it.
The unappealing part of Meteor is having to learn Mongo. Ok, this part is just me being too comfortable with SQL relational table databases, and being too lazy to take the time to learn the alternatives.
Don't get me wrong, these things are fantastic for MVP/prototyping but nothing that claims to be one size fits all comes without hidden debt.
I'm very happy with Flask because it complete gets out of the way, it's up to you to deal with pesistence, models. You choose your own sins type of approach.
*By using browser storage instead of hijackable session cookies, CSRF attacks are impossible.*
Cool, but it makes way harder to scale up without websockets support for load balancing, since it uses SockJS, which requires sticky sessions.Like what devices don't allow websockets? Android chrome, Mobile Safari and Desktop Chrome and Firefox do and that's like almost everyone right there.
Again, the point is: You can't claim you won't need cookies if you want to consider scaling up.
The days of natively developing apps in Java and Objective-C have an apparent end in sight.
I love Node.js and Javascript. I wish this was true, but I can't bring myself to believe it yet.
Maybe you won't reach the same quality on iOS and Android as you would with native apps, but for smaller teams this can be a huge time saver, especially in the early stages of a project.
So in a lot of cases it's not so much "web app" vs "native app", as "web app" vs "no app".
I'm just realizing that we may not be innovating as we think we'd like. Basically, we found a way to force the browser to act like native desktop apps but without the security and power of native apps. In the process, generating a great amount of technical barrier and debt. Businesses will still use a java swing desktop app if they paid millions for it in the 90s. We'll still work on desktop IDE's to code our stuff.
Another discussion here would be how "mobile" is going to replace desktop apps. This is simply not true. Lot of important work goes on with a mouse and keyboard behind a monitor. I just don't buy reinventing the wheel. Sure it works for activities centered around the mobile phone mainly communication applications and social apps but i don't see how it can cause disruption.
I have a feeling one of these days, we'll see a major correction in how we perceive our point in time as being the best possible state and we'll see more or less the return of old ideas, the true and tested technologies get more attention they truly deserve.
NodeJs is great,it's really,really powerfull and easy to use.I mean i did some crazy messaging/parrallel/realtime apps with that. At the same time, i'm not a big fan of javascript itself. It's not bad,it's just that I like more rigid,typesafe languages. I was a big fan of Actionscript 3 which is in my opinion some kind of compromise between dynamism and "statism".I'm glad i began programming in it by the way,or I would have never been able to learn java or C# afterwards.
Once the Apple fad ends, Objective-C will be useless. It's already useless for the enterprise.
...
<body>
</body>
</html>
What would a screen reader user hear? Is this site accessible? Does anyone really care?Do sites like this point to a future where more and more web sites (not web apps) are built with Javascript frameworks? Is this a good thing? And can these sites acommodate all users? (Assuming they want to.)
>Do sites like this point to a future where more and more web sites (not web apps) are built with Javascript frameworks?
The pendulum does seem to be swinging in that direction. But i've seen enough posts on HN about how client-side templating has gone too far and wrecked user experience, and about developers 'rediscovering' how robust simple html/css can be, to suspect that nothing is inevitable. Trends come and go and paradigms fall in and out of fashion.
Screen readers should be able to get the current state of the page, and not read from the 'source'.
I can see some advantages of using javascript e.g. less load for the server to render things, it just becomes a directory host.
As for your other comments its like everything else you have your target users and you need to weigh the costs/benefits of having your app work for everyone vs. not at all for some users. If you're building an online mockup editor screen readers have zero importance, on the other hand if you're building a blog, screen readers might be very important. I think meteor does one thing quite well and thats make it easy to build "realtime webapps" i.e. webapps that have lots of user interaction/clicks, etc. This is not something you would use to build news site with lots of long text documents.
Did anybody ever stop to ask the masses of developers what they thought about it? And can anybody quote me the actual facts and figures around the oft-touted "need" for "accessibility"?
Because I know it's supposed to be an important concern. But it isn't a concern, in fact, for anyone I know in the business.
Screen readers do support JavaScript. While server side rendering is one of the features I most want in Meteor, the whole "screen readers can't javascript" is just wrong.