Hacker News new | past | comments | ask | show | jobs | submit login
Thank You DHH (and others) (differential.io)
45 points by FooBarWidget on Nov 16, 2013 | hide | past | web | favorite | 42 comments

Meteor is so great that your blog post seems to load only 25% of the time on my 3G connection, freezing for no apparent reason on a useless "We work at Cintrifuse" page the rest of the time (without any indicator that it's loading anything - and leaving it untouched for 5min does not help).

Scaling is good, having your website actually work is IMO better.

> on a useless "We work at Cintrifuse" page the rest of the time

Looks like it's the header and footer joint together waiting for content to appear in between delivered via websockets.

Never tried Meteor but I don't get the point of using websockets for blog posts unless it's purely for learning. Does Meteor encourage such use of websockets? If yes, why? (Genuinely curious)

We are tracking realtime readers in the sidebar and plan to start doing inline commenting and passage favoriting.

I also think it is cool that I can fix typos realtime while people are reading.

Google appends a ?_escaped_fragment_= onto the url and the spiderable package serves up a copy of the article from phantomjs. See http://differential.io/blog/thank-you-dhh-and-others?_escape...

Fair enough, but why not render the content along with the page for the first time instead of showing nothing for a few seconds?

How does it work with search engines? Do you regenerate a static html version every x seconds?

The blank page loaded spectacularly fast for me. Not sure why it was submitted though.

What you are seeing is the lack of a loading screen while data is pulling down. We haven't done a ton of testing via 3g, but we will work on that more.

If you're on a mac you can download Network Link Conditioner from Apple to simulate a 3G connection (requires a free developer account). Any iPhone enabled for development will have this option in Settings, as well.

Meteor is great, in that it's a really interesting look at what the future of web app development could look like - we've got ubiquitous JS runtimes on servers and clients, always-available internet connections, that kind of thing, and we need to be looking and playing with other approaches. And I think Meteor's is interesting.

But it's not going to 'kill' Rails any more than Rails killed PHP. I've seen loads of frameworks and indeed developers pop up who have taken the great ideas that frameworks like Rails had, and incorporated them into PHP projects. No doubt we'll see the same over time as new frameworks and tools arise elsewhere. And ultimately what we want is a better, more diverse selection of tools which are competing with and learning from each other.

Would I build a production app in Meteor? Almost certainly not. I'll probably have a crack at a prototype sometime soon (last time I tried, it was too underdeveloped to use) and no doubt I'll learn a bit on the way. But Differential's site is not an encouraging example - it requires JS, feels pretty slow and broken in places, and offers nothing that couldn't be executed as well (or better!) using any other toolset or framework.

I didn't actually read the whole post, I just noticed right away that when I hit the page, it showed me a collapsed nothing with just the footer and I assumed it was broken, then the content appeared. This was a little weird for me, but I also immediately recognized it was because they are loading the page, then hitting an ajax call to load the page's actual content. After checking comments here, this is probably because the blog is running on meteor.

This is a trend that I sort of understand, but in another way entirely baffles me. While front-end apps are awesome, in this case the content could easily be compiled and served immediately with the page. This would make the load huge amounts faster, and a lot less confusing when every single user shows up and sees a header and collapsed footer every time they visit the page (no cacheing with this ajax method).

On the other hand, like some other people mentioned here, there are cool benefits to running js apps. A realtime post count is a nice tweak you couldn't have with an entirely static site... wait, or is it? No, you definitely could. Have the blog post content as static and then a snippet of js connects to your server's socket and displays the count as soon as it can.

I've seen a lot of people jump all in onto trends in building web apps when they make no sense, and this kind of bothers me. Blogs especially should be static, always. There is simply no reason to be hitting a server every time someone hits your blog, and especially no reason to be hitting an ajax call on page load, because this just makes the blog slow and puts additional unnecessary load on your server. (The number of sites running wordpress that could easily be static and would be much faster and less expensive that way baffles me - a problem begging for a solution.)

So I guess my conclusion is that while I am sure Meteor has a lot of value for real-time intensive apps, it is a ridiculous decision to use it for something like a blog. As web developers, we have a large toolset and the luxury to choose among hundreds of awesome, mostly free tools for any project we work on. Don't get stuck in the mindset where you have one tool that solves every problem (I saw a lot of people do this with rails too) - engineer your app to be the quickest and most efficient it can be : )

What are you finding is broken in places?

So I noticed a few things as I looked around:

- When I first hit the linked blog post, I saw a blank page for four or five seconds. Not so bad, because I know what's happening, but jarring.

- Then I see a footer for five or six more seconds, with no page content. Again, I know what's happening, but I can see that looking sketchy for people who aren't developers: https://www.dropbox.com/s/d1mezohgixlneeu/Screenshot%202013-... - and it's going to be worse on a slower connection.

- I see that same view on several different pages when I initially navigate to them.

- Hitting the home page occasionally freaks the browser out. I don't know what it's doing, but I get multiple animations of the main banner and some flickering etc.

I may have been a bit dismissive - sorry about that. I do get that "dogfooding" a tech stack as it were is pretty important. What Meteor's going to be good for though is highly-interactive, collaborative apps, and it'll be really nice to see some demos of that, rather than yet-another-could-be-static site.

No, I love the insight! Thanks for replying with all this, we will take a look at these things. We've built 15 production apps and we are still learning every day.

Try loading any Meteor-based site (such as the linked story, or http://www.meteor.com/ itself) with cookies disabled on Chrome or Firefox and watch them break.

(Meteor doesn't appear to trap exceptions when using localStorage/sessionStorage, and even something as simple as "if (window.sessionStorage) ..." may throw an exception.)

One thing I noticed: The live count of how many people are reading this post is cool. However, every time it updates, it makes the author's picture flash, which started to give me a headache.

curious what browser you're using?

I do too. Chrome 30 on Ubuntu. Can't/Couldn't figure out if it was intentional (to attract my attention to the user presence count) or a glitch.

Chrome 30 on OSX Lion

hmm - i don't see the author picture flash - i'm chrome 31 on osx mavericks but i don't see how that'd be very different :(

Fair enough, maybe it only affects a small number of people. Still, if there's an easy to spot solution (like if the photo and counter are in the same <div> or something) it'd definitely be worth checking out. Especially if you plan on using that feature in the future.

And for the record, I really dug that feature. I often wonder exactly how valuable HN exposure is, it was nice to see a real metric.

This really hits the nail on the head for me. I discovered meteor when I was just beginning to seriously code web applications, and regardless of the downsides it has, it was truly, truly fun. The ability to rapidly go from idea to implementation is extremely fast, ridiculously simple to pick up, and it's all in a simple to learn language, even for an absolute beginner.

Would i build my production app in meteor right now? For a prototype, yes. Would I transition from an established web application with a large userbase to meteor? Almost definitely no, at the current stage. But what we glorify here in this startup culture is to get an idea out and see if it works, and Meteor is absolutely amazing for exactly that. The simple deployment, the ease of use, and the freedom to build the structure as you choose (for better or for worse) truly opens many, many more doors than it closes at the early stage.

I'm no fanboy but I'm very excited to see where Meteor heads in the future and am extremely glad that it continues to gain traction and attention, be it positive or negative.

If you're intrigued by Meteor and real-time apps but are turned off by the need to live in the Meteor ecosystem and the magicness of it all, I highly recommend checking out Feathers[1]. Feathers is built on top of Express and Socket.IO so there is no magic, all Express middleware works, and you can use whatever client-side framework you prefer, it just gives you the real-time benefits for free without the commitment you have to make by switching to a big framework like Meteor. (I'm not affiliated with Feathers, just a fan).


Meteor.js is built on top of node, connect, and socket.io... Not really much magic here either, once you dig into it - just like any framework.

I really like coding in Meteor. When deciding instead of thinking as to whether I should use meteor I thought on why I shouldn't.

The main reason to not use it was scaling but It's evident the meteor guys are working on that for the 1.0 release. (See https://trello.com/board/meteor-roadmap/508721606e02bb9d5700...)

Hopefully they do this well but I feel from their work before they will. I've been using Meteor since it was sub v0.2 and its just improved each iteration.

First it was the license, then authentication, then it was routing, then its ability to play well with JQuery. Slowly all of the issues with it are disappearing.

One thing I like is in meteor code is isomorphic. And on the server I'm not in the callback hell I was having with node. So there are evented fibers that do all this stuff and the code remains clean! Best of both worlds.

Growing pains, that's all.

They've really done a lot of work. The jump from 0.6.4 to 0.6.5 was 775 commits. Wow. We're seeing concepts being fleshed out, they'll be refactored and strengthen in time. The team seems to be fully focused on 1.0.

Scalability is still a big concern, but it's only a problem you can be so lucky too have.

Meteor still needs to improve code structure, there's no common architectural pattern yet (just some lose guide lines). In my opinion, it would be a benefit. Meteor is still in its infancy and a developer is left to their own devices, rather then common sharable patterns. Rails does this well with the plethora of use-case strengthened API design, a benefit of it's maturity. Meteor will get there.

Yes, I remember rails going through this same "growing pains" of leaving a lot of stuff up to the developers. I look forward to the ride Meteor will provide and see where it gets.

Yeah, the next release will have OpsLog support for MongoDB and it will help tremendously with scaling if you are willing to figure out how to get OpsLog working for Mongo.

Heads up - On every blog post it seems to be showing the same figure for "x other readers are here" which is misleading.

Yeah, we implemented it naively in a few hours one night this week, we plan to go back and do a deeper sidebar listing our urls.

Just a heads up- your headshot flashes white every time a new reader loads or leaves your page and the XXX readers are here line updates. Its quite distracting now, since you're on the front page of HN and a lot of people are going to the article.

Thanks, I hadn't seen that, I will look into it. I know the new Meteor UI release that is forth coming actually solves the very issue of rerendering too much of the page when you update one thing.

Actually, what browser are you on? I am not seeing the flashes in chrome.

The future of the web isn't "everything in JavaScript" - it's everything in whatever damn language you like.

The JS runtime is nearly, or is now perhaps, perfectly capable of being what your own language "compiles" to - for instance, I love Ruby so I'm betting on Opal (execute REAL client-side Ruby). Others like JS variants such as CoffeeScript or TypeScript.

So...Rails isn't going to get killed - it's simply going to evolve to support rich real-time client + server apps written in Ruby, period. That's my take on it, anyway, and that's what I'm planning on.

I have a vague feeling of excitement about the future of JS development in general. Whether or not Meteor is going to be the bringer of that bright future is something I'm not so sure of.

On the topic of constructive criticism, differential.io could really do with ditching that "We work at Cintrifuse" interstitial before the blog post is displayed. In the spirit of being constructive, I will simply say that my experience as a reader would have been vastly better without it.

We are actually lacking a loading screen, so you are just seeing the header and footer mashing together while the content loads.

It's funny, my gut reaction to your explanation is one of technological conservatism. "This is a problem that shouldn't exist! Don't use JavaScript for that!", I want to exclaim.

But I remember thinking similar things years ago when Slashdot introduced a bunch of JavaScript enhancements on top of what had been a very spartan HTML-based comment UI. The technologically conservative point of view was wrong then, and I think it'd be equally wrong now.


My mind initially had trouble accepting the changes in how to think about data and reactivity, but I think it has been worth it in the end. Very much a "there is no spoon" type of moment.

Thanks for all the great conversation guys and gals! I didn't post this, but I am glad it made it to HN for sure!

If you are looking to get into Meteor, check out http://yauh.de/articles/376/best-learning-resources-for-mete... and be sure to join http://crater.io to keep up on the latest news.

What do you use for the counter showing how many current users there are? GA API?

It looks like they're using a publish function (Meteor) to send down the number of users reactively.

You are correct, we are tracking open DDP connections to the server inside the node.js backend meteor gives us.

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